1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* AMDGPUPostLegalizerCombinerImpl Combiner Match Table *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#ifdef GET_GICOMBINER_DEPS
10#include "llvm/ADT/SparseBitVector.h"
11namespace llvm {
12extern cl::OptionCategory GICombinerOptionCategory;
13} // end namespace llvm
14#endif // ifdef GET_GICOMBINER_DEPS
15
16#ifdef GET_GICOMBINER_TYPES
17struct AMDGPUPostLegalizerCombinerImplRuleConfig {
18 SparseBitVector<> DisabledRules;
19
20 bool isRuleEnabled(unsigned RuleID) const;
21 bool parseCommandLineOption();
22 bool setRuleEnabled(StringRef RuleIdentifier);
23 bool setRuleDisabled(StringRef RuleIdentifier);
24};
25
26static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
27 uint64_t I;
28 // getAtInteger(...) returns false on success
29 bool Parsed = !RuleIdentifier.getAsInteger(Radix: 0, Result&: I);
30 if (Parsed)
31 return I;
32
33#ifndef NDEBUG
34 switch (RuleIdentifier.size()) {
35 default: break;
36 case 7: // 1 string to match.
37 if (memcmp(RuleIdentifier.data()+0, "smulu64", 7) != 0)
38 break;
39 return 198; // "smulu64"
40 case 9: // 5 strings to match.
41 switch (RuleIdentifier[0]) {
42 default: break;
43 case 'c': // 1 string to match.
44 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
45 break;
46 return 8; // "copy_prop"
47 case 'm': // 3 strings to match.
48 switch (RuleIdentifier[1]) {
49 default: break;
50 case 'a': // 1 string to match.
51 if (memcmp(RuleIdentifier.data()+2, "tch_ors", 7) != 0)
52 break;
53 return 180; // "match_ors"
54 case 'u': // 2 strings to match.
55 if (memcmp(RuleIdentifier.data()+2, "lo_by_", 6) != 0)
56 break;
57 switch (RuleIdentifier[8]) {
58 default: break;
59 case '0': // 1 string to match.
60 return 130; // "mulo_by_0"
61 case '2': // 1 string to match.
62 return 129; // "mulo_by_2"
63 }
64 break;
65 }
66 break;
67 case 'n': // 1 string to match.
68 if (memcmp(RuleIdentifier.data()+1, "neg_zext", 8) != 0)
69 break;
70 return 187; // "nneg_zext"
71 }
72 break;
73 case 10: // 6 strings to match.
74 switch (RuleIdentifier[0]) {
75 default: break;
76 case 'i': // 1 string to match.
77 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
78 break;
79 return 74; // "i2p_to_p2i"
80 case 'm': // 2 strings to match.
81 switch (RuleIdentifier[1]) {
82 default: break;
83 case 'a': // 1 string to match.
84 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
85 break;
86 return 179; // "match_ands"
87 case 'u': // 1 string to match.
88 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
89 break;
90 return 9; // "mul_to_shl"
91 }
92 break;
93 case 'p': // 1 string to match.
94 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
95 break;
96 return 73; // "p2i_to_i2p"
97 case 's': // 1 string to match.
98 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
99 break;
100 return 185; // "sext_trunc"
101 case 'z': // 1 string to match.
102 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
103 break;
104 return 186; // "zext_trunc"
105 }
106 break;
107 case 11: // 5 strings to match.
108 switch (RuleIdentifier[0]) {
109 default: break;
110 case 'a': // 1 string to match.
111 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
112 break;
113 return 79; // "add_sub_reg"
114 case 'm': // 1 string to match.
115 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
116 break;
117 return 184; // "match_addos"
118 case 's': // 1 string to match.
119 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
120 break;
121 return 173; // "sub_add_reg"
122 case 't': // 1 string to match.
123 if (memcmp(RuleIdentifier.data()+1, "runc_shift", 10) != 0)
124 break;
125 return 119; // "trunc_shift"
126 case 'u': // 1 string to match.
127 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
128 break;
129 return 114; // "unmerge_cst"
130 }
131 break;
132 case 12: // 10 strings to match.
133 switch (RuleIdentifier[0]) {
134 default: break;
135 case 'A': // 1 string to match.
136 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
137 break;
138 return 2; // "APlusBMinusB"
139 case 'B': // 1 string to match.
140 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
141 break;
142 return 3; // "BMinusAPlusA"
143 case 'a': // 1 string to match.
144 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
145 break;
146 return 131; // "adde_to_addo"
147 case 'e': // 1 string to match.
148 if (memcmp(RuleIdentifier.data()+1, "xt_ext_fold", 11) != 0)
149 break;
150 return 110; // "ext_ext_fold"
151 case 'f': // 1 string to match.
152 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
153 break;
154 return 176; // "fsub_to_fneg"
155 case 'm': // 1 string to match.
156 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
157 break;
158 return 161; // "mulh_to_lshr"
159 case 'n': // 1 string to match.
160 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
161 break;
162 return 111; // "not_cmp_fold"
163 case 'r': // 1 string to match.
164 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
165 break;
166 return 104; // "redundant_or"
167 case 's': // 1 string to match.
168 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
169 break;
170 return 159; // "sdiv_by_pow2"
171 case 'u': // 1 string to match.
172 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
173 break;
174 return 160; // "udiv_by_pow2"
175 }
176 break;
177 case 13: // 14 strings to match.
178 switch (RuleIdentifier[0]) {
179 default: break;
180 case 'a': // 1 string to match.
181 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
182 break;
183 return 44; // "add_of_vscale"
184 case 'c': // 1 string to match.
185 if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
186 break;
187 return 147; // "commute_shift"
188 case 'f': // 1 string to match.
189 if (memcmp(RuleIdentifier.data()+1, "oldable_fneg", 12) != 0)
190 break;
191 return 194; // "foldable_fneg"
192 case 'l': // 1 string to match.
193 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
194 break;
195 return 54; // "load_and_mask"
196 case 'm': // 3 strings to match.
197 switch (RuleIdentifier[1]) {
198 default: break;
199 case 'a': // 1 string to match.
200 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
201 break;
202 return 101; // "match_selects"
203 case 'e': // 1 string to match.
204 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
205 break;
206 return 117; // "merge_unmerge"
207 case 'u': // 1 string to match.
208 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
209 break;
210 return 45; // "mul_of_vscale"
211 }
212 break;
213 case 'r': // 1 string to match.
214 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
215 break;
216 return 102; // "redundant_and"
217 case 's': // 3 strings to match.
218 switch (RuleIdentifier[1]) {
219 default: break;
220 case 'd': // 1 string to match.
221 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
222 break;
223 return 158; // "sdiv_by_const"
224 case 'h': // 1 string to match.
225 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
226 break;
227 return 46; // "shl_of_vscale"
228 case 'u': // 1 string to match.
229 if (memcmp(RuleIdentifier.data()+2, "b_of_vscale", 11) != 0)
230 break;
231 return 47; // "sub_of_vscale"
232 }
233 break;
234 case 'u': // 3 strings to match.
235 switch (RuleIdentifier[1]) {
236 default: break;
237 case 'd': // 1 string to match.
238 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
239 break;
240 return 157; // "udiv_by_const"
241 case 'n': // 2 strings to match.
242 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
243 break;
244 switch (RuleIdentifier[8]) {
245 default: break;
246 case 'm': // 1 string to match.
247 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
248 break;
249 return 113; // "unmerge_merge"
250 case 'u': // 1 string to match.
251 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
252 break;
253 return 66; // "unmerge_undef"
254 }
255 break;
256 }
257 break;
258 }
259 break;
260 case 14: // 10 strings to match.
261 switch (RuleIdentifier[0]) {
262 default: break;
263 case 'b': // 2 strings to match.
264 if (RuleIdentifier[1] != 'i')
265 break;
266 switch (RuleIdentifier[2]) {
267 default: break;
268 case 'n': // 1 string to match.
269 if (memcmp(RuleIdentifier.data()+3, "op_same_val", 11) != 0)
270 break;
271 return 70; // "binop_same_val"
272 case 't': // 1 string to match.
273 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
274 break;
275 return 145; // "bitreverse_shl"
276 }
277 break;
278 case 'c': // 1 string to match.
279 if (memcmp(RuleIdentifier.data()+1, "vt_f32_ubyteN", 13) != 0)
280 break;
281 return 192; // "cvt_f32_ubyteN"
282 case 'f': // 2 strings to match.
283 switch (RuleIdentifier[1]) {
284 default: break;
285 case 'a': // 1 string to match.
286 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
287 break;
288 return 156; // "fabs_fneg_fold"
289 case 'n': // 1 string to match.
290 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
291 break;
292 return 76; // "fneg_fneg_fold"
293 }
294 break;
295 case 'm': // 1 string to match.
296 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
297 break;
298 return 11; // "mul_by_neg_one"
299 case 'r': // 1 string to match.
300 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
301 break;
302 return 91; // "reassoc_ptradd"
303 case 's': // 1 string to match.
304 if (memcmp(RuleIdentifier.data()+1, "hifts_too_big", 13) != 0)
305 break;
306 return 90; // "shifts_too_big"
307 case 't': // 1 string to match.
308 if (memcmp(RuleIdentifier.data()+1, "runc_ext_fold", 13) != 0)
309 break;
310 return 118; // "trunc_ext_fold"
311 case 'u': // 1 string to match.
312 if (memcmp(RuleIdentifier.data()+1, "char_to_float", 13) != 0)
313 break;
314 return 191; // "uchar_to_float"
315 }
316 break;
317 case 15: // 10 strings to match.
318 switch (RuleIdentifier[0]) {
319 default: break;
320 case 'A': // 1 string to match.
321 if (memcmp(RuleIdentifier.data()+1, "PlusZeroMinusB", 14) != 0)
322 break;
323 return 1; // "APlusZeroMinusB"
324 case 'Z': // 1 string to match.
325 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
326 break;
327 return 0; // "ZeroMinusAPlusB"
328 case 'b': // 1 string to match.
329 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
330 break;
331 return 146; // "bitreverse_lshr"
332 case 'e': // 1 string to match.
333 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
334 break;
335 return 53; // "extending_loads"
336 case 'i': // 1 string to match.
337 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
338 break;
339 return 12; // "idempotent_prop"
340 case 'l': // 1 string to match.
341 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
342 break;
343 return 138; // "load_or_combine"
344 case 'o': // 1 string to match.
345 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
346 break;
347 return 128; // "overlapping_and"
348 case 'r': // 1 string to match.
349 if (memcmp(RuleIdentifier.data()+1, "cp_sqrt_to_rsq", 14) != 0)
350 break;
351 return 195; // "rcp_sqrt_to_rsq"
352 case 's': // 1 string to match.
353 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
354 break;
355 return 68; // "select_same_val"
356 case 'z': // 1 string to match.
357 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
358 break;
359 return 106; // "zext_trunc_fold"
360 }
361 break;
362 case 16: // 3 strings to match.
363 switch (RuleIdentifier[0]) {
364 default: break;
365 case 's': // 2 strings to match.
366 if (memcmp(RuleIdentifier.data()+1, "elect_", 6) != 0)
367 break;
368 switch (RuleIdentifier[7]) {
369 default: break;
370 case 't': // 1 string to match.
371 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
372 break;
373 return 174; // "select_to_minmax"
374 case 'u': // 1 string to match.
375 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
376 break;
377 return 98; // "select_undef_cmp"
378 }
379 break;
380 case 'u': // 1 string to match.
381 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
382 break;
383 return 56; // "undef_to_fp_zero"
384 }
385 break;
386 case 17: // 12 strings to match.
387 switch (RuleIdentifier[0]) {
388 default: break;
389 case 'A': // 2 strings to match.
390 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
391 break;
392 switch (RuleIdentifier[11]) {
393 default: break;
394 case 'A': // 1 string to match.
395 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
396 break;
397 return 6; // "APlusBMinusAplusC"
398 case 'C': // 1 string to match.
399 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
400 break;
401 return 7; // "APlusBMinusCPlusA"
402 }
403 break;
404 case 'a': // 2 strings to match.
405 switch (RuleIdentifier[1]) {
406 default: break;
407 case 'd': // 1 string to match.
408 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
409 break;
410 return 10; // "add_p2i_to_ptradd"
411 case 'n': // 1 string to match.
412 if (memcmp(RuleIdentifier.data()+2, "yext_trunc_fold", 15) != 0)
413 break;
414 return 75; // "anyext_trunc_fold"
415 }
416 break;
417 case 'c': // 1 string to match.
418 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fma", 16) != 0)
419 break;
420 return 154; // "constant_fold_fma"
421 case 'd': // 1 string to match.
422 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
423 break;
424 return 139; // "div_rem_to_divrem"
425 case 'e': // 1 string to match.
426 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
427 break;
428 return 65; // "erase_undef_store"
429 case 'p': // 1 string to match.
430 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
431 break;
432 return 135; // "ptr_add_with_zero"
433 case 's': // 2 strings to match.
434 switch (RuleIdentifier[1]) {
435 default: break;
436 case 'e': // 1 string to match.
437 if (memcmp(RuleIdentifier.data()+2, "lect_to_iminmax", 15) != 0)
438 break;
439 return 100; // "select_to_iminmax"
440 case 'h': // 1 string to match.
441 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
442 break;
443 return 136; // "shift_immed_chain"
444 }
445 break;
446 case 'u': // 2 strings to match.
447 switch (RuleIdentifier[1]) {
448 default: break;
449 case 'n': // 1 string to match.
450 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
451 break;
452 return 57; // "undef_to_int_zero"
453 case 'r': // 1 string to match.
454 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
455 break;
456 return 105; // "urem_pow2_to_mask"
457 }
458 break;
459 }
460 break;
461 case 18: // 9 strings to match.
462 switch (RuleIdentifier[0]) {
463 default: break;
464 case 'A': // 2 strings to match.
465 if (memcmp(RuleIdentifier.data()+1, "MinusBPlus", 10) != 0)
466 break;
467 switch (RuleIdentifier[11]) {
468 default: break;
469 case 'B': // 1 string to match.
470 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
471 break;
472 return 5; // "AMinusBPlusBMinusC"
473 case 'C': // 1 string to match.
474 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
475 break;
476 return 4; // "AMinusBPlusCMinusA"
477 }
478 break;
479 case 'b': // 1 string to match.
480 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
481 break;
482 return 71; // "binop_left_to_zero"
483 case 'c': // 3 strings to match.
484 if (RuleIdentifier[1] != 'o')
485 break;
486 switch (RuleIdentifier[2]) {
487 default: break;
488 case 'm': // 1 string to match.
489 if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
490 break;
491 return 132; // "combine_minmax_nan"
492 case 'n': // 2 strings to match.
493 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
494 break;
495 switch (RuleIdentifier[15]) {
496 default: break;
497 case 'a': // 1 string to match.
498 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
499 break;
500 return 121; // "constant_fold_fabs"
501 case 'n': // 1 string to match.
502 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
503 break;
504 return 120; // "constant_fold_fneg"
505 }
506 break;
507 }
508 break;
509 case 'e': // 1 string to match.
510 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
511 break;
512 return 133; // "expand_const_fpowi"
513 case 'f': // 1 string to match.
514 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
515 break;
516 return 84; // "fptrunc_fpext_fold"
517 case 's': // 1 string to match.
518 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_of_load", 17) != 0)
519 break;
520 return 95; // "sext_inreg_of_load"
521 }
522 break;
523 case 19: // 12 strings to match.
524 switch (RuleIdentifier[0]) {
525 default: break;
526 case 'b': // 1 string to match.
527 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
528 break;
529 return 72; // "binop_right_to_zero"
530 case 'c': // 4 strings to match.
531 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
532 break;
533 switch (RuleIdentifier[5]) {
534 default: break;
535 case '_': // 1 string to match.
536 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
537 break;
538 return 127; // "const_ptradd_to_i2p"
539 case 'a': // 3 strings to match.
540 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
541 break;
542 switch (RuleIdentifier[14]) {
543 default: break;
544 case 'b': // 1 string to match.
545 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
546 break;
547 return 152; // "constant_fold_binop"
548 case 'f': // 2 strings to match.
549 switch (RuleIdentifier[15]) {
550 default: break;
551 case 'l': // 1 string to match.
552 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
553 break;
554 return 123; // "constant_fold_flog2"
555 case 's': // 1 string to match.
556 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
557 break;
558 return 122; // "constant_fold_fsqrt"
559 }
560 break;
561 }
562 break;
563 }
564 break;
565 case 'e': // 1 string to match.
566 if (memcmp(RuleIdentifier.data()+1, "xtend_through_phis", 18) != 0)
567 break;
568 return 87; // "extend_through_phis"
569 case 'p': // 1 string to match.
570 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
571 break;
572 return 93; // "ptr_add_immed_chain"
573 case 'r': // 2 strings to match.
574 switch (RuleIdentifier[1]) {
575 default: break;
576 case 'e': // 1 string to match.
577 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
578 break;
579 return 92; // "reassoc_comm_binops"
580 case 'i': // 1 string to match.
581 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
582 break;
583 return 69; // "right_identity_zero"
584 }
585 break;
586 case 's': // 2 strings to match.
587 switch (RuleIdentifier[1]) {
588 default: break;
589 case 'e': // 1 string to match.
590 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
591 break;
592 return 99; // "select_constant_cmp"
593 case 'i': // 1 string to match.
594 if (memcmp(RuleIdentifier.data()+2, "mplify_add_to_sub", 17) != 0)
595 break;
596 return 88; // "simplify_add_to_sub"
597 }
598 break;
599 case 'u': // 1 string to match.
600 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
601 break;
602 return 61; // "unary_undef_to_zero"
603 }
604 break;
605 case 20: // 6 strings to match.
606 switch (RuleIdentifier[0]) {
607 default: break;
608 case 'a': // 1 string to match.
609 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
610 break;
611 return 163; // "and_or_disjoint_mask"
612 case 'b': // 1 string to match.
613 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
614 break;
615 return 83; // "bitcast_bitcast_fold"
616 case 'r': // 3 strings to match.
617 if (RuleIdentifier[1] != 'e')
618 break;
619 switch (RuleIdentifier[2]) {
620 default: break;
621 case 'd': // 2 strings to match.
622 if (RuleIdentifier[3] != 'u')
623 break;
624 switch (RuleIdentifier[4]) {
625 default: break;
626 case 'c': // 1 string to match.
627 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
628 break;
629 return 96; // "reduce_shl_of_extend"
630 case 'n': // 1 string to match.
631 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
632 break;
633 return 103; // "redundant_sext_inreg"
634 }
635 break;
636 case 'm': // 1 string to match.
637 if (memcmp(RuleIdentifier.data()+3, "ove_fcanonicalize", 17) != 0)
638 break;
639 return 193; // "remove_fcanonicalize"
640 }
641 break;
642 case 'u': // 1 string to match.
643 if (memcmp(RuleIdentifier.data()+1, "nmerge_zext_to_zext", 19) != 0)
644 break;
645 return 116; // "unmerge_zext_to_zext"
646 }
647 break;
648 case 21: // 9 strings to match.
649 switch (RuleIdentifier[0]) {
650 default: break;
651 case 'c': // 3 strings to match.
652 if (RuleIdentifier[1] != 'o')
653 break;
654 switch (RuleIdentifier[2]) {
655 default: break;
656 case 'm': // 1 string to match.
657 if (memcmp(RuleIdentifier.data()+3, "bine_concat_vector", 18) != 0)
658 break;
659 return 181; // "combine_concat_vector"
660 case 'n': // 2 strings to match.
661 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
662 break;
663 switch (RuleIdentifier[14]) {
664 default: break;
665 case 'c': // 1 string to match.
666 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
667 break;
668 return 155; // "constant_fold_cast_op"
669 case 'f': // 1 string to match.
670 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
671 break;
672 return 124; // "constant_fold_fptrunc"
673 }
674 break;
675 }
676 break;
677 case 'e': // 1 string to match.
678 if (memcmp(RuleIdentifier.data()+1, "xpand_promoted_fmed3", 20) != 0)
679 break;
680 return 190; // "expand_promoted_fmed3"
681 case 'i': // 1 string to match.
682 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
683 break;
684 return 18; // "insert_vector_elt_oob"
685 case 'r': // 1 string to match.
686 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
687 break;
688 return 78; // "right_identity_one_fp"
689 case 's': // 1 string to match.
690 if (memcmp(RuleIdentifier.data()+1, "ign_extension_in_reg", 20) != 0)
691 break;
692 return 197; // "sign_extension_in_reg"
693 case 'u': // 2 strings to match.
694 if (RuleIdentifier[1] != 'n')
695 break;
696 switch (RuleIdentifier[2]) {
697 default: break;
698 case 'd': // 1 string to match.
699 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
700 break;
701 return 58; // "undef_to_negative_one"
702 case 'm': // 1 string to match.
703 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
704 break;
705 return 115; // "unmerge_dead_to_trunc"
706 }
707 break;
708 }
709 break;
710 case 22: // 12 strings to match.
711 switch (RuleIdentifier[0]) {
712 default: break;
713 case 'c': // 2 strings to match.
714 if (RuleIdentifier[1] != 'o')
715 break;
716 switch (RuleIdentifier[2]) {
717 default: break;
718 case 'm': // 1 string to match.
719 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
720 break;
721 return 188; // "combine_shuffle_concat"
722 case 'n': // 1 string to match.
723 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
724 break;
725 return 153; // "constant_fold_fp_binop"
726 }
727 break;
728 case 'f': // 4 strings to match.
729 switch (RuleIdentifier[1]) {
730 default: break;
731 case 'o': // 1 string to match.
732 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
733 break;
734 return 172; // "fold_binop_into_select"
735 case 'u': // 3 strings to match.
736 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
737 break;
738 switch (RuleIdentifier[13]) {
739 default: break;
740 case 'l': // 1 string to match.
741 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
742 break;
743 return 143; // "funnel_shift_left_zero"
744 case 'o': // 1 string to match.
745 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
746 break;
747 return 144; // "funnel_shift_overshift"
748 case 't': // 1 string to match.
749 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
750 break;
751 return 141; // "funnel_shift_to_rotate"
752 }
753 break;
754 }
755 break;
756 case 'i': // 1 string to match.
757 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
758 break;
759 return 108; // "icmp_to_lhs_known_bits"
760 case 'p': // 1 string to match.
761 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
762 break;
763 return 62; // "propagate_undef_any_op"
764 case 'r': // 2 strings to match.
765 switch (RuleIdentifier[1]) {
766 default: break;
767 case 'e': // 1 string to match.
768 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
769 break;
770 return 162; // "redundant_neg_operands"
771 case 'i': // 1 string to match.
772 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
773 break;
774 return 77; // "right_identity_one_int"
775 }
776 break;
777 case 's': // 1 string to match.
778 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
779 break;
780 return 94; // "shl_ashr_to_sext_inreg"
781 case 't': // 1 string to match.
782 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
783 break;
784 return 81; // "trunc_buildvector_fold"
785 }
786 break;
787 case 23: // 5 strings to match.
788 switch (RuleIdentifier[0]) {
789 default: break;
790 case 'f': // 2 strings to match.
791 switch (RuleIdentifier[1]) {
792 default: break;
793 case 'd': // 1 string to match.
794 if (memcmp(RuleIdentifier.data()+2, "iv_by_sqrt_to_rsq_f16", 21) != 0)
795 break;
796 return 196; // "fdiv_by_sqrt_to_rsq_f16"
797 case 'u': // 1 string to match.
798 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_right_zero", 21) != 0)
799 break;
800 return 142; // "funnel_shift_right_zero"
801 }
802 break;
803 case 'i': // 2 strings to match.
804 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
805 break;
806 switch (RuleIdentifier[21]) {
807 default: break;
808 case 's': // 1 string to match.
809 if (RuleIdentifier[22] != 'i')
810 break;
811 return 125; // "itof_const_zero_fold_si"
812 case 'u': // 1 string to match.
813 if (RuleIdentifier[22] != 'i')
814 break;
815 return 126; // "itof_const_zero_fold_ui"
816 }
817 break;
818 case 'p': // 1 string to match.
819 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
820 break;
821 return 63; // "propagate_undef_all_ops"
822 }
823 break;
824 case 24: // 5 strings to match.
825 switch (RuleIdentifier[0]) {
826 default: break;
827 case 'b': // 1 string to match.
828 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
829 break;
830 return 59; // "binop_left_undef_to_zero"
831 case 'm': // 1 string to match.
832 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
833 break;
834 return 17; // "match_extract_of_element"
835 case 'n': // 1 string to match.
836 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
837 break;
838 return 97; // "narrow_binop_feeding_and"
839 case 's': // 1 string to match.
840 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_to_zext_inreg", 23) != 0)
841 break;
842 return 109; // "sext_inreg_to_zext_inreg"
843 case 'x': // 1 string to match.
844 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
845 break;
846 return 134; // "xor_of_and_with_same_reg"
847 }
848 break;
849 case 25: // 5 strings to match.
850 switch (RuleIdentifier[0]) {
851 default: break;
852 case 'b': // 3 strings to match.
853 switch (RuleIdentifier[1]) {
854 default: break;
855 case 'i': // 2 strings to match.
856 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
857 break;
858 switch (RuleIdentifier[22]) {
859 default: break;
860 case 'a': // 1 string to match.
861 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
862 break;
863 return 149; // "bitfield_extract_from_and"
864 case 's': // 1 string to match.
865 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
866 break;
867 return 150; // "bitfield_extract_from_shr"
868 }
869 break;
870 case 'u': // 1 string to match.
871 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
872 break;
873 return 80; // "buildvector_identity_fold"
874 }
875 break;
876 case 'e': // 1 string to match.
877 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
878 break;
879 return 51; // "extract_vec_elt_build_vec"
880 case 'r': // 1 string to match.
881 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
882 break;
883 return 86; // "right_identity_neg_one_fp"
884 }
885 break;
886 case 26: // 4 strings to match.
887 switch (RuleIdentifier[0]) {
888 default: break;
889 case 'b': // 1 string to match.
890 if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
891 break;
892 return 60; // "binop_right_undef_to_undef"
893 case 'c': // 1 string to match.
894 if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs", 25) != 0)
895 break;
896 return 178; // "commute_fp_constant_to_rhs"
897 case 'f': // 1 string to match.
898 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
899 break;
900 return 140; // "funnel_shift_from_or_shift"
901 case 'r': // 1 string to match.
902 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
903 break;
904 return 85; // "right_identity_neg_zero_fp"
905 }
906 break;
907 case 27: // 4 strings to match.
908 switch (RuleIdentifier[0]) {
909 default: break;
910 case 'c': // 1 string to match.
911 if (memcmp(RuleIdentifier.data()+1, "ommute_int_constant_to_rhs", 26) != 0)
912 break;
913 return 177; // "commute_int_constant_to_rhs"
914 case 'd': // 1 string to match.
915 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
916 break;
917 return 183; // "double_icmp_zero_or_combine"
918 case 'r': // 1 string to match.
919 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
920 break;
921 return 175; // "redundant_binop_in_equality"
922 case 't': // 1 string to match.
923 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
924 break;
925 return 82; // "trunc_lshr_buildvector_fold"
926 }
927 break;
928 case 28: // 4 strings to match.
929 switch (RuleIdentifier[0]) {
930 default: break;
931 case 'd': // 1 string to match.
932 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
933 break;
934 return 182; // "double_icmp_zero_and_combine"
935 case 'o': // 1 string to match.
936 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
937 break;
938 return 112; // "opt_brcond_by_inverting_cond"
939 case 'p': // 1 string to match.
940 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
941 break;
942 return 64; // "propagate_undef_shuffle_mask"
943 case 's': // 1 string to match.
944 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
945 break;
946 return 137; // "shift_of_shifted_logic_chain"
947 }
948 break;
949 case 29: // 3 strings to match.
950 switch (RuleIdentifier[0]) {
951 default: break;
952 case 'b': // 1 string to match.
953 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
954 break;
955 return 151; // "bitfield_extract_from_shr_and"
956 case 'c': // 1 string to match.
957 if (memcmp(RuleIdentifier.data()+1, "ombine_extracted_vector_load", 28) != 0)
958 break;
959 return 55; // "combine_extracted_vector_load"
960 case 'i': // 1 string to match.
961 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
962 break;
963 return 107; // "icmp_to_true_false_known_bits"
964 }
965 break;
966 case 30: // 1 string to match.
967 if (memcmp(RuleIdentifier.data()+0, "freeze_of_non_undef_non_poison", 30) != 0)
968 break;
969 return 48; // "freeze_of_non_undef_non_poison"
970 case 31: // 3 strings to match.
971 switch (RuleIdentifier[0]) {
972 default: break;
973 case 'f': // 1 string to match.
974 if (memcmp(RuleIdentifier.data()+1, "cmp_select_to_fmin_fmax_legacy", 30) != 0)
975 break;
976 return 189; // "fcmp_select_to_fmin_fmax_legacy"
977 case 'i': // 2 strings to match.
978 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_element_", 21) != 0)
979 break;
980 switch (RuleIdentifier[22]) {
981 default: break;
982 case 'e': // 1 string to match.
983 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
984 break;
985 return 16; // "insert_vector_element_elt_undef"
986 case 'i': // 1 string to match.
987 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
988 break;
989 return 15; // "insert_vector_element_idx_undef"
990 }
991 break;
992 }
993 break;
994 case 32: // 4 strings to match.
995 switch (RuleIdentifier[0]) {
996 default: break;
997 case 'b': // 1 string to match.
998 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
999 break;
1000 return 148; // "bitfield_extract_from_sext_inreg"
1001 case 'c': // 2 strings to match.
1002 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1003 break;
1004 switch (RuleIdentifier[9]) {
1005 default: break;
1006 case 'a': // 1 string to match.
1007 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1008 break;
1009 return 164; // "combine_fadd_fmul_to_fmad_or_fma"
1010 case 's': // 1 string to match.
1011 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1012 break;
1013 return 168; // "combine_fsub_fmul_to_fmad_or_fma"
1014 }
1015 break;
1016 case 'e': // 1 string to match.
1017 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1018 break;
1019 return 19; // "extract_vector_element_not_const"
1020 }
1021 break;
1022 case 34: // 1 string to match.
1023 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1024 break;
1025 return 52; // "extract_all_elts_from_build_vector"
1026 case 36: // 11 strings to match.
1027 switch (RuleIdentifier[0]) {
1028 default: break;
1029 case 'c': // 2 strings to match.
1030 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1031 break;
1032 switch (RuleIdentifier[8]) {
1033 default: break;
1034 case 'f': // 1 string to match.
1035 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1036 break;
1037 return 166; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1038 case 'i': // 1 string to match.
1039 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1040 break;
1041 return 50; // "combine_insert_vec_elts_build_vector"
1042 }
1043 break;
1044 case 'e': // 7 strings to match.
1045 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector", 34) != 0)
1046 break;
1047 switch (RuleIdentifier[35]) {
1048 default: break;
1049 case '2': // 1 string to match.
1050 return 21; // "extract_vector_element_build_vector2"
1051 case '3': // 1 string to match.
1052 return 22; // "extract_vector_element_build_vector3"
1053 case '4': // 1 string to match.
1054 return 23; // "extract_vector_element_build_vector4"
1055 case '5': // 1 string to match.
1056 return 24; // "extract_vector_element_build_vector5"
1057 case '7': // 1 string to match.
1058 return 25; // "extract_vector_element_build_vector7"
1059 case '8': // 1 string to match.
1060 return 26; // "extract_vector_element_build_vector8"
1061 case '9': // 1 string to match.
1062 return 27; // "extract_vector_element_build_vector9"
1063 }
1064 break;
1065 case 'i': // 1 string to match.
1066 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1067 break;
1068 return 67; // "insert_extract_vec_elt_out_of_bounds"
1069 case 'm': // 1 string to match.
1070 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1071 break;
1072 return 14; // "match_extract_of_element_undef_index"
1073 }
1074 break;
1075 case 37: // 11 strings to match.
1076 switch (RuleIdentifier[0]) {
1077 default: break;
1078 case 'c': // 1 string to match.
1079 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1080 break;
1081 return 169; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1082 case 'e': // 8 strings to match.
1083 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_", 22) != 0)
1084 break;
1085 switch (RuleIdentifier[23]) {
1086 default: break;
1087 case 'b': // 7 strings to match.
1088 if (memcmp(RuleIdentifier.data()+24, "uild_vector1", 12) != 0)
1089 break;
1090 switch (RuleIdentifier[36]) {
1091 default: break;
1092 case '0': // 1 string to match.
1093 return 28; // "extract_vector_element_build_vector10"
1094 case '1': // 1 string to match.
1095 return 29; // "extract_vector_element_build_vector11"
1096 case '2': // 1 string to match.
1097 return 30; // "extract_vector_element_build_vector12"
1098 case '3': // 1 string to match.
1099 return 31; // "extract_vector_element_build_vector13"
1100 case '4': // 1 string to match.
1101 return 32; // "extract_vector_element_build_vector14"
1102 case '5': // 1 string to match.
1103 return 33; // "extract_vector_element_build_vector15"
1104 case '6': // 1 string to match.
1105 return 34; // "extract_vector_element_build_vector16"
1106 }
1107 break;
1108 case 's': // 1 string to match.
1109 if (memcmp(RuleIdentifier.data()+24, "huffle_vector", 13) != 0)
1110 break;
1111 return 42; // "extract_vector_element_shuffle_vector"
1112 }
1113 break;
1114 case 'h': // 1 string to match.
1115 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1116 break;
1117 return 89; // "hoist_logic_op_with_same_opcode_hands"
1118 case 'm': // 1 string to match.
1119 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1120 break;
1121 return 13; // "match_extract_of_element_undef_vector"
1122 }
1123 break;
1124 case 38: // 2 strings to match.
1125 if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
1126 break;
1127 switch (RuleIdentifier[9]) {
1128 default: break;
1129 case 'a': // 1 string to match.
1130 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1131 break;
1132 return 165; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1133 case 's': // 1 string to match.
1134 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1135 break;
1136 return 170; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1137 }
1138 break;
1139 case 40: // 1 string to match.
1140 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1141 break;
1142 return 20; // "extract_vector_element_different_indices"
1143 case 42: // 8 strings to match.
1144 switch (RuleIdentifier[0]) {
1145 default: break;
1146 case 'c': // 1 string to match.
1147 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1148 break;
1149 return 167; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1150 case 'e': // 7 strings to match.
1151 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1152 break;
1153 switch (RuleIdentifier[41]) {
1154 default: break;
1155 case '2': // 1 string to match.
1156 return 35; // "extract_vector_element_build_vector_trunc2"
1157 case '3': // 1 string to match.
1158 return 36; // "extract_vector_element_build_vector_trunc3"
1159 case '4': // 1 string to match.
1160 return 37; // "extract_vector_element_build_vector_trunc4"
1161 case '5': // 1 string to match.
1162 return 38; // "extract_vector_element_build_vector_trunc5"
1163 case '6': // 1 string to match.
1164 return 39; // "extract_vector_element_build_vector_trunc6"
1165 case '7': // 1 string to match.
1166 return 40; // "extract_vector_element_build_vector_trunc7"
1167 case '8': // 1 string to match.
1168 return 41; // "extract_vector_element_build_vector_trunc8"
1169 }
1170 break;
1171 }
1172 break;
1173 case 43: // 1 string to match.
1174 if (memcmp(RuleIdentifier.data()+0, "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 43) != 0)
1175 break;
1176 return 171; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1177 case 44: // 1 string to match.
1178 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1179 break;
1180 return 43; // "insert_vector_element_extract_vector_element"
1181 case 46: // 1 string to match.
1182 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1183 break;
1184 return 49; // "push_freeze_to_prevent_poison_from_propagating"
1185 }
1186#endif // ifndef NDEBUG
1187
1188 return std::nullopt;
1189}
1190static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1191 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split(Separator: '-');
1192 if (!RangePair.second.empty()) {
1193 const auto First = getRuleIdxForIdentifier(RuleIdentifier: RangePair.first);
1194 const auto Last = getRuleIdxForIdentifier(RuleIdentifier: RangePair.second);
1195 if (!First || !Last)
1196 return std::nullopt;
1197 if (First >= Last)
1198 report_fatal_error(reason: "Beginning of range should be before end of range");
1199 return {{*First, *Last + 1}};
1200 }
1201 if (RangePair.first == "*") {
1202 return {{0, 199}};
1203 }
1204 const auto I = getRuleIdxForIdentifier(RuleIdentifier: RangePair.first);
1205 if (!I)
1206 return std::nullopt;
1207 return {{*I, *I + 1}};
1208}
1209
1210bool AMDGPUPostLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1211 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1212 if (!MaybeRange)
1213 return false;
1214 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1215 DisabledRules.reset(Idx: I);
1216 return true;
1217}
1218
1219bool AMDGPUPostLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1220 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1221 if (!MaybeRange)
1222 return false;
1223 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1224 DisabledRules.set(I);
1225 return true;
1226}
1227
1228static std::vector<std::string> AMDGPUPostLegalizerCombinerOption;
1229static cl::list<std::string> AMDGPUPostLegalizerCombinerDisableOption(
1230 "amdgpupostlegalizercombiner-disable-rule",
1231 cl::desc("Disable one or more combiner rules temporarily in the AMDGPUPostLegalizerCombiner pass"),
1232 cl::CommaSeparated,
1233 cl::Hidden,
1234 cl::cat(GICombinerOptionCategory),
1235 cl::callback(CB: [](const std::string &Str) {
1236 AMDGPUPostLegalizerCombinerOption.push_back(x: Str);
1237 }));
1238static cl::list<std::string> AMDGPUPostLegalizerCombinerOnlyEnableOption(
1239 "amdgpupostlegalizercombiner-only-enable-rule",
1240 cl::desc("Disable all rules in the AMDGPUPostLegalizerCombiner pass then re-enable the specified ones"),
1241 cl::Hidden,
1242 cl::cat(GICombinerOptionCategory),
1243 cl::callback(CB: [](const std::string &CommaSeparatedArg) {
1244 StringRef Str = CommaSeparatedArg;
1245 AMDGPUPostLegalizerCombinerOption.push_back(x: "*");
1246 do {
1247 auto X = Str.split(Separator: ",");
1248 AMDGPUPostLegalizerCombinerOption.push_back(x: ("!" + X.first).str());
1249 Str = X.second;
1250 } while (!Str.empty());
1251 }));
1252
1253
1254bool AMDGPUPostLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1255 return !DisabledRules.test(Idx: RuleID);
1256}
1257bool AMDGPUPostLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1258 for (StringRef Identifier : AMDGPUPostLegalizerCombinerOption) {
1259 bool Enabled = Identifier.consume_front(Prefix: "!");
1260 if (Enabled && !setRuleEnabled(Identifier))
1261 return false;
1262 if (!Enabled && !setRuleDisabled(Identifier))
1263 return false;
1264 }
1265 return true;
1266}
1267
1268#endif // ifdef GET_GICOMBINER_TYPES
1269
1270#ifdef GET_GICOMBINER_TYPES
1271const unsigned MAX_SUBTARGET_PREDICATES = 3;
1272using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1273#endif // ifdef GET_GICOMBINER_TYPES
1274
1275#ifdef GET_GICOMBINER_CLASS_MEMBERS
1276PredicateBitset AvailableModuleFeatures;
1277mutable PredicateBitset AvailableFunctionFeatures;
1278PredicateBitset getAvailableFeatures() const {
1279 return AvailableModuleFeatures | AvailableFunctionFeatures;
1280}
1281PredicateBitset
1282computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const;
1283PredicateBitset
1284computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget,
1285 const MachineFunction *MF) const;
1286void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1287#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
1288#ifdef GET_GICOMBINER_CLASS_MEMBERS
1289 mutable MatcherState State;
1290 typedef ComplexRendererFns(AMDGPUPostLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1291 typedef void(AMDGPUPostLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1292 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1293 static AMDGPUPostLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1294 static AMDGPUPostLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1295 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1296 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1297 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1298 const uint8_t *getMatchTable() const override;
1299 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1300 bool testSimplePredicate(unsigned PredicateID) const override;
1301 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1302#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
1303
1304#ifdef GET_GICOMBINER_IMPL
1305// LLT Objects.
1306enum {
1307 GILLT_s16,
1308 GILLT_s32,
1309};
1310const static size_t NumTypeObjects = 2;
1311const static LLT TypeObjects[] = {
1312 LLT::scalar(16),
1313 LLT::scalar(32),
1314};
1315
1316// Bits for subtarget features that participate in instruction matching.
1317enum SubtargetFeatureBits : uint8_t {
1318 Feature_Has16BitInstsBit = 1,
1319 Feature_NotHasMed3_16Bit = 2,
1320 Feature_HasFminFmaxLegacyBit = 0,
1321};
1322
1323PredicateBitset AMDGPUPostLegalizerCombinerImpl::
1324computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const {
1325 PredicateBitset Features{};
1326 if (Subtarget->has16BitInsts())
1327 Features.set(Feature_Has16BitInstsBit);
1328 if (!Subtarget->hasMed3_16())
1329 Features.set(Feature_NotHasMed3_16Bit);
1330 if (Subtarget->hasFminFmaxLegacy())
1331 Features.set(Feature_HasFminFmaxLegacyBit);
1332 return Features;
1333}
1334
1335void AMDGPUPostLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1336 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AMDGPUSubtarget *)&MF.getSubtarget(), &MF);
1337}
1338PredicateBitset AMDGPUPostLegalizerCombinerImpl::
1339computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget, const MachineFunction *MF) const {
1340 PredicateBitset Features{};
1341 return Features;
1342}
1343
1344// Feature bitsets.
1345enum {
1346 GIFBS_Invalid,
1347 GIFBS_HasFminFmaxLegacy,
1348 GIFBS_Has16BitInsts_NotHasMed3_16,
1349};
1350constexpr static PredicateBitset FeatureBitsets[] {
1351 {}, // GIFBS_Invalid
1352 {Feature_HasFminFmaxLegacyBit, },
1353 {Feature_Has16BitInstsBit, Feature_NotHasMed3_16Bit, },
1354};
1355
1356// ComplexPattern predicates.
1357enum {
1358 GICP_Invalid,
1359};
1360// See constructor for table contents
1361
1362AMDGPUPostLegalizerCombinerImpl::ComplexMatcherMemFn
1363AMDGPUPostLegalizerCombinerImpl::ComplexPredicateFns[] = {
1364 nullptr, // GICP_Invalid
1365};
1366
1367enum {
1368 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1369 GICXXPred_MI_Predicate_GICombiner1,
1370 GICXXPred_MI_Predicate_GICombiner2,
1371 GICXXPred_MI_Predicate_GICombiner3,
1372 GICXXPred_MI_Predicate_GICombiner4,
1373 GICXXPred_MI_Predicate_GICombiner5,
1374 GICXXPred_MI_Predicate_GICombiner6,
1375 GICXXPred_MI_Predicate_GICombiner7,
1376 GICXXPred_MI_Predicate_GICombiner8,
1377};
1378bool AMDGPUPostLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1379 switch (PredicateID) {
1380 case GICXXPred_MI_Predicate_GICombiner0: {
1381 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1382 }
1383 case GICXXPred_MI_Predicate_GICombiner1: {
1384 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1385 }
1386 case GICXXPred_MI_Predicate_GICombiner2: {
1387 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1388 }
1389 case GICXXPred_MI_Predicate_GICombiner3: {
1390 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1391 }
1392 case GICXXPred_MI_Predicate_GICombiner4: {
1393 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1394 }
1395 case GICXXPred_MI_Predicate_GICombiner5: {
1396 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
1397 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1398 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1399 }
1400 case GICXXPred_MI_Predicate_GICombiner6: {
1401 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
1402 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1403 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1404 }
1405 case GICXXPred_MI_Predicate_GICombiner7: {
1406 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
1407 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1408 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1409 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1410 }
1411 case GICXXPred_MI_Predicate_GICombiner8: {
1412 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
1413 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1414 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1415 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1416 }
1417 }
1418 llvm_unreachable("Unknown predicate");
1419 return false;
1420}
1421bool AMDGPUPostLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1422 llvm_unreachable("Unknown predicate");
1423 return false;
1424}
1425bool AMDGPUPostLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1426 llvm_unreachable("Unknown predicate");
1427 return false;
1428}
1429bool AMDGPUPostLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1430 llvm_unreachable("Unknown predicate");
1431 return false;
1432}
1433enum {
1434 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1435 GICXXPred_Simple_IsRule1Enabled,
1436 GICXXPred_Simple_IsRule2Enabled,
1437 GICXXPred_Simple_IsRule3Enabled,
1438 GICXXPred_Simple_IsRule4Enabled,
1439 GICXXPred_Simple_IsRule5Enabled,
1440 GICXXPred_Simple_IsRule6Enabled,
1441 GICXXPred_Simple_IsRule7Enabled,
1442 GICXXPred_Simple_IsRule8Enabled,
1443 GICXXPred_Simple_IsRule9Enabled,
1444 GICXXPred_Simple_IsRule10Enabled,
1445 GICXXPred_Simple_IsRule11Enabled,
1446 GICXXPred_Simple_IsRule12Enabled,
1447 GICXXPred_Simple_IsRule13Enabled,
1448 GICXXPred_Simple_IsRule14Enabled,
1449 GICXXPred_Simple_IsRule15Enabled,
1450 GICXXPred_Simple_IsRule16Enabled,
1451 GICXXPred_Simple_IsRule17Enabled,
1452 GICXXPred_Simple_IsRule18Enabled,
1453 GICXXPred_Simple_IsRule19Enabled,
1454 GICXXPred_Simple_IsRule20Enabled,
1455 GICXXPred_Simple_IsRule21Enabled,
1456 GICXXPred_Simple_IsRule22Enabled,
1457 GICXXPred_Simple_IsRule23Enabled,
1458 GICXXPred_Simple_IsRule24Enabled,
1459 GICXXPred_Simple_IsRule25Enabled,
1460 GICXXPred_Simple_IsRule26Enabled,
1461 GICXXPred_Simple_IsRule27Enabled,
1462 GICXXPred_Simple_IsRule28Enabled,
1463 GICXXPred_Simple_IsRule29Enabled,
1464 GICXXPred_Simple_IsRule30Enabled,
1465 GICXXPred_Simple_IsRule31Enabled,
1466 GICXXPred_Simple_IsRule32Enabled,
1467 GICXXPred_Simple_IsRule33Enabled,
1468 GICXXPred_Simple_IsRule34Enabled,
1469 GICXXPred_Simple_IsRule35Enabled,
1470 GICXXPred_Simple_IsRule36Enabled,
1471 GICXXPred_Simple_IsRule37Enabled,
1472 GICXXPred_Simple_IsRule38Enabled,
1473 GICXXPred_Simple_IsRule39Enabled,
1474 GICXXPred_Simple_IsRule40Enabled,
1475 GICXXPred_Simple_IsRule41Enabled,
1476 GICXXPred_Simple_IsRule42Enabled,
1477 GICXXPred_Simple_IsRule43Enabled,
1478 GICXXPred_Simple_IsRule44Enabled,
1479 GICXXPred_Simple_IsRule45Enabled,
1480 GICXXPred_Simple_IsRule46Enabled,
1481 GICXXPred_Simple_IsRule47Enabled,
1482 GICXXPred_Simple_IsRule48Enabled,
1483 GICXXPred_Simple_IsRule49Enabled,
1484 GICXXPred_Simple_IsRule50Enabled,
1485 GICXXPred_Simple_IsRule51Enabled,
1486 GICXXPred_Simple_IsRule52Enabled,
1487 GICXXPred_Simple_IsRule53Enabled,
1488 GICXXPred_Simple_IsRule54Enabled,
1489 GICXXPred_Simple_IsRule55Enabled,
1490 GICXXPred_Simple_IsRule56Enabled,
1491 GICXXPred_Simple_IsRule57Enabled,
1492 GICXXPred_Simple_IsRule58Enabled,
1493 GICXXPred_Simple_IsRule59Enabled,
1494 GICXXPred_Simple_IsRule60Enabled,
1495 GICXXPred_Simple_IsRule61Enabled,
1496 GICXXPred_Simple_IsRule62Enabled,
1497 GICXXPred_Simple_IsRule63Enabled,
1498 GICXXPred_Simple_IsRule64Enabled,
1499 GICXXPred_Simple_IsRule65Enabled,
1500 GICXXPred_Simple_IsRule66Enabled,
1501 GICXXPred_Simple_IsRule67Enabled,
1502 GICXXPred_Simple_IsRule68Enabled,
1503 GICXXPred_Simple_IsRule69Enabled,
1504 GICXXPred_Simple_IsRule70Enabled,
1505 GICXXPred_Simple_IsRule71Enabled,
1506 GICXXPred_Simple_IsRule72Enabled,
1507 GICXXPred_Simple_IsRule73Enabled,
1508 GICXXPred_Simple_IsRule74Enabled,
1509 GICXXPred_Simple_IsRule75Enabled,
1510 GICXXPred_Simple_IsRule76Enabled,
1511 GICXXPred_Simple_IsRule77Enabled,
1512 GICXXPred_Simple_IsRule78Enabled,
1513 GICXXPred_Simple_IsRule79Enabled,
1514 GICXXPred_Simple_IsRule80Enabled,
1515 GICXXPred_Simple_IsRule81Enabled,
1516 GICXXPred_Simple_IsRule82Enabled,
1517 GICXXPred_Simple_IsRule83Enabled,
1518 GICXXPred_Simple_IsRule84Enabled,
1519 GICXXPred_Simple_IsRule85Enabled,
1520 GICXXPred_Simple_IsRule86Enabled,
1521 GICXXPred_Simple_IsRule87Enabled,
1522 GICXXPred_Simple_IsRule88Enabled,
1523 GICXXPred_Simple_IsRule89Enabled,
1524 GICXXPred_Simple_IsRule90Enabled,
1525 GICXXPred_Simple_IsRule91Enabled,
1526 GICXXPred_Simple_IsRule92Enabled,
1527 GICXXPred_Simple_IsRule93Enabled,
1528 GICXXPred_Simple_IsRule94Enabled,
1529 GICXXPred_Simple_IsRule95Enabled,
1530 GICXXPred_Simple_IsRule96Enabled,
1531 GICXXPred_Simple_IsRule97Enabled,
1532 GICXXPred_Simple_IsRule98Enabled,
1533 GICXXPred_Simple_IsRule99Enabled,
1534 GICXXPred_Simple_IsRule100Enabled,
1535 GICXXPred_Simple_IsRule101Enabled,
1536 GICXXPred_Simple_IsRule102Enabled,
1537 GICXXPred_Simple_IsRule103Enabled,
1538 GICXXPred_Simple_IsRule104Enabled,
1539 GICXXPred_Simple_IsRule105Enabled,
1540 GICXXPred_Simple_IsRule106Enabled,
1541 GICXXPred_Simple_IsRule107Enabled,
1542 GICXXPred_Simple_IsRule108Enabled,
1543 GICXXPred_Simple_IsRule109Enabled,
1544 GICXXPred_Simple_IsRule110Enabled,
1545 GICXXPred_Simple_IsRule111Enabled,
1546 GICXXPred_Simple_IsRule112Enabled,
1547 GICXXPred_Simple_IsRule113Enabled,
1548 GICXXPred_Simple_IsRule114Enabled,
1549 GICXXPred_Simple_IsRule115Enabled,
1550 GICXXPred_Simple_IsRule116Enabled,
1551 GICXXPred_Simple_IsRule117Enabled,
1552 GICXXPred_Simple_IsRule118Enabled,
1553 GICXXPred_Simple_IsRule119Enabled,
1554 GICXXPred_Simple_IsRule120Enabled,
1555 GICXXPred_Simple_IsRule121Enabled,
1556 GICXXPred_Simple_IsRule122Enabled,
1557 GICXXPred_Simple_IsRule123Enabled,
1558 GICXXPred_Simple_IsRule124Enabled,
1559 GICXXPred_Simple_IsRule125Enabled,
1560 GICXXPred_Simple_IsRule126Enabled,
1561 GICXXPred_Simple_IsRule127Enabled,
1562 GICXXPred_Simple_IsRule128Enabled,
1563 GICXXPred_Simple_IsRule129Enabled,
1564 GICXXPred_Simple_IsRule130Enabled,
1565 GICXXPred_Simple_IsRule131Enabled,
1566 GICXXPred_Simple_IsRule132Enabled,
1567 GICXXPred_Simple_IsRule133Enabled,
1568 GICXXPred_Simple_IsRule134Enabled,
1569 GICXXPred_Simple_IsRule135Enabled,
1570 GICXXPred_Simple_IsRule136Enabled,
1571 GICXXPred_Simple_IsRule137Enabled,
1572 GICXXPred_Simple_IsRule138Enabled,
1573 GICXXPred_Simple_IsRule139Enabled,
1574 GICXXPred_Simple_IsRule140Enabled,
1575 GICXXPred_Simple_IsRule141Enabled,
1576 GICXXPred_Simple_IsRule142Enabled,
1577 GICXXPred_Simple_IsRule143Enabled,
1578 GICXXPred_Simple_IsRule144Enabled,
1579 GICXXPred_Simple_IsRule145Enabled,
1580 GICXXPred_Simple_IsRule146Enabled,
1581 GICXXPred_Simple_IsRule147Enabled,
1582 GICXXPred_Simple_IsRule148Enabled,
1583 GICXXPred_Simple_IsRule149Enabled,
1584 GICXXPred_Simple_IsRule150Enabled,
1585 GICXXPred_Simple_IsRule151Enabled,
1586 GICXXPred_Simple_IsRule152Enabled,
1587 GICXXPred_Simple_IsRule153Enabled,
1588 GICXXPred_Simple_IsRule154Enabled,
1589 GICXXPred_Simple_IsRule155Enabled,
1590 GICXXPred_Simple_IsRule156Enabled,
1591 GICXXPred_Simple_IsRule157Enabled,
1592 GICXXPred_Simple_IsRule158Enabled,
1593 GICXXPred_Simple_IsRule159Enabled,
1594 GICXXPred_Simple_IsRule160Enabled,
1595 GICXXPred_Simple_IsRule161Enabled,
1596 GICXXPred_Simple_IsRule162Enabled,
1597 GICXXPred_Simple_IsRule163Enabled,
1598 GICXXPred_Simple_IsRule164Enabled,
1599 GICXXPred_Simple_IsRule165Enabled,
1600 GICXXPred_Simple_IsRule166Enabled,
1601 GICXXPred_Simple_IsRule167Enabled,
1602 GICXXPred_Simple_IsRule168Enabled,
1603 GICXXPred_Simple_IsRule169Enabled,
1604 GICXXPred_Simple_IsRule170Enabled,
1605 GICXXPred_Simple_IsRule171Enabled,
1606 GICXXPred_Simple_IsRule172Enabled,
1607 GICXXPred_Simple_IsRule173Enabled,
1608 GICXXPred_Simple_IsRule174Enabled,
1609 GICXXPred_Simple_IsRule175Enabled,
1610 GICXXPred_Simple_IsRule176Enabled,
1611 GICXXPred_Simple_IsRule177Enabled,
1612 GICXXPred_Simple_IsRule178Enabled,
1613 GICXXPred_Simple_IsRule179Enabled,
1614 GICXXPred_Simple_IsRule180Enabled,
1615 GICXXPred_Simple_IsRule181Enabled,
1616 GICXXPred_Simple_IsRule182Enabled,
1617 GICXXPred_Simple_IsRule183Enabled,
1618 GICXXPred_Simple_IsRule184Enabled,
1619 GICXXPred_Simple_IsRule185Enabled,
1620 GICXXPred_Simple_IsRule186Enabled,
1621 GICXXPred_Simple_IsRule187Enabled,
1622 GICXXPred_Simple_IsRule188Enabled,
1623 GICXXPred_Simple_IsRule189Enabled,
1624 GICXXPred_Simple_IsRule190Enabled,
1625 GICXXPred_Simple_IsRule191Enabled,
1626 GICXXPred_Simple_IsRule192Enabled,
1627 GICXXPred_Simple_IsRule193Enabled,
1628 GICXXPred_Simple_IsRule194Enabled,
1629 GICXXPred_Simple_IsRule195Enabled,
1630 GICXXPred_Simple_IsRule196Enabled,
1631 GICXXPred_Simple_IsRule197Enabled,
1632 GICXXPred_Simple_IsRule198Enabled,
1633};
1634
1635bool AMDGPUPostLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
1636 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
1637}
1638// Custom renderers.
1639enum {
1640 GICR_Invalid,
1641};
1642AMDGPUPostLegalizerCombinerImpl::CustomRendererFn
1643AMDGPUPostLegalizerCombinerImpl::CustomRenderers[] = {
1644 nullptr, // GICR_Invalid
1645};
1646
1647bool AMDGPUPostLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
1648 const TargetSubtargetInfo &ST = MF.getSubtarget();
1649 const PredicateBitset AvailableFeatures = getAvailableFeatures();
1650 B.setInstrAndDebugLoc(I);
1651 State.MIs.clear();
1652 State.MIs.push_back(&I);
1653 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
1654 return true;
1655 }
1656
1657 return false;
1658}
1659
1660enum {
1661 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
1662 GICXXCustomAction_GICombiner1,
1663 GICXXCustomAction_GICombiner2,
1664 GICXXCustomAction_GICombiner3,
1665 GICXXCustomAction_GICombiner4,
1666 GICXXCustomAction_GICombiner5,
1667 GICXXCustomAction_GICombiner6,
1668 GICXXCustomAction_GICombiner7,
1669 GICXXCustomAction_GICombiner8,
1670 GICXXCustomAction_GICombiner9,
1671 GICXXCustomAction_GICombiner10,
1672 GICXXCustomAction_GICombiner11,
1673 GICXXCustomAction_GICombiner12,
1674 GICXXCustomAction_GICombiner13,
1675 GICXXCustomAction_GICombiner14,
1676 GICXXCustomAction_GICombiner15,
1677 GICXXCustomAction_GICombiner16,
1678 GICXXCustomAction_GICombiner17,
1679 GICXXCustomAction_GICombiner18,
1680 GICXXCustomAction_GICombiner19,
1681 GICXXCustomAction_GICombiner20,
1682 GICXXCustomAction_GICombiner21,
1683 GICXXCustomAction_GICombiner22,
1684 GICXXCustomAction_GICombiner23,
1685 GICXXCustomAction_GICombiner24,
1686 GICXXCustomAction_GICombiner25,
1687 GICXXCustomAction_GICombiner26,
1688 GICXXCustomAction_GICombiner27,
1689 GICXXCustomAction_GICombiner28,
1690 GICXXCustomAction_GICombiner29,
1691 GICXXCustomAction_GICombiner30,
1692 GICXXCustomAction_GICombiner31,
1693 GICXXCustomAction_GICombiner32,
1694 GICXXCustomAction_GICombiner33,
1695 GICXXCustomAction_GICombiner34,
1696 GICXXCustomAction_GICombiner35,
1697 GICXXCustomAction_GICombiner36,
1698 GICXXCustomAction_GICombiner37,
1699 GICXXCustomAction_GICombiner38,
1700 GICXXCustomAction_GICombiner39,
1701 GICXXCustomAction_GICombiner40,
1702 GICXXCustomAction_GICombiner41,
1703 GICXXCustomAction_GICombiner42,
1704 GICXXCustomAction_GICombiner43,
1705 GICXXCustomAction_GICombiner44,
1706 GICXXCustomAction_GICombiner45,
1707 GICXXCustomAction_GICombiner46,
1708 GICXXCustomAction_GICombiner47,
1709 GICXXCustomAction_GICombiner48,
1710 GICXXCustomAction_GICombiner49,
1711 GICXXCustomAction_GICombiner50,
1712 GICXXCustomAction_GICombiner51,
1713 GICXXCustomAction_GICombiner52,
1714 GICXXCustomAction_GICombiner53,
1715 GICXXCustomAction_GICombiner54,
1716 GICXXCustomAction_GICombiner55,
1717 GICXXCustomAction_GICombiner56,
1718 GICXXCustomAction_GICombiner57,
1719 GICXXCustomAction_GICombiner58,
1720 GICXXCustomAction_GICombiner59,
1721 GICXXCustomAction_GICombiner60,
1722 GICXXCustomAction_GICombiner61,
1723 GICXXCustomAction_GICombiner62,
1724 GICXXCustomAction_GICombiner63,
1725 GICXXCustomAction_GICombiner64,
1726 GICXXCustomAction_GICombiner65,
1727 GICXXCustomAction_GICombiner66,
1728 GICXXCustomAction_GICombiner67,
1729 GICXXCustomAction_GICombiner68,
1730 GICXXCustomAction_GICombiner69,
1731 GICXXCustomAction_GICombiner70,
1732 GICXXCustomAction_GICombiner71,
1733 GICXXCustomAction_GICombiner72,
1734 GICXXCustomAction_GICombiner73,
1735 GICXXCustomAction_GICombiner74,
1736 GICXXCustomAction_GICombiner75,
1737 GICXXCustomAction_GICombiner76,
1738 GICXXCustomAction_GICombiner77,
1739 GICXXCustomAction_GICombiner78,
1740 GICXXCustomAction_GICombiner79,
1741 GICXXCustomAction_GICombiner80,
1742 GICXXCustomAction_GICombiner81,
1743 GICXXCustomAction_GICombiner82,
1744 GICXXCustomAction_GICombiner83,
1745 GICXXCustomAction_GICombiner84,
1746 GICXXCustomAction_GICombiner85,
1747 GICXXCustomAction_GICombiner86,
1748 GICXXCustomAction_GICombiner87,
1749 GICXXCustomAction_GICombiner88,
1750 GICXXCustomAction_GICombiner89,
1751 GICXXCustomAction_GICombiner90,
1752 GICXXCustomAction_GICombiner91,
1753 GICXXCustomAction_GICombiner92,
1754 GICXXCustomAction_GICombiner93,
1755 GICXXCustomAction_GICombiner94,
1756 GICXXCustomAction_GICombiner95,
1757 GICXXCustomAction_GICombiner96,
1758 GICXXCustomAction_GICombiner97,
1759 GICXXCustomAction_GICombiner98,
1760 GICXXCustomAction_GICombiner99,
1761 GICXXCustomAction_GICombiner100,
1762 GICXXCustomAction_GICombiner101,
1763 GICXXCustomAction_GICombiner102,
1764 GICXXCustomAction_GICombiner103,
1765 GICXXCustomAction_GICombiner104,
1766 GICXXCustomAction_GICombiner105,
1767 GICXXCustomAction_GICombiner106,
1768 GICXXCustomAction_GICombiner107,
1769 GICXXCustomAction_GICombiner108,
1770 GICXXCustomAction_GICombiner109,
1771 GICXXCustomAction_GICombiner110,
1772 GICXXCustomAction_GICombiner111,
1773 GICXXCustomAction_GICombiner112,
1774 GICXXCustomAction_GICombiner113,
1775 GICXXCustomAction_GICombiner114,
1776 GICXXCustomAction_GICombiner115,
1777 GICXXCustomAction_GICombiner116,
1778 GICXXCustomAction_GICombiner117,
1779 GICXXCustomAction_GICombiner118,
1780 GICXXCustomAction_GICombiner119,
1781 GICXXCustomAction_GICombiner120,
1782 GICXXCustomAction_GICombiner121,
1783 GICXXCustomAction_GICombiner122,
1784 GICXXCustomAction_GICombiner123,
1785 GICXXCustomAction_GICombiner124,
1786 GICXXCustomAction_GICombiner125,
1787 GICXXCustomAction_GICombiner126,
1788 GICXXCustomAction_GICombiner127,
1789 GICXXCustomAction_GICombiner128,
1790 GICXXCustomAction_GICombiner129,
1791 GICXXCustomAction_GICombiner130,
1792 GICXXCustomAction_GICombiner131,
1793 GICXXCustomAction_GICombiner132,
1794 GICXXCustomAction_GICombiner133,
1795 GICXXCustomAction_GICombiner134,
1796 GICXXCustomAction_GICombiner135,
1797 GICXXCustomAction_GICombiner136,
1798 GICXXCustomAction_GICombiner137,
1799 GICXXCustomAction_GICombiner138,
1800};
1801bool AMDGPUPostLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
1802 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
1803 switch(ApplyID) {
1804 case GICXXCustomAction_GICombiner0:{
1805 // Match Patterns
1806 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
1807 return false;
1808 }
1809 // Apply Patterns
1810 Helper.applyCombineCopy(*State.MIs[0]);
1811 return true;
1812 }
1813 case GICXXCustomAction_GICombiner1:{
1814 unsigned GIMatchData_matchinfo;
1815 // Match Patterns
1816 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
1817 return false;
1818 }
1819 // Apply Patterns
1820 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
1821 return true;
1822 }
1823 case GICXXCustomAction_GICombiner2:{
1824 std::pair<Register, bool> GIMatchData_info;
1825 // Match Patterns
1826 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
1827 return false;
1828 }
1829 // Apply Patterns
1830 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
1831 return true;
1832 }
1833 case GICXXCustomAction_GICombiner3:{
1834 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1835 // Match Patterns
1836 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
1837 return false;
1838 }
1839 // Apply Patterns
1840 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1841 return true;
1842 }
1843 case GICXXCustomAction_GICombiner4:{
1844 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1845 // Match Patterns
1846 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
1847 return false;
1848 }
1849 // Apply Patterns
1850 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1851 return true;
1852 }
1853 case GICXXCustomAction_GICombiner5:{
1854 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1855 // Match Patterns
1856 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
1857 return false;
1858 }
1859 // Apply Patterns
1860 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
1861 return true;
1862 }
1863 case GICXXCustomAction_GICombiner6:{
1864 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1865 // Match Patterns
1866 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
1867 return false;
1868 }
1869 // Apply Patterns
1870 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
1871 return true;
1872 }
1873 case GICXXCustomAction_GICombiner7:{
1874 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1875 // Match Patterns
1876 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
1877 return false;
1878 }
1879 // Apply Patterns
1880 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
1881 return true;
1882 }
1883 case GICXXCustomAction_GICombiner8:{
1884 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1885 // Match Patterns
1886 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
1887 return false;
1888 }
1889 // Apply Patterns
1890 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
1891 return true;
1892 }
1893 case GICXXCustomAction_GICombiner9:{
1894 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1895 // Match Patterns
1896 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
1897 return false;
1898 }
1899 // Apply Patterns
1900 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
1901 return true;
1902 }
1903 case GICXXCustomAction_GICombiner10:{
1904 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1905 // Match Patterns
1906 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
1907 return false;
1908 }
1909 // Apply Patterns
1910 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
1911 return true;
1912 }
1913 case GICXXCustomAction_GICombiner11:{
1914 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1915 // Match Patterns
1916 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
1917 return false;
1918 }
1919 // Apply Patterns
1920 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
1921 return true;
1922 }
1923 case GICXXCustomAction_GICombiner12:{
1924 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1925 // Match Patterns
1926 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
1927 return false;
1928 }
1929 // Apply Patterns
1930 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
1931 return true;
1932 }
1933 case GICXXCustomAction_GICombiner13:{
1934 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1935 // Match Patterns
1936 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
1937 return false;
1938 }
1939 // Apply Patterns
1940 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1941 return true;
1942 }
1943 case GICXXCustomAction_GICombiner14:{
1944 SmallVector<Register, 4> GIMatchData_info;
1945 // Match Patterns
1946 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
1947 return false;
1948 }
1949 // Apply Patterns
1950 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
1951 return true;
1952 }
1953 case GICXXCustomAction_GICombiner15:{
1954 Register GIMatchData_matchinfo;
1955 // Match Patterns
1956 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
1957 return false;
1958 }
1959 // Apply Patterns
1960 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
1961 return true;
1962 }
1963 case GICXXCustomAction_GICombiner16:{
1964 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
1965 // Match Patterns
1966 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
1967 return false;
1968 }
1969 // Apply Patterns
1970 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
1971 return true;
1972 }
1973 case GICXXCustomAction_GICombiner17:{
1974 PreferredTuple GIMatchData_matchinfo;
1975 // Match Patterns
1976 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
1977 return false;
1978 }
1979 // Apply Patterns
1980 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
1981 return true;
1982 }
1983 case GICXXCustomAction_GICombiner18:{
1984 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1985 // Match Patterns
1986 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
1987 return false;
1988 }
1989 // Apply Patterns
1990 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1991 return true;
1992 }
1993 case GICXXCustomAction_GICombiner19:{
1994 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1995 // Match Patterns
1996 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
1997 return false;
1998 }
1999 // Apply Patterns
2000 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2001 return true;
2002 }
2003 case GICXXCustomAction_GICombiner20:{
2004 // Match Patterns
2005 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2006 return false;
2007 }
2008 // Apply Patterns
2009 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
2010 return true;
2011 }
2012 case GICXXCustomAction_GICombiner21:{
2013 // Match Patterns
2014 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2015 return false;
2016 }
2017 // Apply Patterns
2018 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2019 return true;
2020 }
2021 case GICXXCustomAction_GICombiner22:{
2022 // Match Patterns
2023 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2024 return false;
2025 }
2026 // Apply Patterns
2027 Helper.replaceInstWithConstant(*State.MIs[0], -1);
2028 return true;
2029 }
2030 case GICXXCustomAction_GICombiner23:{
2031 // Match Patterns
2032 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
2033 return false;
2034 }
2035 // Apply Patterns
2036 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2037 return true;
2038 }
2039 case GICXXCustomAction_GICombiner24:{
2040 // Match Patterns
2041 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
2042 return false;
2043 }
2044 // Apply Patterns
2045 Helper.replaceInstWithUndef(*State.MIs[0]);
2046 return true;
2047 }
2048 case GICXXCustomAction_GICombiner25:{
2049 // Match Patterns
2050 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2051 return false;
2052 }
2053 // Apply Patterns
2054 Helper.replaceInstWithUndef(*State.MIs[0]);
2055 return true;
2056 }
2057 case GICXXCustomAction_GICombiner26:{
2058 // Match Patterns
2059 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
2060 return false;
2061 }
2062 // Apply Patterns
2063 Helper.replaceInstWithUndef(*State.MIs[0]);
2064 return true;
2065 }
2066 case GICXXCustomAction_GICombiner27:{
2067 // Match Patterns
2068 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
2069 return false;
2070 }
2071 // Apply Patterns
2072 Helper.replaceInstWithUndef(*State.MIs[0]);
2073 return true;
2074 }
2075 case GICXXCustomAction_GICombiner28:{
2076 // Match Patterns
2077 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
2078 return false;
2079 }
2080 // Apply Patterns
2081 Helper.eraseInst(*State.MIs[0]);
2082 return true;
2083 }
2084 case GICXXCustomAction_GICombiner29:{
2085 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2086 // Match Patterns
2087 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
2088 return false;
2089 }
2090 // Apply Patterns
2091 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2092 return true;
2093 }
2094 case GICXXCustomAction_GICombiner30:{
2095 // Match Patterns
2096 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
2097 return false;
2098 }
2099 // Apply Patterns
2100 Helper.replaceInstWithUndef(*State.MIs[0]);
2101 return true;
2102 }
2103 case GICXXCustomAction_GICombiner31:{
2104 // Match Patterns
2105 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
2106 return false;
2107 }
2108 // Apply Patterns
2109 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
2110 return true;
2111 }
2112 case GICXXCustomAction_GICombiner32:{
2113 // Match Patterns
2114 if(![&](){return Helper.matchOperandIsZero(*State.MIs[0], 1);}()) {
2115 return false;
2116 }
2117 // Apply Patterns
2118 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
2119 return true;
2120 }
2121 case GICXXCustomAction_GICombiner33:{
2122 Register GIMatchData_info;
2123 // Match Patterns
2124 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
2125 return false;
2126 }
2127 // Apply Patterns
2128 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
2129 return true;
2130 }
2131 case GICXXCustomAction_GICombiner34:{
2132 Register GIMatchData_info;
2133 // Match Patterns
2134 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
2135 return false;
2136 }
2137 // Apply Patterns
2138 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
2139 return true;
2140 }
2141 case GICXXCustomAction_GICombiner35:{
2142 Register GIMatchData_matchinfo;
2143 // Match Patterns
2144 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2145 return false;
2146 }
2147 // Apply Patterns
2148 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2149 return true;
2150 }
2151 case GICXXCustomAction_GICombiner36:{
2152 Register GIMatchData_matchinfo;
2153 // Match Patterns
2154 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2155 return false;
2156 }
2157 // Apply Patterns
2158 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2159 return true;
2160 }
2161 case GICXXCustomAction_GICombiner37:{
2162 Register GIMatchData_matchinfo;
2163 // Match Patterns
2164 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2165 return false;
2166 }
2167 // Apply Patterns
2168 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2169 return true;
2170 }
2171 case GICXXCustomAction_GICombiner38:{
2172 Register GIMatchData_matchinfo;
2173 // Match Patterns
2174 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2175 return false;
2176 }
2177 // Apply Patterns
2178 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2179 return true;
2180 }
2181 case GICXXCustomAction_GICombiner39:{
2182 // Match Patterns
2183 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
2184 return false;
2185 }
2186 // Apply Patterns
2187 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
2188 return true;
2189 }
2190 case GICXXCustomAction_GICombiner40:{
2191 MachineInstr* GIMatchData_matchinfo;
2192 // Match Patterns
2193 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
2194 return false;
2195 }
2196 // Apply Patterns
2197 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
2198 return true;
2199 }
2200 case GICXXCustomAction_GICombiner41:{
2201 std::tuple<Register, Register> GIMatchData_info;
2202 // Match Patterns
2203 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
2204 return false;
2205 }
2206 // Apply Patterns
2207 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
2208 return true;
2209 }
2210 case GICXXCustomAction_GICombiner42:{
2211 InstructionStepsMatchInfo GIMatchData_info;
2212 // Match Patterns
2213 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
2214 return false;
2215 }
2216 // Apply Patterns
2217 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
2218 return true;
2219 }
2220 case GICXXCustomAction_GICombiner43:{
2221 // Match Patterns
2222 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0]);}()) {
2223 return false;
2224 }
2225 // Apply Patterns
2226 Helper.replaceInstWithUndef(*State.MIs[0]);
2227 return true;
2228 }
2229 case GICXXCustomAction_GICombiner44:{
2230 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2231 // Match Patterns
2232 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2233 return false;
2234 }
2235 // Apply Patterns
2236 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2237 return true;
2238 }
2239 case GICXXCustomAction_GICombiner45:{
2240 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2241 // Match Patterns
2242 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2243 return false;
2244 }
2245 // Apply Patterns
2246 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2247 return true;
2248 }
2249 case GICXXCustomAction_GICombiner46:{
2250 PtrAddChain GIMatchData_matchinfo;
2251 // Match Patterns
2252 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2253 return false;
2254 }
2255 // Apply Patterns
2256 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2257 return true;
2258 }
2259 case GICXXCustomAction_GICombiner47:{
2260 std::tuple<Register, int64_t> GIMatchData_info;
2261 // Match Patterns
2262 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
2263 return false;
2264 }
2265 // Apply Patterns
2266 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
2267 return true;
2268 }
2269 case GICXXCustomAction_GICombiner48:{
2270 std::tuple<Register, unsigned> GIMatchData_matchinfo;
2271 // Match Patterns
2272 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2273 return false;
2274 }
2275 // Apply Patterns
2276 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
2277 return true;
2278 }
2279 case GICXXCustomAction_GICombiner49:{
2280 RegisterImmPair GIMatchData_matchinfo;
2281 // Match Patterns
2282 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
2283 return false;
2284 }
2285 // Apply Patterns
2286 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
2287 return true;
2288 }
2289 case GICXXCustomAction_GICombiner50:{
2290 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2291 // Match Patterns
2292 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2293 return false;
2294 }
2295 // Apply Patterns
2296 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2297 return true;
2298 }
2299 case GICXXCustomAction_GICombiner51:{
2300 unsigned GIMatchData_matchinfo;
2301 // Match Patterns
2302 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2303 return false;
2304 }
2305 // Apply Patterns
2306 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
2307 return true;
2308 }
2309 case GICXXCustomAction_GICombiner52:{
2310 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2311 // Match Patterns
2312 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
2313 return false;
2314 }
2315 // Apply Patterns
2316 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
2317 return true;
2318 }
2319 case GICXXCustomAction_GICombiner53:{
2320 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2321 // Match Patterns
2322 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
2323 return false;
2324 }
2325 // Apply Patterns
2326 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2327 return true;
2328 }
2329 case GICXXCustomAction_GICombiner54:{
2330 Register GIMatchData_matchinfo;
2331 // Match Patterns
2332 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2333 return false;
2334 }
2335 // Apply Patterns
2336 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2337 return true;
2338 }
2339 case GICXXCustomAction_GICombiner55:{
2340 // Match Patterns
2341 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
2342 return false;
2343 }
2344 // Apply Patterns
2345 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
2346 return true;
2347 }
2348 case GICXXCustomAction_GICombiner56:{
2349 Register GIMatchData_matchinfo;
2350 // Match Patterns
2351 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
2352 return false;
2353 }
2354 // Apply Patterns
2355 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2356 return true;
2357 }
2358 case GICXXCustomAction_GICombiner57:{
2359 // Match Patterns
2360 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(*State.MIs[0], 2);}()) {
2361 return false;
2362 }
2363 // Apply Patterns
2364 Helper.applySimplifyURemByPow2(*State.MIs[0]);
2365 return true;
2366 }
2367 case GICXXCustomAction_GICombiner58:{
2368 Register GIMatchData_matchinfo;
2369 // Match Patterns
2370 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2371 return false;
2372 }
2373 // Apply Patterns
2374 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2375 return true;
2376 }
2377 case GICXXCustomAction_GICombiner59:{
2378 int64_t GIMatchData_matchinfo;
2379 // Match Patterns
2380 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
2381 return false;
2382 }
2383 // Apply Patterns
2384 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2385 return true;
2386 }
2387 case GICXXCustomAction_GICombiner60:{
2388 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2389 // Match Patterns
2390 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
2391 return false;
2392 }
2393 // Apply Patterns
2394 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2395 return true;
2396 }
2397 case GICXXCustomAction_GICombiner61:{
2398 // Match Patterns
2399 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
2400 return Helper.getKnownBits()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
2401 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
2402 return false;
2403 }
2404 // Apply Patterns
2405 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2406 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
2407 State.MIs[0]->eraseFromParent();
2408 return true;
2409 }
2410 case GICXXCustomAction_GICombiner62:{
2411 std::tuple<Register, unsigned> GIMatchData_matchinfo;
2412 // Match Patterns
2413 if(![&](){return Helper.matchCombineExtOfExt(*State.MIs[0], GIMatchData_matchinfo);}()) {
2414 return false;
2415 }
2416 // Apply Patterns
2417 Helper.applyCombineExtOfExt(*State.MIs[0], GIMatchData_matchinfo);
2418 return true;
2419 }
2420 case GICXXCustomAction_GICombiner63:{
2421 SmallVector<Register, 4> GIMatchData_info;
2422 // Match Patterns
2423 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
2424 return false;
2425 }
2426 // Apply Patterns
2427 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
2428 return true;
2429 }
2430 case GICXXCustomAction_GICombiner64:{
2431 MachineInstr * GIMatchData_matchinfo;
2432 // Match Patterns
2433 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
2434 return false;
2435 }
2436 // Apply Patterns
2437 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
2438 return true;
2439 }
2440 case GICXXCustomAction_GICombiner65:{
2441 SmallVector<Register, 8> GIMatchData_info;
2442 // Match Patterns
2443 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
2444 return false;
2445 }
2446 // Apply Patterns
2447 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
2448 return true;
2449 }
2450 case GICXXCustomAction_GICombiner66:{
2451 SmallVector<APInt, 8> GIMatchData_info;
2452 // Match Patterns
2453 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
2454 return false;
2455 }
2456 // Apply Patterns
2457 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
2458 return true;
2459 }
2460 case GICXXCustomAction_GICombiner67:{
2461 // Match Patterns
2462 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
2463 return false;
2464 }
2465 // Apply Patterns
2466 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
2467 return true;
2468 }
2469 case GICXXCustomAction_GICombiner68:{
2470 // Match Patterns
2471 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
2472 return false;
2473 }
2474 // Apply Patterns
2475 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
2476 return true;
2477 }
2478 case GICXXCustomAction_GICombiner69:{
2479 Register GIMatchData_matchinfo;
2480 // Match Patterns
2481 if(![&](){return Helper.matchCombineMergeUnmerge(*State.MIs[0], GIMatchData_matchinfo);}()) {
2482 return false;
2483 }
2484 // Apply Patterns
2485 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2486 return true;
2487 }
2488 case GICXXCustomAction_GICombiner70:{
2489 std::pair<Register, unsigned> GIMatchData_matchinfo;
2490 // Match Patterns
2491 if(![&](){return Helper.matchCombineTruncOfExt(*State.MIs[0], GIMatchData_matchinfo);}()) {
2492 return false;
2493 }
2494 // Apply Patterns
2495 Helper.applyCombineTruncOfExt(*State.MIs[0], GIMatchData_matchinfo);
2496 return true;
2497 }
2498 case GICXXCustomAction_GICombiner71:{
2499 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
2500 // Match Patterns
2501 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
2502 return false;
2503 }
2504 // Apply Patterns
2505 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
2506 return true;
2507 }
2508 case GICXXCustomAction_GICombiner72:{
2509 // Apply Patterns
2510 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
2511 return true;
2512 }
2513 case GICXXCustomAction_GICombiner73:{
2514 // Apply Patterns
2515 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
2516 return true;
2517 }
2518 case GICXXCustomAction_GICombiner74:{
2519 APInt GIMatchData_info;
2520 // Match Patterns
2521 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
2522 return false;
2523 }
2524 // Apply Patterns
2525 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
2526 return true;
2527 }
2528 case GICXXCustomAction_GICombiner75:{
2529 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2530 // Match Patterns
2531 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
2532 return false;
2533 }
2534 // Apply Patterns
2535 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2536 return true;
2537 }
2538 case GICXXCustomAction_GICombiner76:{
2539 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2540 // Match Patterns
2541 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2542 return false;
2543 }
2544 // Apply Patterns
2545 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2546 return true;
2547 }
2548 case GICXXCustomAction_GICombiner77:{
2549 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2550 // Match Patterns
2551 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
2552 return false;
2553 }
2554 // Apply Patterns
2555 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2556 return true;
2557 }
2558 case GICXXCustomAction_GICombiner78:{
2559 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2560 // Match Patterns
2561 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
2562 return false;
2563 }
2564 // Apply Patterns
2565 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2566 return true;
2567 }
2568 case GICXXCustomAction_GICombiner79:{
2569 unsigned GIMatchData_info;
2570 // Match Patterns
2571 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
2572 return false;
2573 }
2574 // Apply Patterns
2575 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
2576 return true;
2577 }
2578 case GICXXCustomAction_GICombiner80:{
2579 // Match Patterns
2580 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
2581 return false;
2582 }
2583 // Apply Patterns
2584 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
2585 return true;
2586 }
2587 case GICXXCustomAction_GICombiner81:{
2588 std::pair<Register, Register> GIMatchData_matchinfo;
2589 // Match Patterns
2590 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
2591 return false;
2592 }
2593 // Apply Patterns
2594 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
2595 return true;
2596 }
2597 case GICXXCustomAction_GICombiner82:{
2598 // Match Patterns
2599 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
2600 return false;
2601 }
2602 // Apply Patterns
2603 Helper.applyPtrAddZero(*State.MIs[0]);
2604 return true;
2605 }
2606 case GICXXCustomAction_GICombiner83:{
2607 RegisterImmPair GIMatchData_matchinfo;
2608 // Match Patterns
2609 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2610 return false;
2611 }
2612 // Apply Patterns
2613 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2614 return true;
2615 }
2616 case GICXXCustomAction_GICombiner84:{
2617 ShiftOfShiftedLogic GIMatchData_matchinfo;
2618 // Match Patterns
2619 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
2620 return false;
2621 }
2622 // Apply Patterns
2623 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
2624 return true;
2625 }
2626 case GICXXCustomAction_GICombiner85:{
2627 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2628 // Match Patterns
2629 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
2630 return false;
2631 }
2632 // Apply Patterns
2633 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2634 return true;
2635 }
2636 case GICXXCustomAction_GICombiner86:{
2637 MachineInstr * GIMatchData_matchinfo;
2638 // Match Patterns
2639 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
2640 return false;
2641 }
2642 // Apply Patterns
2643 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
2644 return true;
2645 }
2646 case GICXXCustomAction_GICombiner87:{
2647 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2648 // Match Patterns
2649 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], GIMatchData_info);}()) {
2650 return false;
2651 }
2652 // Apply Patterns
2653 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2654 return true;
2655 }
2656 case GICXXCustomAction_GICombiner88:{
2657 // Match Patterns
2658 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
2659 return false;
2660 }
2661 // Apply Patterns
2662 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
2663 return true;
2664 }
2665 case GICXXCustomAction_GICombiner89:{
2666 // Match Patterns
2667 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
2668 return false;
2669 }
2670 // Apply Patterns
2671 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
2672 return true;
2673 }
2674 case GICXXCustomAction_GICombiner90:{
2675 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2676 // Match Patterns
2677 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
2678 return false;
2679 }
2680 // Apply Patterns
2681 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2682 return true;
2683 }
2684 case GICXXCustomAction_GICombiner91:{
2685 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2686 // Match Patterns
2687 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
2688 return false;
2689 }
2690 // Apply Patterns
2691 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2692 return true;
2693 }
2694 case GICXXCustomAction_GICombiner92:{
2695 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2696 // Match Patterns
2697 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
2698 return false;
2699 }
2700 // Apply Patterns
2701 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2702 return true;
2703 }
2704 case GICXXCustomAction_GICombiner93:{
2705 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2706 // Match Patterns
2707 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
2708 return false;
2709 }
2710 // Apply Patterns
2711 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2712 return true;
2713 }
2714 case GICXXCustomAction_GICombiner94:{
2715 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2716 // Match Patterns
2717 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
2718 return false;
2719 }
2720 // Apply Patterns
2721 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2722 return true;
2723 }
2724 case GICXXCustomAction_GICombiner95:{
2725 APInt GIMatchData_matchinfo;
2726 // Match Patterns
2727 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2728 return false;
2729 }
2730 // Apply Patterns
2731 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2732 return true;
2733 }
2734 case GICXXCustomAction_GICombiner96:{
2735 ConstantFP* GIMatchData_matchinfo;
2736 // Match Patterns
2737 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2738 return false;
2739 }
2740 // Apply Patterns
2741 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
2742 return true;
2743 }
2744 case GICXXCustomAction_GICombiner97:{
2745 ConstantFP* GIMatchData_matchinfo;
2746 // Match Patterns
2747 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
2748 return false;
2749 }
2750 // Apply Patterns
2751 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
2752 return true;
2753 }
2754 case GICXXCustomAction_GICombiner98:{
2755 APInt GIMatchData_matchinfo;
2756 // Match Patterns
2757 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2758 return false;
2759 }
2760 // Apply Patterns
2761 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2762 return true;
2763 }
2764 case GICXXCustomAction_GICombiner99:{
2765 // Match Patterns
2766 if(![&](){return Helper.matchUDivByConst(*State.MIs[0]);}()) {
2767 return false;
2768 }
2769 // Apply Patterns
2770 Helper.applyUDivByConst(*State.MIs[0]);
2771 return true;
2772 }
2773 case GICXXCustomAction_GICombiner100:{
2774 // Match Patterns
2775 if(![&](){return Helper.matchSDivByConst(*State.MIs[0]);}()) {
2776 return false;
2777 }
2778 // Apply Patterns
2779 Helper.applySDivByConst(*State.MIs[0]);
2780 return true;
2781 }
2782 case GICXXCustomAction_GICombiner101:{
2783 // Match Patterns
2784 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
2785 return false;
2786 }
2787 // Apply Patterns
2788 Helper.applySDivByPow2(*State.MIs[0]);
2789 return true;
2790 }
2791 case GICXXCustomAction_GICombiner102:{
2792 // Match Patterns
2793 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
2794 return false;
2795 }
2796 // Apply Patterns
2797 Helper.applyUDivByPow2(*State.MIs[0]);
2798 return true;
2799 }
2800 case GICXXCustomAction_GICombiner103:{
2801 // Match Patterns
2802 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
2803 return false;
2804 }
2805 // Apply Patterns
2806 Helper.applyUMulHToLShr(*State.MIs[0]);
2807 return true;
2808 }
2809 case GICXXCustomAction_GICombiner104:{
2810 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2811 // Match Patterns
2812 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
2813 return false;
2814 }
2815 // Apply Patterns
2816 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2817 return true;
2818 }
2819 case GICXXCustomAction_GICombiner105:{
2820 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2821 // Match Patterns
2822 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
2823 return false;
2824 }
2825 // Apply Patterns
2826 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
2827 return true;
2828 }
2829 case GICXXCustomAction_GICombiner106:{
2830 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2831 // Match Patterns
2832 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
2833 GIMatchData_info);}()) {
2834 return false;
2835 }
2836 // Apply Patterns
2837 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2838 return true;
2839 }
2840 case GICXXCustomAction_GICombiner107:{
2841 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2842 // Match Patterns
2843 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
2844 GIMatchData_info);}()) {
2845 return false;
2846 }
2847 // Apply Patterns
2848 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2849 return true;
2850 }
2851 case GICXXCustomAction_GICombiner108:{
2852 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2853 // Match Patterns
2854 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
2855 GIMatchData_info);}()) {
2856 return false;
2857 }
2858 // Apply Patterns
2859 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2860 return true;
2861 }
2862 case GICXXCustomAction_GICombiner109:{
2863 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2864 // Match Patterns
2865 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
2866 *State.MIs[0], GIMatchData_info);}()) {
2867 return false;
2868 }
2869 // Apply Patterns
2870 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2871 return true;
2872 }
2873 case GICXXCustomAction_GICombiner110:{
2874 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2875 // Match Patterns
2876 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
2877 GIMatchData_info);}()) {
2878 return false;
2879 }
2880 // Apply Patterns
2881 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2882 return true;
2883 }
2884 case GICXXCustomAction_GICombiner111:{
2885 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2886 // Match Patterns
2887 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
2888 GIMatchData_info);}()) {
2889 return false;
2890 }
2891 // Apply Patterns
2892 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2893 return true;
2894 }
2895 case GICXXCustomAction_GICombiner112:{
2896 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2897 // Match Patterns
2898 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
2899 GIMatchData_info);}()) {
2900 return false;
2901 }
2902 // Apply Patterns
2903 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2904 return true;
2905 }
2906 case GICXXCustomAction_GICombiner113:{
2907 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2908 // Match Patterns
2909 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
2910 *State.MIs[0], GIMatchData_info);}()) {
2911 return false;
2912 }
2913 // Apply Patterns
2914 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2915 return true;
2916 }
2917 case GICXXCustomAction_GICombiner114:{
2918 unsigned GIMatchData_select_op_no;
2919 // Match Patterns
2920 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
2921 return false;
2922 }
2923 // Apply Patterns
2924 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
2925 return true;
2926 }
2927 case GICXXCustomAction_GICombiner115:{
2928 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2929 // Match Patterns
2930 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
2931 return false;
2932 }
2933 // Apply Patterns
2934 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2935 return true;
2936 }
2937 case GICXXCustomAction_GICombiner116:{
2938 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2939 // Match Patterns
2940 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
2941 return false;
2942 }
2943 // Apply Patterns
2944 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2945 return true;
2946 }
2947 case GICXXCustomAction_GICombiner117:{
2948 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2949 // Match Patterns
2950 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
2951 return false;
2952 }
2953 // Apply Patterns
2954 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2955 return true;
2956 }
2957 case GICXXCustomAction_GICombiner118:{
2958 Register GIMatchData_matchinfo;
2959 // Match Patterns
2960 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
2961 return false;
2962 }
2963 // Apply Patterns
2964 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
2965 return true;
2966 }
2967 case GICXXCustomAction_GICombiner119:{
2968 // Match Patterns
2969 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
2970 return false;
2971 }
2972 // Apply Patterns
2973 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
2974 return true;
2975 }
2976 case GICXXCustomAction_GICombiner120:{
2977 // Match Patterns
2978 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
2979 return false;
2980 }
2981 // Apply Patterns
2982 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
2983 return true;
2984 }
2985 case GICXXCustomAction_GICombiner121:{
2986 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2987 // Match Patterns
2988 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2989 return false;
2990 }
2991 // Apply Patterns
2992 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2993 return true;
2994 }
2995 case GICXXCustomAction_GICombiner122:{
2996 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2997 // Match Patterns
2998 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
2999 return false;
3000 }
3001 // Apply Patterns
3002 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3003 return true;
3004 }
3005 case GICXXCustomAction_GICombiner123:{
3006 SmallVector<Register> GIMatchData_matchinfo;
3007 // Match Patterns
3008 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
3009 return false;
3010 }
3011 // Apply Patterns
3012 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
3013 return true;
3014 }
3015 case GICXXCustomAction_GICombiner124:{
3016 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3017 // Match Patterns
3018 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
3019 return false;
3020 }
3021 // Apply Patterns
3022 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3023 return true;
3024 }
3025 case GICXXCustomAction_GICombiner125:{
3026 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3027 // Match Patterns
3028 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3029 return false;
3030 }
3031 // Apply Patterns
3032 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3033 return true;
3034 }
3035 case GICXXCustomAction_GICombiner126:{
3036 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3037 // Match Patterns
3038 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3039 return false;
3040 }
3041 // Apply Patterns
3042 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3043 return true;
3044 }
3045 case GICXXCustomAction_GICombiner127:{
3046 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3047 // Match Patterns
3048 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3049 return false;
3050 }
3051 // Apply Patterns
3052 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3053 return true;
3054 }
3055 case GICXXCustomAction_GICombiner128:{
3056 SmallVector<Register> GIMatchData_matchinfo;
3057 // Match Patterns
3058 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
3059 return false;
3060 }
3061 // Apply Patterns
3062 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
3063 return true;
3064 }
3065 case GICXXCustomAction_GICombiner129:{
3066 FMinFMaxLegacyInfo GIMatchData_matchinfo;
3067 // Match Patterns
3068 if(![&](){return matchFMinFMaxLegacy(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3069 return false;
3070 }
3071 // Apply Patterns
3072 applySelectFCmpToFMinFMaxLegacy(*State.MIs[0], GIMatchData_matchinfo);
3073 return true;
3074 }
3075 case GICXXCustomAction_GICombiner130:{
3076 // Match Patterns
3077 if(![&](){return Helper.matchExpandPromotedF16FMed3(*State.MIs[0], State.MIs[1]->getOperand(1).getReg(), State.MIs[1]->getOperand(2).getReg(), State.MIs[1]->getOperand(3).getReg());}()) {
3078 return false;
3079 }
3080 // Apply Patterns
3081 Helper.applyExpandPromotedF16FMed3(*State.MIs[0], State.MIs[1]->getOperand(1).getReg(), State.MIs[1]->getOperand(2).getReg(), State.MIs[1]->getOperand(3).getReg());
3082 return true;
3083 }
3084 case GICXXCustomAction_GICombiner131:{
3085 // Match Patterns
3086 if(![&](){return matchUCharToFloat(*State.MIs[0]);}()) {
3087 return false;
3088 }
3089 // Apply Patterns
3090 applyUCharToFloat(*State.MIs[0]);
3091 return true;
3092 }
3093 case GICXXCustomAction_GICombiner132:{
3094 CvtF32UByteMatchInfo GIMatchData_matchinfo;
3095 // Match Patterns
3096 if(![&](){return matchCvtF32UByteN(*State.MIs[0], GIMatchData_matchinfo);}()) {
3097 return false;
3098 }
3099 // Apply Patterns
3100 applyCvtF32UByteN(*State.MIs[0], GIMatchData_matchinfo);
3101 return true;
3102 }
3103 case GICXXCustomAction_GICombiner133:{
3104 Register GIMatchData_matchinfo;
3105 // Match Patterns
3106 if(![&](){return matchRemoveFcanonicalize(*State.MIs[0], GIMatchData_matchinfo);}()) {
3107 return false;
3108 }
3109 // Apply Patterns
3110 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3111 return true;
3112 }
3113 case GICXXCustomAction_GICombiner134:{
3114 MachineInstr * GIMatchData_matchinfo;
3115 // Match Patterns
3116 if(![&](){return Helper.matchFoldableFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3117 return false;
3118 }
3119 // Apply Patterns
3120 Helper.applyFoldableFneg(*State.MIs[0], GIMatchData_matchinfo);
3121 return true;
3122 }
3123 case GICXXCustomAction_GICombiner135:{
3124 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3125 // Match Patterns
3126 if(![&](){return matchRcpSqrtToRsq(*State.MIs[0], GIMatchData_matchinfo);}()) {
3127 return false;
3128 }
3129 // Apply Patterns
3130 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3131 return true;
3132 }
3133 case GICXXCustomAction_GICombiner136:{
3134 // Match Patterns
3135 if(![&](){return matchFDivSqrtToRsqF16(*State.MIs[0]);}()) {
3136 return false;
3137 }
3138 // Apply Patterns
3139 applyFDivSqrtToRsqF16(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
3140 return true;
3141 }
3142 case GICXXCustomAction_GICombiner137:{
3143 std::pair<MachineInstr *, unsigned> GIMatchData_matchinfo;
3144 // Match Patterns
3145 if(![&](){return matchCombineSignExtendInReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3146 return false;
3147 }
3148 // Apply Patterns
3149 applyCombineSignExtendInReg(*State.MIs[0], GIMatchData_matchinfo);
3150 return true;
3151 }
3152 case GICXXCustomAction_GICombiner138:{
3153 unsigned GIMatchData_matchinfo;
3154 // Match Patterns
3155 if(![&](){return matchCombine_s_mul_u64(*State.MIs[0], GIMatchData_matchinfo);}()) {
3156 return false;
3157 }
3158 // Apply Patterns
3159 Helper.replaceOpcodeWith(*State.MIs[0], GIMatchData_matchinfo);
3160 return true;
3161 }
3162 }
3163 llvm_unreachable("Unknown Apply Action");
3164}
3165#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
3166#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((uint16_t)Val >> 8)
3167#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((uint32_t)Val >> 8), uint8_t((uint32_t)Val >> 16), uint8_t((uint32_t)Val >> 24)
3168#define GIMT_Encode8(Val) uint8_t(Val), uint8_t((uint64_t)Val >> 8), uint8_t((uint64_t)Val >> 16), uint8_t((uint64_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)
3169#else
3170#define GIMT_Encode2(Val) uint8_t((uint16_t)Val >> 8), uint8_t(Val)
3171#define GIMT_Encode4(Val) uint8_t((uint32_t)Val >> 24), uint8_t((uint32_t)Val >> 16), uint8_t((uint32_t)Val >> 8), uint8_t(Val)
3172#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((uint64_t)Val >> 24), uint8_t((uint64_t)Val >> 16), uint8_t((uint64_t)Val >> 8), uint8_t(Val)
3173#endif
3174const uint8_t *AMDGPUPostLegalizerCombinerImpl::getMatchTable() const {
3175 constexpr static uint8_t MatchTable0[] = {
3176 GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(19), GIMT_Encode2(3625), /*)*//*default:*//*Label 97*/ GIMT_Encode4(19844),
3177 /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(14434), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3178 /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(14446),
3179 /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(14966),
3180 /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(15061),
3181 /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(15238),
3182 /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(15300),
3183 /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(15373),
3184 /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(15407), GIMT_Encode4(0), GIMT_Encode4(0),
3185 /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(15463),
3186 /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(15744),
3187 /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(15989), GIMT_Encode4(0),
3188 /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(16090), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3189 /*TargetOpcode::G_UNMERGE_VALUES*//*Label 12*/ GIMT_Encode4(16102), GIMT_Encode4(0),
3190 /*TargetOpcode::G_MERGE_VALUES*//*Label 13*/ GIMT_Encode4(16158),
3191 /*TargetOpcode::G_BUILD_VECTOR*//*Label 14*/ GIMT_Encode4(16170),
3192 /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 15*/ GIMT_Encode4(16193),
3193 /*TargetOpcode::G_CONCAT_VECTORS*//*Label 16*/ GIMT_Encode4(16205),
3194 /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(16217),
3195 /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(16239),
3196 /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(16251),
3197 /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(16273), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3198 /*TargetOpcode::G_LOAD*//*Label 21*/ GIMT_Encode4(16337),
3199 /*TargetOpcode::G_SEXTLOAD*//*Label 22*/ GIMT_Encode4(16349),
3200 /*TargetOpcode::G_ZEXTLOAD*//*Label 23*/ GIMT_Encode4(16361), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3201 /*TargetOpcode::G_STORE*//*Label 24*/ GIMT_Encode4(16373), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3202 /*TargetOpcode::G_INTRINSIC*//*Label 25*/ GIMT_Encode4(16385), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3203 /*TargetOpcode::G_ANYEXT*//*Label 26*/ GIMT_Encode4(16397),
3204 /*TargetOpcode::G_TRUNC*//*Label 27*/ GIMT_Encode4(16431), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3205 /*TargetOpcode::G_SEXT*//*Label 28*/ GIMT_Encode4(16487),
3206 /*TargetOpcode::G_SEXT_INREG*//*Label 29*/ GIMT_Encode4(16537),
3207 /*TargetOpcode::G_ZEXT*//*Label 30*/ GIMT_Encode4(16593),
3208 /*TargetOpcode::G_SHL*//*Label 31*/ GIMT_Encode4(16671),
3209 /*TargetOpcode::G_LSHR*//*Label 32*/ GIMT_Encode4(16829),
3210 /*TargetOpcode::G_ASHR*//*Label 33*/ GIMT_Encode4(16941),
3211 /*TargetOpcode::G_FSHL*//*Label 34*/ GIMT_Encode4(17064),
3212 /*TargetOpcode::G_FSHR*//*Label 35*/ GIMT_Encode4(17107),
3213 /*TargetOpcode::G_ROTR*//*Label 36*/ GIMT_Encode4(17150),
3214 /*TargetOpcode::G_ROTL*//*Label 37*/ GIMT_Encode4(17174),
3215 /*TargetOpcode::G_ICMP*//*Label 38*/ GIMT_Encode4(17198), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3216 /*TargetOpcode::G_SELECT*//*Label 39*/ GIMT_Encode4(17232),
3217 /*TargetOpcode::G_UADDO*//*Label 40*/ GIMT_Encode4(17354),
3218 /*TargetOpcode::G_UADDE*//*Label 41*/ GIMT_Encode4(17377), GIMT_Encode4(0),
3219 /*TargetOpcode::G_USUBE*//*Label 42*/ GIMT_Encode4(17389),
3220 /*TargetOpcode::G_SADDO*//*Label 43*/ GIMT_Encode4(17401),
3221 /*TargetOpcode::G_SADDE*//*Label 44*/ GIMT_Encode4(17424), GIMT_Encode4(0),
3222 /*TargetOpcode::G_SSUBE*//*Label 45*/ GIMT_Encode4(17436),
3223 /*TargetOpcode::G_UMULO*//*Label 46*/ GIMT_Encode4(17448),
3224 /*TargetOpcode::G_SMULO*//*Label 47*/ GIMT_Encode4(17482),
3225 /*TargetOpcode::G_UMULH*//*Label 48*/ GIMT_Encode4(17516),
3226 /*TargetOpcode::G_SMULH*//*Label 49*/ GIMT_Encode4(17539),
3227 /*TargetOpcode::G_UADDSAT*//*Label 50*/ GIMT_Encode4(17551),
3228 /*TargetOpcode::G_SADDSAT*//*Label 51*/ GIMT_Encode4(17563), GIMT_Encode4(0), GIMT_Encode4(0),
3229 /*TargetOpcode::G_USHLSAT*//*Label 52*/ GIMT_Encode4(17575),
3230 /*TargetOpcode::G_SSHLSAT*//*Label 53*/ GIMT_Encode4(17598),
3231 /*TargetOpcode::G_SMULFIX*//*Label 54*/ GIMT_Encode4(17621),
3232 /*TargetOpcode::G_UMULFIX*//*Label 55*/ GIMT_Encode4(17633),
3233 /*TargetOpcode::G_SMULFIXSAT*//*Label 56*/ GIMT_Encode4(17645),
3234 /*TargetOpcode::G_UMULFIXSAT*//*Label 57*/ GIMT_Encode4(17657), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3235 /*TargetOpcode::G_FADD*//*Label 58*/ GIMT_Encode4(17669),
3236 /*TargetOpcode::G_FSUB*//*Label 59*/ GIMT_Encode4(17781),
3237 /*TargetOpcode::G_FMUL*//*Label 60*/ GIMT_Encode4(17870),
3238 /*TargetOpcode::G_FMA*//*Label 61*/ GIMT_Encode4(17958),
3239 /*TargetOpcode::G_FMAD*//*Label 62*/ GIMT_Encode4(17981),
3240 /*TargetOpcode::G_FDIV*//*Label 63*/ GIMT_Encode4(18004),
3241 /*TargetOpcode::G_FREM*//*Label 64*/ GIMT_Encode4(18077), GIMT_Encode4(0),
3242 /*TargetOpcode::G_FPOWI*//*Label 65*/ GIMT_Encode4(18089), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3243 /*TargetOpcode::G_FLOG2*//*Label 66*/ GIMT_Encode4(18111), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3244 /*TargetOpcode::G_FNEG*//*Label 67*/ GIMT_Encode4(18133), GIMT_Encode4(0),
3245 /*TargetOpcode::G_FPTRUNC*//*Label 68*/ GIMT_Encode4(18195),
3246 /*TargetOpcode::G_FPTOSI*//*Label 69*/ GIMT_Encode4(18262),
3247 /*TargetOpcode::G_FPTOUI*//*Label 70*/ GIMT_Encode4(18274),
3248 /*TargetOpcode::G_SITOFP*//*Label 71*/ GIMT_Encode4(18286),
3249 /*TargetOpcode::G_UITOFP*//*Label 72*/ GIMT_Encode4(18324),
3250 /*TargetOpcode::G_FABS*//*Label 73*/ GIMT_Encode4(18362), GIMT_Encode4(0), GIMT_Encode4(0),
3251 /*TargetOpcode::G_FCANONICALIZE*//*Label 74*/ GIMT_Encode4(18441),
3252 /*TargetOpcode::G_FMINNUM*//*Label 75*/ GIMT_Encode4(18482),
3253 /*TargetOpcode::G_FMAXNUM*//*Label 76*/ GIMT_Encode4(18516),
3254 /*TargetOpcode::G_FMINNUM_IEEE*//*Label 77*/ GIMT_Encode4(18550),
3255 /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 78*/ GIMT_Encode4(18562),
3256 /*TargetOpcode::G_FMINIMUM*//*Label 79*/ GIMT_Encode4(18574),
3257 /*TargetOpcode::G_FMAXIMUM*//*Label 80*/ GIMT_Encode4(18608), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3258 /*TargetOpcode::G_PTR_ADD*//*Label 81*/ GIMT_Encode4(18642), GIMT_Encode4(0),
3259 /*TargetOpcode::G_SMIN*//*Label 82*/ GIMT_Encode4(18721),
3260 /*TargetOpcode::G_SMAX*//*Label 83*/ GIMT_Encode4(18744),
3261 /*TargetOpcode::G_UMIN*//*Label 84*/ GIMT_Encode4(18767),
3262 /*TargetOpcode::G_UMAX*//*Label 85*/ GIMT_Encode4(18790),
3263 /*TargetOpcode::G_ABS*//*Label 86*/ GIMT_Encode4(18813), GIMT_Encode4(0), GIMT_Encode4(0),
3264 /*TargetOpcode::G_BR*//*Label 87*/ GIMT_Encode4(18825), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3265 /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 88*/ GIMT_Encode4(18837),
3266 /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 89*/ GIMT_Encode4(18967),
3267 /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 90*/ GIMT_Encode4(19640), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3268 /*TargetOpcode::G_BITREVERSE*//*Label 91*/ GIMT_Encode4(19674), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3269 /*TargetOpcode::G_FSQRT*//*Label 92*/ GIMT_Encode4(19763), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3270 /*AMDGPU::G_AMDGPU_CVT_F32_UBYTE0*//*Label 93*/ GIMT_Encode4(19796),
3271 /*AMDGPU::G_AMDGPU_CVT_F32_UBYTE1*//*Label 94*/ GIMT_Encode4(19808),
3272 /*AMDGPU::G_AMDGPU_CVT_F32_UBYTE2*//*Label 95*/ GIMT_Encode4(19820),
3273 /*AMDGPU::G_AMDGPU_CVT_F32_UBYTE3*//*Label 96*/ GIMT_Encode4(19832),
3274 // Label 0: @14434
3275 GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(14445), // Rule ID 8 //
3276 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
3277 // MIs[0] d
3278 // No operand predicates
3279 // MIs[0] s
3280 // No operand predicates
3281 // Combiner Rule #8: copy_prop
3282 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
3283 // Label 98: @14445
3284 GIM_Reject,
3285 // Label 1: @14446
3286 GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(14457), // Rule ID 10 //
3287 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
3288 // Combiner Rule #10: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
3289 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3290 // Label 99: @14457
3291 GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(14468), // Rule ID 72 //
3292 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
3293 // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_ADD'
3294 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
3295 // Label 100: @14468
3296 GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(14479), // Rule ID 119 //
3297 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
3298 // Combiner Rule #88: simplify_add_to_sub; wip_match_opcode 'G_ADD'
3299 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
3300 // Label 101: @14479
3301 GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(14490), // Rule ID 212 //
3302 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
3303 // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_ADD'
3304 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
3305 // Label 102: @14490
3306 GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(14501), // Rule ID 251 //
3307 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
3308 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_ADD'
3309 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
3310 // Label 103: @14501
3311 GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(14512), // Rule ID 281 //
3312 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
3313 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
3314 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
3315 // Label 104: @14512
3316 GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(14546), // Rule ID 0 //
3317 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
3318 // MIs[0] root
3319 // No operand predicates
3320 // MIs[0] sub
3321 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3322 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
3323 // MIs[1] Operand 1
3324 GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
3325 // MIs[1] A
3326 // No operand predicates
3327 // MIs[0] B
3328 // No operand predicates
3329 GIM_CheckIsSafeToFold, /*NumInsns*/1,
3330 // Combiner Rule #0: ZeroMinusAPlusB
3331 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
3332 GIR_RootToRootCopy, /*OpIdx*/0, // root
3333 GIR_RootToRootCopy, /*OpIdx*/2, // B
3334 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
3335 GIR_EraseRootFromParent_Done,
3336 // Label 105: @14546
3337 GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(14580), // Rule ID 3 //
3338 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
3339 // MIs[0] root
3340 // No operand predicates
3341 // MIs[0] sub
3342 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3343 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
3344 // MIs[1] B
3345 // No operand predicates
3346 // MIs[1] A
3347 // No operand predicates
3348 // MIs[0] A
3349 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
3350 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3351 GIM_CheckIsSafeToFold, /*NumInsns*/1,
3352 // Combiner Rule #3: BMinusAPlusA
3353 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3354 GIR_EraseRootFromParent_Done,
3355 // Label 106: @14580
3356 GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(14614), // Rule ID 109 //
3357 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
3358 // MIs[0] dst
3359 // No operand predicates
3360 // MIs[0] __add_sub_reg_match_0.tmp
3361 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3362 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
3363 // MIs[1] src
3364 // No operand predicates
3365 // MIs[1] __add_sub_reg_match_0.x
3366 // No operand predicates
3367 // MIs[0] __add_sub_reg_match_0.x
3368 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
3369 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3370 GIM_CheckIsSafeToFold, /*NumInsns*/1,
3371 // Combiner Rule #79: add_sub_reg @ [__add_sub_reg_match_0[1]]
3372 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3373 GIR_EraseRootFromParent_Done,
3374 // Label 107: @14614
3375 GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(14659), // Rule ID 5 //
3376 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
3377 // MIs[0] root
3378 // No operand predicates
3379 // MIs[0] sub1
3380 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3381 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
3382 // MIs[1] A
3383 // No operand predicates
3384 // MIs[1] B
3385 // No operand predicates
3386 // MIs[0] sub2
3387 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
3388 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
3389 // MIs[2] B
3390 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
3391 // MIs[2] C
3392 // No operand predicates
3393 GIM_CheckIsSafeToFold, /*NumInsns*/2,
3394 // Combiner Rule #5: AMinusBPlusBMinusC
3395 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
3396 GIR_RootToRootCopy, /*OpIdx*/0, // root
3397 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
3398 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
3399 GIR_EraseRootFromParent_Done,
3400 // Label 108: @14659
3401 GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(14704), // Rule ID 4 //
3402 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
3403 // MIs[0] root
3404 // No operand predicates
3405 // MIs[0] sub1
3406 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3407 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
3408 // MIs[1] A
3409 // No operand predicates
3410 // MIs[1] B
3411 // No operand predicates
3412 // MIs[0] sub2
3413 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
3414 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
3415 // MIs[2] C
3416 // No operand predicates
3417 // MIs[2] A
3418 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
3419 GIM_CheckIsSafeToFold, /*NumInsns*/2,
3420 // Combiner Rule #4: AMinusBPlusCMinusA
3421 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
3422 GIR_RootToRootCopy, /*OpIdx*/0, // root
3423 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
3424 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
3425 GIR_EraseRootFromParent_Done,
3426 // Label 109: @14704
3427 GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(14739), // Rule ID 46 //
3428 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
3429 GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
3430 // MIs[0] root
3431 // No operand predicates
3432 // MIs[0] left
3433 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3434 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
3435 // MIs[1] imm1
3436 // No operand predicates
3437 // MIs[0] right
3438 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
3439 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
3440 // MIs[2] imm2
3441 // No operand predicates
3442 GIM_CheckIsSafeToFold, /*NumInsns*/2,
3443 // Combiner Rule #44: add_of_vscale
3444 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
3445 // Label 110: @14739
3446 GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(14773), // Rule ID 1 //
3447 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
3448 // MIs[0] root
3449 // No operand predicates
3450 // MIs[0] A
3451 // No operand predicates
3452 // MIs[0] sub
3453 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3454 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
3455 // MIs[1] Operand 1
3456 GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
3457 // MIs[1] B
3458 // No operand predicates
3459 GIM_CheckIsSafeToFold, /*NumInsns*/1,
3460 // Combiner Rule #1: APlusZeroMinusB
3461 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
3462 GIR_RootToRootCopy, /*OpIdx*/0, // root
3463 GIR_RootToRootCopy, /*OpIdx*/1, // A
3464 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
3465 GIR_EraseRootFromParent_Done,
3466 // Label 111: @14773
3467 GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(14807), // Rule ID 2 //
3468 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
3469 // MIs[0] root
3470 // No operand predicates
3471 // MIs[0] A
3472 // No operand predicates
3473 // MIs[0] sub
3474 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3475 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
3476 // MIs[1] B
3477 // No operand predicates
3478 // MIs[1] A
3479 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
3480 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3481 GIM_CheckIsSafeToFold, /*NumInsns*/1,
3482 // Combiner Rule #2: APlusBMinusB
3483 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3484 GIR_EraseRootFromParent_Done,
3485 // Label 112: @14807
3486 GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(14841), // Rule ID 108 //
3487 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
3488 // MIs[0] dst
3489 // No operand predicates
3490 // MIs[0] __add_sub_reg_match_0.x
3491 // No operand predicates
3492 // MIs[0] __add_sub_reg_match_0.tmp
3493 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3494 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
3495 // MIs[1] src
3496 // No operand predicates
3497 // MIs[1] __add_sub_reg_match_0.x
3498 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
3499 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3500 GIM_CheckIsSafeToFold, /*NumInsns*/1,
3501 // Combiner Rule #79: add_sub_reg @ [__add_sub_reg_match_0[0]]
3502 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3503 GIR_EraseRootFromParent_Done,
3504 // Label 113: @14841
3505 GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(14886), // Rule ID 6 //
3506 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
3507 // MIs[0] root
3508 // No operand predicates
3509 // MIs[0] A
3510 // No operand predicates
3511 // MIs[0] sub1
3512 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3513 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
3514 // MIs[1] B
3515 // No operand predicates
3516 // MIs[1] add1
3517 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
3518 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
3519 // MIs[2] A
3520 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
3521 // MIs[2] C
3522 // No operand predicates
3523 GIM_CheckIsSafeToFold, /*NumInsns*/2,
3524 // Combiner Rule #6: APlusBMinusAplusC
3525 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
3526 GIR_RootToRootCopy, /*OpIdx*/0, // root
3527 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
3528 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
3529 GIR_EraseRootFromParent_Done,
3530 // Label 114: @14886
3531 GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(14931), // Rule ID 7 //
3532 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
3533 // MIs[0] root
3534 // No operand predicates
3535 // MIs[0] A
3536 // No operand predicates
3537 // MIs[0] sub1
3538 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3539 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
3540 // MIs[1] B
3541 // No operand predicates
3542 // MIs[1] add1
3543 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
3544 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
3545 // MIs[2] C
3546 // No operand predicates
3547 // MIs[2] A
3548 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
3549 GIM_CheckIsSafeToFold, /*NumInsns*/2,
3550 // Combiner Rule #7: APlusBMinusCPlusA
3551 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
3552 GIR_RootToRootCopy, /*OpIdx*/0, // root
3553 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
3554 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
3555 GIR_EraseRootFromParent_Done,
3556 // Label 115: @14931
3557 GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(14954), // Rule ID 86 //
3558 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
3559 // MIs[0] dst
3560 // No operand predicates
3561 // MIs[0] lhs
3562 // No operand predicates
3563 // MIs[0] Operand 2
3564 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3565 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3566 // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[1]]
3567 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3568 GIR_EraseRootFromParent_Done,
3569 // Label 116: @14954
3570 GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(14965), // Rule ID 127 //
3571 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
3572 // MIs[0] root
3573 // No operand predicates
3574 // MIs[0] src1
3575 // No operand predicates
3576 // MIs[0] src2
3577 // No operand predicates
3578 // Combiner Rule #92: reassoc_comm_binops
3579 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
3580 // Label 117: @14965
3581 GIM_Reject,
3582 // Label 2: @14966
3583 GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(14977), // Rule ID 75 //
3584 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
3585 // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_SUB'
3586 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
3587 // Label 118: @14977
3588 GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(14988), // Rule ID 213 //
3589 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
3590 // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_SUB'
3591 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
3592 // Label 119: @14988
3593 GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(14999), // Rule ID 252 //
3594 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
3595 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SUB'
3596 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
3597 // Label 120: @14999
3598 GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(15010), // Rule ID 277 //
3599 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
3600 // Combiner Rule #173: sub_add_reg; wip_match_opcode 'G_SUB'
3601 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
3602 // Label 121: @15010
3603 GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(15037), // Rule ID 49 //
3604 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
3605 GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
3606 // MIs[0] root
3607 // No operand predicates
3608 // MIs[0] x
3609 // No operand predicates
3610 // MIs[0] right
3611 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3612 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
3613 // MIs[1] imm
3614 // No operand predicates
3615 GIM_CheckIsSafeToFold, /*NumInsns*/1,
3616 // Combiner Rule #47: sub_of_vscale
3617 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
3618 // Label 122: @15037
3619 GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(15060), // Rule ID 85 //
3620 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
3621 // MIs[0] dst
3622 // No operand predicates
3623 // MIs[0] lhs
3624 // No operand predicates
3625 // MIs[0] Operand 2
3626 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3627 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3628 // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[0]]
3629 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3630 GIR_EraseRootFromParent_Done,
3631 // Label 123: @15060
3632 GIM_Reject,
3633 // Label 3: @15061
3634 GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(15072), // Rule ID 63 //
3635 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
3636 // Combiner Rule #57: undef_to_int_zero; wip_match_opcode 'G_MUL'
3637 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
3638 // Label 124: @15072
3639 GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(15083), // Rule ID 214 //
3640 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
3641 // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_MUL'
3642 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
3643 // Label 125: @15083
3644 GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(15094), // Rule ID 282 //
3645 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
3646 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
3647 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
3648 // Label 126: @15094
3649 GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(15105), // Rule ID 335 //
3650 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
3651 // Combiner Rule #198: smulu64; wip_match_opcode 'G_MUL'
3652 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
3653 // Label 127: @15105
3654 GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(15145), // Rule ID 11 //
3655 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
3656 // MIs[0] dst
3657 GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/uint8_t(-1),
3658 // MIs[0] x
3659 // No operand predicates
3660 // MIs[0] Operand 2
3661 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, uint8_t(-1),
3662 GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/uint8_t(-1),
3663 GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
3664 // Combiner Rule #11: mul_by_neg_one
3665 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
3666 GIR_RootToRootCopy, /*OpIdx*/0, // dst
3667 GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
3668 GIR_RootToRootCopy, /*OpIdx*/1, // x
3669 GIR_EraseRootFromParent_Done,
3670 // Label 128: @15145
3671 GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(15180), // Rule ID 47 //
3672 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
3673 GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
3674 // MIs[0] root
3675 // No operand predicates
3676 // MIs[0] left
3677 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3678 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
3679 // MIs[1] scale
3680 // No operand predicates
3681 // MIs[0] x
3682 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
3683 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3684 // MIs[2] imm1
3685 // No operand predicates
3686 GIM_CheckIsSafeToFold, /*NumInsns*/2,
3687 // Combiner Rule #45: mul_of_vscale
3688 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
3689 // Label 129: @15180
3690 GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(15203), // Rule ID 101 //
3691 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
3692 // MIs[0] dst
3693 // No operand predicates
3694 // MIs[0] lhs
3695 // No operand predicates
3696 // MIs[0] zero
3697 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3698 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
3699 // Combiner Rule #72: binop_right_to_zero
3700 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
3701 GIR_EraseRootFromParent_Done,
3702 // Label 130: @15203
3703 GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(15226), // Rule ID 106 //
3704 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
3705 // MIs[0] dst
3706 // No operand predicates
3707 // MIs[0] x
3708 // No operand predicates
3709 // MIs[0] Operand 2
3710 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
3711 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3712 // Combiner Rule #77: right_identity_one_int
3713 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3714 GIR_EraseRootFromParent_Done,
3715 // Label 131: @15226
3716 GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(15237), // Rule ID 9 //
3717 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
3718 // MIs[0] d
3719 // No operand predicates
3720 // MIs[0] op1
3721 // No operand predicates
3722 // MIs[0] op2
3723 // No operand predicates
3724 // Combiner Rule #9: mul_to_shl
3725 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
3726 // Label 132: @15237
3727 GIM_Reject,
3728 // Label 4: @15238
3729 GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(15249), // Rule ID 97 //
3730 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
3731 // Combiner Rule #71: binop_left_to_zero; wip_match_opcode 'G_SDIV'
3732 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
3733 // Label 133: @15249
3734 GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(15260), // Rule ID 192 //
3735 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
3736 // Combiner Rule #139: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
3737 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
3738 // Label 134: @15260
3739 GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(15271), // Rule ID 232 //
3740 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
3741 // Combiner Rule #158: sdiv_by_const; wip_match_opcode 'G_SDIV'
3742 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
3743 // Label 135: @15271
3744 GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(15282), // Rule ID 257 //
3745 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
3746 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SDIV'
3747 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
3748 // Label 136: @15282
3749 GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(15299), // Rule ID 233 //
3750 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
3751 GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
3752 // MIs[0] dst
3753 // No operand predicates
3754 // MIs[0] x
3755 // No operand predicates
3756 // MIs[0] y
3757 // No operand predicates
3758 // Combiner Rule #159: sdiv_by_pow2
3759 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
3760 // Label 137: @15299
3761 GIM_Reject,
3762 // Label 5: @15300
3763 GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(15311), // Rule ID 66 //
3764 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
3765 // Combiner Rule #59: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
3766 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
3767 // Label 138: @15311
3768 GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(15322), // Rule ID 98 //
3769 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
3770 // Combiner Rule #71: binop_left_to_zero; wip_match_opcode 'G_UDIV'
3771 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
3772 // Label 139: @15322
3773 GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(15333), // Rule ID 193 //
3774 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
3775 // Combiner Rule #139: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
3776 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
3777 // Label 140: @15333
3778 GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(15344), // Rule ID 231 //
3779 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
3780 // Combiner Rule #157: udiv_by_const; wip_match_opcode 'G_UDIV'
3781 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
3782 // Label 141: @15344
3783 GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(15355), // Rule ID 259 //
3784 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
3785 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_UDIV'
3786 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
3787 // Label 142: @15355
3788 GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(15372), // Rule ID 234 //
3789 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
3790 GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
3791 // MIs[0] dst
3792 // No operand predicates
3793 // MIs[0] x
3794 // No operand predicates
3795 // MIs[0] y
3796 // No operand predicates
3797 // Combiner Rule #160: udiv_by_pow2
3798 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
3799 // Label 143: @15372
3800 GIM_Reject,
3801 // Label 6: @15373
3802 GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(15384), // Rule ID 99 //
3803 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
3804 // Combiner Rule #71: binop_left_to_zero; wip_match_opcode 'G_SREM'
3805 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
3806 // Label 144: @15384
3807 GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(15395), // Rule ID 194 //
3808 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
3809 // Combiner Rule #139: div_rem_to_divrem; wip_match_opcode 'G_SREM'
3810 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
3811 // Label 145: @15395
3812 GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(15406), // Rule ID 258 //
3813 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
3814 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SREM'
3815 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
3816 // Label 146: @15406
3817 GIM_Reject,
3818 // Label 7: @15407
3819 GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(15418), // Rule ID 67 //
3820 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
3821 // Combiner Rule #59: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
3822 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
3823 // Label 147: @15418
3824 GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(15429), // Rule ID 100 //
3825 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
3826 // Combiner Rule #71: binop_left_to_zero; wip_match_opcode 'G_UREM'
3827 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
3828 // Label 148: @15429
3829 GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(15440), // Rule ID 140 //
3830 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3831 // Combiner Rule #105: urem_pow2_to_mask; wip_match_opcode 'G_UREM'
3832 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
3833 // Label 149: @15440
3834 GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(15451), // Rule ID 195 //
3835 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
3836 // Combiner Rule #139: div_rem_to_divrem; wip_match_opcode 'G_UREM'
3837 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
3838 // Label 150: @15451
3839 GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(15462), // Rule ID 260 //
3840 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
3841 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_UREM'
3842 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
3843 // Label 151: @15462
3844 GIM_Reject,
3845 // Label 8: @15463
3846 GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(15474), // Rule ID 58 //
3847 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
3848 // Combiner Rule #54: load_and_mask; wip_match_opcode 'G_AND'
3849 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
3850 // Label 152: @15474
3851 GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(15485), // Rule ID 62 //
3852 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
3853 // Combiner Rule #57: undef_to_int_zero; wip_match_opcode 'G_AND'
3854 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
3855 // Label 153: @15485
3856 GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(15496), // Rule ID 120 //
3857 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
3858 // Combiner Rule #89: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
3859 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
3860 // Label 154: @15496
3861 GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(15507), // Rule ID 132 //
3862 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
3863 // Combiner Rule #97: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
3864 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
3865 // Label 155: @15507
3866 GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(15518), // Rule ID 137 //
3867 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
3868 // Combiner Rule #102: redundant_and; wip_match_opcode 'G_AND'
3869 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
3870 // Label 156: @15518
3871 GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(15529), // Rule ID 165 //
3872 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
3873 // Combiner Rule #128: overlapping_and; wip_match_opcode 'G_AND'
3874 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
3875 // Label 157: @15529
3876 GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(15540), // Rule ID 215 //
3877 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
3878 // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_AND'
3879 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
3880 // Label 158: @15540
3881 GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(15551), // Rule ID 242 //
3882 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
3883 // Combiner Rule #163: and_or_disjoint_mask; wip_match_opcode 'G_AND'
3884 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
3885 // Label 159: @15551
3886 GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(15562), // Rule ID 254 //
3887 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
3888 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_AND'
3889 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
3890 // Label 160: @15562
3891 GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(15573), // Rule ID 283 //
3892 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
3893 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
3894 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
3895 // Label 161: @15573
3896 GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(15584), // Rule ID 310 //
3897 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
3898 // Combiner Rule #179: match_ands; wip_match_opcode 'G_AND'
3899 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
3900 // Label 162: @15584
3901 GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(15682), // Rule ID 313 //
3902 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
3903 // MIs[0] root
3904 // No operand predicates
3905 // MIs[0] d1
3906 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3907 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
3908 // MIs[1] p
3909 // No operand predicates
3910 // MIs[1] s1
3911 GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/uint8_t(-1),
3912 // MIs[1] Operand 3
3913 GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
3914 // MIs[0] d2
3915 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
3916 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
3917 // MIs[2] p
3918 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
3919 // MIs[2] s2
3920 // No operand predicates
3921 // MIs[2] Operand 3
3922 GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
3923 GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
3924 GIM_CheckIsSafeToFold, /*NumInsns*/2,
3925 GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/uint8_t(-1),
3926 GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
3927 GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/uint8_t(-1),
3928 // Combiner Rule #182: double_icmp_zero_and_combine
3929 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
3930 GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
3931 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
3932 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
3933 GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
3934 GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
3935 GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
3936 GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
3937 GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
3938 GIR_EraseRootFromParent_Done,
3939 // Label 163: @15682
3940 GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(15719), // Rule ID 207 //
3941 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
3942 // MIs[0] root
3943 // No operand predicates
3944 // MIs[0] shift
3945 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3946 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
3947 // MIs[1] x
3948 // No operand predicates
3949 // MIs[1] lsb
3950 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
3951 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3952 // MIs[2] imm1
3953 // No operand predicates
3954 // MIs[0] mask
3955 GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
3956 GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3957 // MIs[3] imm2
3958 // No operand predicates
3959 GIM_CheckIsSafeToFold, /*NumInsns*/3,
3960 // Combiner Rule #149: bitfield_extract_from_and
3961 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
3962 // Label 164: @15719
3963 GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(15743), // Rule ID 95 //
3964 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
3965 // MIs[0] dst
3966 // No operand predicates
3967 // MIs[0] src
3968 // No operand predicates
3969 // MIs[0] src
3970 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
3971 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3972 // Combiner Rule #70: binop_same_val @ [__binop_same_val_match_0[0]]
3973 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3974 GIR_EraseRootFromParent_Done,
3975 // Label 165: @15743
3976 GIM_Reject,
3977 // Label 9: @15744
3978 GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(15755), // Rule ID 64 //
3979 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
3980 // Combiner Rule #58: undef_to_negative_one; wip_match_opcode 'G_OR'
3981 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
3982 // Label 166: @15755
3983 GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(15766), // Rule ID 121 //
3984 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
3985 // Combiner Rule #89: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
3986 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
3987 // Label 167: @15766
3988 GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(15777), // Rule ID 139 //
3989 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
3990 // Combiner Rule #104: redundant_or; wip_match_opcode 'G_OR'
3991 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
3992 // Label 168: @15777
3993 GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(15788), // Rule ID 191 //
3994 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
3995 // Combiner Rule #138: load_or_combine; wip_match_opcode 'G_OR'
3996 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
3997 // Label 169: @15788
3998 GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(15799), // Rule ID 196 //
3999 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
4000 // Combiner Rule #140: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
4001 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
4002 // Label 170: @15799
4003 GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(15810), // Rule ID 216 //
4004 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
4005 // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_OR'
4006 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
4007 // Label 171: @15810
4008 GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(15821), // Rule ID 255 //
4009 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
4010 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_OR'
4011 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
4012 // Label 172: @15821
4013 GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(15832), // Rule ID 284 //
4014 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4015 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
4016 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4017 // Label 173: @15832
4018 GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(15843), // Rule ID 311 //
4019 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
4020 // Combiner Rule #180: match_ors; wip_match_opcode 'G_OR'
4021 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
4022 // Label 174: @15843
4023 GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(15941), // Rule ID 314 //
4024 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
4025 // MIs[0] root
4026 // No operand predicates
4027 // MIs[0] d1
4028 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4029 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
4030 // MIs[1] p
4031 // No operand predicates
4032 // MIs[1] s1
4033 GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/uint8_t(-1),
4034 // MIs[1] Operand 3
4035 GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
4036 // MIs[0] d2
4037 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4038 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
4039 // MIs[2] p
4040 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
4041 // MIs[2] s2
4042 // No operand predicates
4043 // MIs[2] Operand 3
4044 GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
4045 GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
4046 GIM_CheckIsSafeToFold, /*NumInsns*/2,
4047 GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/uint8_t(-1),
4048 GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
4049 GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/uint8_t(-1),
4050 // Combiner Rule #183: double_icmp_zero_or_combine
4051 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
4052 GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
4053 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
4054 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
4055 GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
4056 GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
4057 GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
4058 GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4059 GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
4060 GIR_EraseRootFromParent_Done,
4061 // Label 175: @15941
4062 GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(15965), // Rule ID 96 //
4063 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
4064 // MIs[0] dst
4065 // No operand predicates
4066 // MIs[0] src
4067 // No operand predicates
4068 // MIs[0] src
4069 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4070 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4071 // Combiner Rule #70: binop_same_val @ [__binop_same_val_match_0[1]]
4072 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4073 GIR_EraseRootFromParent_Done,
4074 // Label 176: @15965
4075 GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(15988), // Rule ID 87 //
4076 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
4077 // MIs[0] dst
4078 // No operand predicates
4079 // MIs[0] lhs
4080 // No operand predicates
4081 // MIs[0] Operand 2
4082 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4083 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4084 // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[2]]
4085 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4086 GIR_EraseRootFromParent_Done,
4087 // Label 177: @15988
4088 GIM_Reject,
4089 // Label 10: @15989
4090 GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(16000), // Rule ID 76 //
4091 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
4092 // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_XOR'
4093 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
4094 // Label 178: @16000
4095 GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(16011), // Rule ID 122 //
4096 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
4097 // Combiner Rule #89: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
4098 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
4099 // Label 179: @16011
4100 GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(16022), // Rule ID 148 //
4101 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
4102 // Combiner Rule #111: not_cmp_fold; wip_match_opcode 'G_XOR'
4103 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
4104 // Label 180: @16022
4105 GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(16033), // Rule ID 179 //
4106 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
4107 // Combiner Rule #134: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
4108 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
4109 // Label 181: @16033
4110 GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(16044), // Rule ID 217 //
4111 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
4112 // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_XOR'
4113 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
4114 // Label 182: @16044
4115 GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(16055), // Rule ID 256 //
4116 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
4117 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_XOR'
4118 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
4119 // Label 183: @16055
4120 GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(16066), // Rule ID 285 //
4121 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4122 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
4123 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4124 // Label 184: @16066
4125 GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(16089), // Rule ID 88 //
4126 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
4127 // MIs[0] dst
4128 // No operand predicates
4129 // MIs[0] lhs
4130 // No operand predicates
4131 // MIs[0] Operand 2
4132 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4133 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4134 // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[3]]
4135 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4136 GIR_EraseRootFromParent_Done,
4137 // Label 185: @16089
4138 GIM_Reject,
4139 // Label 11: @16090
4140 GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(16101), // Rule ID 118 //
4141 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
4142 // Combiner Rule #87: extend_through_phis; wip_match_opcode 'G_PHI'
4143 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
4144 // Label 186: @16101
4145 GIM_Reject,
4146 // Label 12: @16102
4147 GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(16113), // Rule ID 81 //
4148 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
4149 // Combiner Rule #66: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
4150 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
4151 // Label 187: @16113
4152 GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(16124), // Rule ID 150 //
4153 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
4154 // Combiner Rule #113: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
4155 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
4156 // Label 188: @16124
4157 GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(16135), // Rule ID 151 //
4158 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
4159 // Combiner Rule #114: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
4160 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
4161 // Label 189: @16135
4162 GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(16146), // Rule ID 152 //
4163 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
4164 // Combiner Rule #115: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
4165 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
4166 // Label 190: @16146
4167 GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(16157), // Rule ID 153 //
4168 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
4169 // Combiner Rule #116: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
4170 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
4171 // Label 191: @16157
4172 GIM_Reject,
4173 // Label 13: @16158
4174 GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(16169), // Rule ID 154 //
4175 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
4176 // Combiner Rule #117: merge_unmerge; wip_match_opcode 'G_MERGE_VALUES'
4177 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
4178 // Label 192: @16169
4179 GIM_Reject,
4180 // Label 14: @16170
4181 GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(16181), // Rule ID 54 //
4182 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
4183 // Combiner Rule #52: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
4184 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
4185 // Label 193: @16181
4186 GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(16192), // Rule ID 111 //
4187 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
4188 // Combiner Rule #80: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
4189 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4190 // Label 194: @16192
4191 GIM_Reject,
4192 // Label 15: @16193
4193 GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(16204), // Rule ID 110 //
4194 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
4195 // Combiner Rule #80: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
4196 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4197 // Label 195: @16204
4198 GIM_Reject,
4199 // Label 16: @16205
4200 GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(16216), // Rule ID 312 //
4201 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4202 // Combiner Rule #181: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
4203 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
4204 // Label 196: @16216
4205 GIM_Reject,
4206 // Label 17: @16217
4207 GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(16238), // Rule ID 103 //
4208 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
4209 // MIs[0] dst
4210 // No operand predicates
4211 // MIs[0] t
4212 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4213 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
4214 // MIs[1] ptr
4215 // No operand predicates
4216 GIM_CheckIsSafeToFold, /*NumInsns*/1,
4217 // Combiner Rule #74: i2p_to_p2i
4218 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
4219 // Label 197: @16238
4220 GIM_Reject,
4221 // Label 18: @16239
4222 GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(16250), // Rule ID 102 //
4223 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
4224 // Combiner Rule #73: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
4225 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
4226 // Label 198: @16250
4227 GIM_Reject,
4228 // Label 19: @16251
4229 GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(16272), // Rule ID 114 //
4230 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
4231 // MIs[0] dst
4232 // No operand predicates
4233 // MIs[0] src1
4234 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4235 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
4236 // MIs[1] src0
4237 // No operand predicates
4238 GIM_CheckIsSafeToFold, /*NumInsns*/1,
4239 // Combiner Rule #83: bitcast_bitcast_fold
4240 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4241 // Label 199: @16272
4242 GIM_Reject,
4243 // Label 20: @16273
4244 GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(16302), // Rule ID 12 //
4245 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
4246 // MIs[0] dst
4247 // No operand predicates
4248 // MIs[0] src
4249 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4250 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
4251 // MIs[1] __idempotent_prop_match_0.x
4252 // No operand predicates
4253 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4254 GIM_CheckIsSafeToFold, /*NumInsns*/1,
4255 // Combiner Rule #12: idempotent_prop @ [__idempotent_prop_match_0[0]]
4256 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4257 GIR_EraseRootFromParent_Done,
4258 // Label 200: @16302
4259 GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(16325), // Rule ID 50 //
4260 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
4261 // MIs[0] root
4262 // No operand predicates
4263 // MIs[0] src
4264 // No operand predicates
4265 GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
4266 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4267 // Combiner Rule #48: freeze_of_non_undef_non_poison
4268 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4269 GIR_EraseRootFromParent_Done,
4270 // Label 201: @16325
4271 GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(16336), // Rule ID 51 //
4272 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
4273 // MIs[0] dst
4274 // No operand predicates
4275 // MIs[0] src
4276 // No operand predicates
4277 // Combiner Rule #49: push_freeze_to_prevent_poison_from_propagating
4278 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
4279 // Label 202: @16336
4280 GIM_Reject,
4281 // Label 21: @16337
4282 GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(16348), // Rule ID 55 //
4283 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
4284 // Combiner Rule #53: extending_loads; wip_match_opcode 'G_LOAD'
4285 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
4286 // Label 203: @16348
4287 GIM_Reject,
4288 // Label 22: @16349
4289 GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(16360), // Rule ID 56 //
4290 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
4291 // Combiner Rule #53: extending_loads; wip_match_opcode 'G_SEXTLOAD'
4292 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
4293 // Label 204: @16360
4294 GIM_Reject,
4295 // Label 23: @16361
4296 GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(16372), // Rule ID 57 //
4297 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
4298 // Combiner Rule #53: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
4299 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
4300 // Label 205: @16372
4301 GIM_Reject,
4302 // Label 24: @16373
4303 GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(16384), // Rule ID 80 //
4304 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
4305 // Combiner Rule #65: erase_undef_store; wip_match_opcode 'G_STORE'
4306 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
4307 // Label 206: @16384
4308 GIM_Reject,
4309 // Label 25: @16385
4310 GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(16396), // Rule ID 331 //
4311 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4312 // Combiner Rule #195: rcp_sqrt_to_rsq; wip_match_opcode 'G_INTRINSIC'
4313 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
4314 // Label 207: @16396
4315 GIM_Reject,
4316 // Label 26: @16397
4317 GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(16408), // Rule ID 104 //
4318 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4319 // Combiner Rule #75: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
4320 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
4321 // Label 208: @16408
4322 GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(16419), // Rule ID 145 //
4323 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
4324 // Combiner Rule #110: ext_ext_fold; wip_match_opcode 'G_ANYEXT'
4325 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4326 // Label 209: @16419
4327 GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(16430), // Rule ID 229 //
4328 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
4329 // Combiner Rule #155: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
4330 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
4331 // Label 210: @16430
4332 GIM_Reject,
4333 // Label 27: @16431
4334 GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(16442), // Rule ID 77 //
4335 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
4336 // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_TRUNC'
4337 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
4338 // Label 211: @16442
4339 GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(16453), // Rule ID 112 //
4340 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
4341 // Combiner Rule #81: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
4342 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
4343 // Label 212: @16453
4344 GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(16464), // Rule ID 113 //
4345 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
4346 // Combiner Rule #82: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
4347 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
4348 // Label 213: @16464
4349 GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(16475), // Rule ID 155 //
4350 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
4351 // Combiner Rule #118: trunc_ext_fold; wip_match_opcode 'G_TRUNC'
4352 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
4353 // Label 214: @16475
4354 GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(16486), // Rule ID 156 //
4355 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
4356 // Combiner Rule #119: trunc_shift; wip_match_opcode 'G_TRUNC'
4357 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
4358 // Label 215: @16486
4359 GIM_Reject,
4360 // Label 28: @16487
4361 GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(16498), // Rule ID 146 //
4362 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
4363 // Combiner Rule #110: ext_ext_fold; wip_match_opcode 'G_SEXT'
4364 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4365 // Label 216: @16498
4366 GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(16509), // Rule ID 228 //
4367 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
4368 // Combiner Rule #155: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
4369 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
4370 // Label 217: @16509
4371 GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(16536), // Rule ID 317 //
4372 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
4373 // MIs[0] root
4374 // No operand predicates
4375 // MIs[0] src
4376 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4377 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
4378 GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoSWrap),
4379 // MIs[1] x
4380 // No operand predicates
4381 GIM_CheckIsSafeToFold, /*NumInsns*/1,
4382 // Combiner Rule #185: sext_trunc
4383 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
4384 // Label 218: @16536
4385 GIM_Reject,
4386 // Label 29: @16537
4387 GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(16548), // Rule ID 130 //
4388 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
4389 // Combiner Rule #95: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
4390 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
4391 // Label 219: @16548
4392 GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(16559), // Rule ID 138 //
4393 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
4394 // Combiner Rule #103: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
4395 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
4396 // Label 220: @16559
4397 GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(16570), // Rule ID 206 //
4398 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
4399 // Combiner Rule #148: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
4400 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
4401 // Label 221: @16570
4402 GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(16581), // Rule ID 334 //
4403 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4404 // Combiner Rule #197: sign_extension_in_reg; wip_match_opcode 'G_SEXT_INREG'
4405 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
4406 // Label 222: @16581
4407 GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(16592), // Rule ID 144 //
4408 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
4409 // MIs[0] dst
4410 // No operand predicates
4411 // MIs[0] src
4412 // No operand predicates
4413 // MIs[0] imm
4414 // No operand predicates
4415 // Combiner Rule #109: sext_inreg_to_zext_inreg
4416 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4417 // Label 223: @16592
4418 GIM_Reject,
4419 // Label 30: @16593
4420 GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(16604), // Rule ID 141 //
4421 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
4422 // Combiner Rule #106: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
4423 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
4424 // Label 224: @16604
4425 GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(16615), // Rule ID 147 //
4426 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
4427 // Combiner Rule #110: ext_ext_fold; wip_match_opcode 'G_ZEXT'
4428 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4429 // Label 225: @16615
4430 GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(16626), // Rule ID 227 //
4431 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
4432 // Combiner Rule #155: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
4433 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
4434 // Label 226: @16626
4435 GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(16653), // Rule ID 318 //
4436 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
4437 // MIs[0] root
4438 // No operand predicates
4439 // MIs[0] src
4440 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4441 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
4442 GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
4443 // MIs[1] x
4444 // No operand predicates
4445 GIM_CheckIsSafeToFold, /*NumInsns*/1,
4446 // Combiner Rule #186: zext_trunc
4447 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
4448 // Label 227: @16653
4449 GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(16670), // Rule ID 319 //
4450 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
4451 GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
4452 // MIs[0] root
4453 // No operand predicates
4454 // MIs[0] x
4455 // No operand predicates
4456 // Combiner Rule #187: nneg_zext
4457 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4458 // Label 228: @16670
4459 GIM_Reject,
4460 // Label 31: @16671
4461 GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(16682), // Rule ID 65 //
4462 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
4463 // Combiner Rule #59: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
4464 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
4465 // Label 229: @16682
4466 GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(16693), // Rule ID 68 //
4467 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
4468 // Combiner Rule #60: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
4469 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
4470 // Label 230: @16693
4471 GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(16704), // Rule ID 123 //
4472 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4473 // Combiner Rule #90: shifts_too_big; wip_match_opcode 'G_SHL'
4474 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
4475 // Label 231: @16704
4476 GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(16715), // Rule ID 181 //
4477 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
4478 // Combiner Rule #136: shift_immed_chain; wip_match_opcode 'G_SHL'
4479 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
4480 // Label 232: @16715
4481 GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(16726), // Rule ID 186 //
4482 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
4483 // Combiner Rule #137: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
4484 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
4485 // Label 233: @16726
4486 GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(16737), // Rule ID 205 //
4487 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
4488 // Combiner Rule #147: commute_shift; wip_match_opcode 'G_SHL'
4489 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
4490 // Label 234: @16737
4491 GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(16748), // Rule ID 218 //
4492 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
4493 // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_SHL'
4494 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
4495 // Label 235: @16748
4496 GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(16759), // Rule ID 263 //
4497 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
4498 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SHL'
4499 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
4500 // Label 236: @16759
4501 GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(16794), // Rule ID 48 //
4502 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
4503 GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4504 // MIs[0] root
4505 // No operand predicates
4506 // MIs[0] left
4507 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4508 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4509 // MIs[1] imm
4510 // No operand predicates
4511 // MIs[0] x
4512 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4513 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4514 // MIs[2] imm1
4515 // No operand predicates
4516 GIM_CheckIsSafeToFold, /*NumInsns*/2,
4517 // Combiner Rule #46: shl_of_vscale
4518 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
4519 // Label 237: @16794
4520 GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(16817), // Rule ID 89 //
4521 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
4522 // MIs[0] dst
4523 // No operand predicates
4524 // MIs[0] lhs
4525 // No operand predicates
4526 // MIs[0] Operand 2
4527 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4528 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4529 // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[4]]
4530 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4531 GIR_EraseRootFromParent_Done,
4532 // Label 238: @16817
4533 GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(16828), // Rule ID 131 //
4534 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
4535 // MIs[0] dst
4536 // No operand predicates
4537 // MIs[0] src0
4538 // No operand predicates
4539 // MIs[0] src1
4540 // No operand predicates
4541 // Combiner Rule #96: reduce_shl_of_extend
4542 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
4543 // Label 239: @16828
4544 GIM_Reject,
4545 // Label 32: @16829
4546 GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(16840), // Rule ID 70 //
4547 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
4548 // Combiner Rule #60: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
4549 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
4550 // Label 240: @16840
4551 GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(16851), // Rule ID 125 //
4552 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4553 // Combiner Rule #90: shifts_too_big; wip_match_opcode 'G_LSHR'
4554 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
4555 // Label 241: @16851
4556 GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(16862), // Rule ID 183 //
4557 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
4558 // Combiner Rule #136: shift_immed_chain; wip_match_opcode 'G_LSHR'
4559 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
4560 // Label 242: @16862
4561 GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(16873), // Rule ID 188 //
4562 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
4563 // Combiner Rule #137: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
4564 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
4565 // Label 243: @16873
4566 GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(16884), // Rule ID 209 //
4567 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
4568 // Combiner Rule #150: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
4569 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
4570 // Label 244: @16884
4571 GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(16895), // Rule ID 211 //
4572 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
4573 // Combiner Rule #151: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
4574 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4575 // Label 245: @16895
4576 GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(16906), // Rule ID 219 //
4577 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
4578 // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_LSHR'
4579 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
4580 // Label 246: @16906
4581 GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(16917), // Rule ID 261 //
4582 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
4583 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_LSHR'
4584 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
4585 // Label 247: @16917
4586 GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(16940), // Rule ID 91 //
4587 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
4588 // MIs[0] dst
4589 // No operand predicates
4590 // MIs[0] lhs
4591 // No operand predicates
4592 // MIs[0] Operand 2
4593 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4594 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4595 // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[6]]
4596 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4597 GIR_EraseRootFromParent_Done,
4598 // Label 248: @16940
4599 GIM_Reject,
4600 // Label 33: @16941
4601 GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(16952), // Rule ID 69 //
4602 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
4603 // Combiner Rule #60: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
4604 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
4605 // Label 249: @16952
4606 GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(16963), // Rule ID 124 //
4607 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4608 // Combiner Rule #90: shifts_too_big; wip_match_opcode 'G_ASHR'
4609 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
4610 // Label 250: @16963
4611 GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(16974), // Rule ID 129 //
4612 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
4613 // Combiner Rule #94: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
4614 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
4615 // Label 251: @16974
4616 GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(16985), // Rule ID 182 //
4617 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
4618 // Combiner Rule #136: shift_immed_chain; wip_match_opcode 'G_ASHR'
4619 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
4620 // Label 252: @16985
4621 GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(16996), // Rule ID 187 //
4622 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
4623 // Combiner Rule #137: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
4624 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
4625 // Label 253: @16996
4626 GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(17007), // Rule ID 208 //
4627 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
4628 // Combiner Rule #150: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
4629 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
4630 // Label 254: @17007
4631 GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(17018), // Rule ID 210 //
4632 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
4633 // Combiner Rule #151: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
4634 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4635 // Label 255: @17018
4636 GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(17029), // Rule ID 220 //
4637 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
4638 // Combiner Rule #152: constant_fold_binop; wip_match_opcode 'G_ASHR'
4639 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
4640 // Label 256: @17029
4641 GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(17040), // Rule ID 262 //
4642 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
4643 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_ASHR'
4644 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
4645 // Label 257: @17040
4646 GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(17063), // Rule ID 90 //
4647 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
4648 // MIs[0] dst
4649 // No operand predicates
4650 // MIs[0] lhs
4651 // No operand predicates
4652 // MIs[0] Operand 2
4653 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4654 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4655 // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[5]]
4656 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4657 GIR_EraseRootFromParent_Done,
4658 // Label 258: @17063
4659 GIM_Reject,
4660 // Label 34: @17064
4661 GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(17075), // Rule ID 197 //
4662 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
4663 // Combiner Rule #141: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
4664 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
4665 // Label 259: @17075
4666 GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(17086), // Rule ID 201 //
4667 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
4668 // Combiner Rule #144: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
4669 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
4670 // Label 260: @17086
4671 GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(17106), // Rule ID 200 //
4672 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
4673 // MIs[0] x
4674 // No operand predicates
4675 // MIs[0] y
4676 // No operand predicates
4677 // MIs[0] z
4678 // No operand predicates
4679 // MIs[0] Operand 3
4680 GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
4681 // Combiner Rule #143: funnel_shift_left_zero
4682 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
4683 GIR_RootToRootCopy, /*OpIdx*/0, // x
4684 GIR_RootToRootCopy, /*OpIdx*/1, // y
4685 GIR_EraseRootFromParent_Done,
4686 // Label 261: @17106
4687 GIM_Reject,
4688 // Label 35: @17107
4689 GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(17118), // Rule ID 198 //
4690 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
4691 // Combiner Rule #141: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
4692 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
4693 // Label 262: @17118
4694 GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(17129), // Rule ID 202 //
4695 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
4696 // Combiner Rule #144: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
4697 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
4698 // Label 263: @17129
4699 GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(17149), // Rule ID 199 //
4700 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
4701 // MIs[0] x
4702 // No operand predicates
4703 // MIs[0] y
4704 // No operand predicates
4705 // MIs[0] z
4706 // No operand predicates
4707 // MIs[0] Operand 3
4708 GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
4709 // Combiner Rule #142: funnel_shift_right_zero
4710 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
4711 GIR_RootToRootCopy, /*OpIdx*/0, // x
4712 GIR_RootToRootCopy, /*OpIdx*/2, // z
4713 GIR_EraseRootFromParent_Done,
4714 // Label 264: @17149
4715 GIM_Reject,
4716 // Label 36: @17150
4717 GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(17173), // Rule ID 94 //
4718 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
4719 // MIs[0] dst
4720 // No operand predicates
4721 // MIs[0] lhs
4722 // No operand predicates
4723 // MIs[0] Operand 2
4724 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4725 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4726 // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[9]]
4727 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4728 GIR_EraseRootFromParent_Done,
4729 // Label 265: @17173
4730 GIM_Reject,
4731 // Label 37: @17174
4732 GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(17197), // Rule ID 93 //
4733 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
4734 // MIs[0] dst
4735 // No operand predicates
4736 // MIs[0] lhs
4737 // No operand predicates
4738 // MIs[0] Operand 2
4739 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4740 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4741 // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[8]]
4742 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4743 GIR_EraseRootFromParent_Done,
4744 // Label 266: @17197
4745 GIM_Reject,
4746 // Label 38: @17198
4747 GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(17209), // Rule ID 142 //
4748 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
4749 // Combiner Rule #107: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
4750 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
4751 // Label 267: @17209
4752 GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(17220), // Rule ID 143 //
4753 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
4754 // Combiner Rule #108: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
4755 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
4756 // Label 268: @17220
4757 GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(17231), // Rule ID 279 //
4758 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
4759 // Combiner Rule #175: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
4760 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
4761 // Label 269: @17231
4762 GIM_Reject,
4763 // Label 39: @17232
4764 GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(17243), // Rule ID 84 //
4765 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
4766 // Combiner Rule #68: select_same_val; wip_match_opcode 'G_SELECT'
4767 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
4768 // Label 270: @17243
4769 GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(17254), // Rule ID 134 //
4770 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
4771 // Combiner Rule #99: select_constant_cmp; wip_match_opcode 'G_SELECT'
4772 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
4773 // Label 271: @17254
4774 GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(17265), // Rule ID 136 //
4775 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4776 // Combiner Rule #101: match_selects; wip_match_opcode 'G_SELECT'
4777 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4778 // Label 272: @17265
4779 GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(17276), // Rule ID 278 //
4780 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
4781 // Combiner Rule #174: select_to_minmax; wip_match_opcode 'G_SELECT'
4782 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
4783 // Label 273: @17276
4784 GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(17303), // Rule ID 321 //
4785 GIM_CheckFeatures, GIMT_Encode2(GIFBS_HasFminFmaxLegacy),
4786 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
4787 GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s32,
4788 // MIs[0] cond
4789 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4790 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCMP),
4791 // MIs[1] pred
4792 // No operand predicates
4793 // MIs[1] lhs
4794 // No operand predicates
4795 // MIs[1] rhs
4796 // No operand predicates
4797 // MIs[0] true
4798 // No operand predicates
4799 // MIs[0] false
4800 // No operand predicates
4801 GIM_CheckIsSafeToFold, /*NumInsns*/1,
4802 // Combiner Rule #189: fcmp_select_to_fmin_fmax_legacy
4803 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
4804 // Label 274: @17303
4805 GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(17324), // Rule ID 135 //
4806 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
4807 // MIs[0] root
4808 // No operand predicates
4809 // MIs[0] tst
4810 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4811 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
4812 // MIs[1] tst1
4813 // No operand predicates
4814 // MIs[1] a
4815 // No operand predicates
4816 // MIs[1] b
4817 // No operand predicates
4818 // MIs[0] x
4819 // No operand predicates
4820 // MIs[0] y
4821 // No operand predicates
4822 GIM_CheckIsSafeToFold, /*NumInsns*/1,
4823 // Combiner Rule #100: select_to_iminmax
4824 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
4825 // Label 275: @17324
4826 GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(17353), // Rule ID 133 //
4827 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
4828 // MIs[0] dst
4829 // No operand predicates
4830 // MIs[0] undef
4831 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4832 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4833 // MIs[0] x
4834 // No operand predicates
4835 // MIs[0] y
4836 // No operand predicates
4837 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
4838 GIM_CheckIsSafeToFold, /*NumInsns*/1,
4839 // Combiner Rule #98: select_undef_cmp
4840 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
4841 GIR_EraseRootFromParent_Done,
4842 // Label 276: @17353
4843 GIM_Reject,
4844 // Label 40: @17354
4845 GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(17365), // Rule ID 290 //
4846 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4847 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
4848 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4849 // Label 277: @17365
4850 GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(17376), // Rule ID 316 //
4851 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
4852 // Combiner Rule #184: match_addos; wip_match_opcode 'G_UADDO'
4853 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
4854 // Label 278: @17376
4855 GIM_Reject,
4856 // Label 41: @17377
4857 GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(17388), // Rule ID 170 //
4858 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
4859 // Combiner Rule #131: adde_to_addo; wip_match_opcode 'G_UADDE'
4860 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
4861 // Label 279: @17388
4862 GIM_Reject,
4863 // Label 42: @17389
4864 GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(17400), // Rule ID 172 //
4865 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
4866 // Combiner Rule #131: adde_to_addo; wip_match_opcode 'G_USUBE'
4867 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
4868 // Label 280: @17400
4869 GIM_Reject,
4870 // Label 43: @17401
4871 GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(17412), // Rule ID 291 //
4872 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4873 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
4874 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4875 // Label 281: @17412
4876 GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(17423), // Rule ID 315 //
4877 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
4878 // Combiner Rule #184: match_addos; wip_match_opcode 'G_SADDO'
4879 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
4880 // Label 282: @17423
4881 GIM_Reject,
4882 // Label 44: @17424
4883 GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(17435), // Rule ID 171 //
4884 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
4885 // Combiner Rule #131: adde_to_addo; wip_match_opcode 'G_SADDE'
4886 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
4887 // Label 283: @17435
4888 GIM_Reject,
4889 // Label 45: @17436
4890 GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(17447), // Rule ID 173 //
4891 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
4892 // Combiner Rule #131: adde_to_addo; wip_match_opcode 'G_SSUBE'
4893 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
4894 // Label 284: @17447
4895 GIM_Reject,
4896 // Label 46: @17448
4897 GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(17459), // Rule ID 166 //
4898 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
4899 // Combiner Rule #129: mulo_by_2; wip_match_opcode 'G_UMULO'
4900 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
4901 // Label 285: @17459
4902 GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(17470), // Rule ID 168 //
4903 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
4904 // Combiner Rule #130: mulo_by_0; wip_match_opcode 'G_UMULO'
4905 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
4906 // Label 286: @17470
4907 GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(17481), // Rule ID 292 //
4908 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4909 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
4910 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4911 // Label 287: @17481
4912 GIM_Reject,
4913 // Label 47: @17482
4914 GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(17493), // Rule ID 167 //
4915 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
4916 // Combiner Rule #129: mulo_by_2; wip_match_opcode 'G_SMULO'
4917 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
4918 // Label 288: @17493
4919 GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(17504), // Rule ID 169 //
4920 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
4921 // Combiner Rule #130: mulo_by_0; wip_match_opcode 'G_SMULO'
4922 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
4923 // Label 289: @17504
4924 GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(17515), // Rule ID 293 //
4925 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4926 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
4927 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4928 // Label 290: @17515
4929 GIM_Reject,
4930 // Label 48: @17516
4931 GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(17527), // Rule ID 235 //
4932 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
4933 // Combiner Rule #161: mulh_to_lshr; wip_match_opcode 'G_UMULH'
4934 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4935 // Label 291: @17527
4936 GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(17538), // Rule ID 294 //
4937 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4938 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
4939 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4940 // Label 292: @17538
4941 GIM_Reject,
4942 // Label 49: @17539
4943 GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(17550), // Rule ID 295 //
4944 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4945 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
4946 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4947 // Label 293: @17550
4948 GIM_Reject,
4949 // Label 50: @17551
4950 GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(17562), // Rule ID 296 //
4951 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4952 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
4953 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4954 // Label 294: @17562
4955 GIM_Reject,
4956 // Label 51: @17563
4957 GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(17574), // Rule ID 297 //
4958 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4959 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
4960 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4961 // Label 295: @17574
4962 GIM_Reject,
4963 // Label 52: @17575
4964 GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(17586), // Rule ID 185 //
4965 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
4966 // Combiner Rule #136: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
4967 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
4968 // Label 296: @17586
4969 GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(17597), // Rule ID 189 //
4970 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
4971 // Combiner Rule #137: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
4972 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
4973 // Label 297: @17597
4974 GIM_Reject,
4975 // Label 53: @17598
4976 GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(17609), // Rule ID 184 //
4977 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
4978 // Combiner Rule #136: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
4979 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
4980 // Label 298: @17609
4981 GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(17620), // Rule ID 190 //
4982 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
4983 // Combiner Rule #137: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
4984 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
4985 // Label 299: @17620
4986 GIM_Reject,
4987 // Label 54: @17621
4988 GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(17632), // Rule ID 298 //
4989 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4990 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
4991 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4992 // Label 300: @17632
4993 GIM_Reject,
4994 // Label 55: @17633
4995 GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(17644), // Rule ID 299 //
4996 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
4997 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
4998 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4999 // Label 301: @17644
5000 GIM_Reject,
5001 // Label 56: @17645
5002 GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(17656), // Rule ID 300 //
5003 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
5004 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
5005 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5006 // Label 302: @17656
5007 GIM_Reject,
5008 // Label 57: @17657
5009 GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(17668), // Rule ID 301 //
5010 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
5011 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
5012 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5013 // Label 303: @17668
5014 GIM_Reject,
5015 // Label 58: @17669
5016 GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(17680), // Rule ID 221 //
5017 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
5018 // Combiner Rule #153: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
5019 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
5020 // Label 304: @17680
5021 GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(17691), // Rule ID 236 //
5022 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
5023 // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FADD'
5024 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5025 // Label 305: @17691
5026 GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(17702), // Rule ID 243 //
5027 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
5028 // Combiner Rule #164: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
5029 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
5030 // Label 306: @17702
5031 GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(17713), // Rule ID 244 //
5032 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
5033 // Combiner Rule #165: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
5034 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
5035 // Label 307: @17713
5036 GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(17724), // Rule ID 245 //
5037 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
5038 // Combiner Rule #166: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
5039 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
5040 // Label 308: @17724
5041 GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(17735), // Rule ID 246 //
5042 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
5043 // Combiner Rule #167: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
5044 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
5045 // Label 309: @17735
5046 GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(17746), // Rule ID 269 //
5047 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5048 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FADD'
5049 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5050 // Label 310: @17746
5051 GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(17757), // Rule ID 302 //
5052 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5053 // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
5054 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5055 // Label 311: @17757
5056 GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(17780), // Rule ID 116 //
5057 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
5058 // MIs[0] dst
5059 // No operand predicates
5060 // MIs[0] x
5061 // No operand predicates
5062 // MIs[0] y
5063 // No operand predicates
5064 GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
5065 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5066 // Combiner Rule #85: right_identity_neg_zero_fp
5067 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5068 GIR_EraseRootFromParent_Done,
5069 // Label 312: @17780
5070 GIM_Reject,
5071 // Label 59: @17781
5072 GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(17792), // Rule ID 222 //
5073 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
5074 // Combiner Rule #153: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
5075 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
5076 // Label 313: @17792
5077 GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(17803), // Rule ID 237 //
5078 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
5079 // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FSUB'
5080 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5081 // Label 314: @17803
5082 GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(17814), // Rule ID 247 //
5083 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
5084 // Combiner Rule #168: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
5085 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
5086 // Label 315: @17814
5087 GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(17825), // Rule ID 248 //
5088 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
5089 // Combiner Rule #169: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
5090 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
5091 // Label 316: @17825
5092 GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(17836), // Rule ID 249 //
5093 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
5094 // Combiner Rule #170: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
5095 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
5096 // Label 317: @17836
5097 GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(17847), // Rule ID 250 //
5098 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
5099 // Combiner Rule #171: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
5100 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
5101 // Label 318: @17847
5102 GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(17858), // Rule ID 270 //
5103 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5104 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FSUB'
5105 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5106 // Label 319: @17858
5107 GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(17869), // Rule ID 280 //
5108 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5109 // Combiner Rule #176: fsub_to_fneg; wip_match_opcode 'G_FSUB'
5110 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5111 // Label 320: @17869
5112 GIM_Reject,
5113 // Label 60: @17870
5114 GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(17881), // Rule ID 223 //
5115 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
5116 // Combiner Rule #153: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
5117 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
5118 // Label 321: @17881
5119 GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(17892), // Rule ID 238 //
5120 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
5121 // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FMUL'
5122 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5123 // Label 322: @17892
5124 GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(17903), // Rule ID 268 //
5125 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5126 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FMUL'
5127 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5128 // Label 323: @17903
5129 GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(17914), // Rule ID 303 //
5130 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5131 // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
5132 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5133 // Label 324: @17914
5134 GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(17937), // Rule ID 107 //
5135 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
5136 // MIs[0] dst
5137 // No operand predicates
5138 // MIs[0] x
5139 // No operand predicates
5140 // MIs[0] y
5141 // No operand predicates
5142 GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
5143 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5144 // Combiner Rule #78: right_identity_one_fp
5145 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5146 GIR_EraseRootFromParent_Done,
5147 // Label 325: @17937
5148 GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(17957), // Rule ID 117 //
5149 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
5150 // MIs[0] dst
5151 // No operand predicates
5152 // MIs[0] x
5153 // No operand predicates
5154 // MIs[0] y
5155 // No operand predicates
5156 GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
5157 // Combiner Rule #86: right_identity_neg_one_fp
5158 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
5159 GIR_RootToRootCopy, /*OpIdx*/0, // dst
5160 GIR_RootToRootCopy, /*OpIdx*/1, // x
5161 GIR_EraseRootFromParent_Done,
5162 // Label 326: @17957
5163 GIM_Reject,
5164 // Label 61: @17958
5165 GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(17969), // Rule ID 226 //
5166 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
5167 // Combiner Rule #154: constant_fold_fma; wip_match_opcode 'G_FMA'
5168 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
5169 // Label 327: @17969
5170 GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(17980), // Rule ID 241 //
5171 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
5172 // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FMA'
5173 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5174 // Label 328: @17980
5175 GIM_Reject,
5176 // Label 62: @17981
5177 GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(17992), // Rule ID 225 //
5178 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
5179 // Combiner Rule #154: constant_fold_fma; wip_match_opcode 'G_FMAD'
5180 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
5181 // Label 329: @17992
5182 GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(18003), // Rule ID 240 //
5183 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
5184 // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FMAD'
5185 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5186 // Label 330: @18003
5187 GIM_Reject,
5188 // Label 63: @18004
5189 GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(18015), // Rule ID 224 //
5190 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
5191 // Combiner Rule #153: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
5192 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
5193 // Label 331: @18015
5194 GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(18026), // Rule ID 239 //
5195 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
5196 // Combiner Rule #162: redundant_neg_operands; wip_match_opcode 'G_FDIV'
5197 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5198 // Label 332: @18026
5199 GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(18037), // Rule ID 271 //
5200 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5201 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FDIV'
5202 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5203 // Label 333: @18037
5204 GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(18076), // Rule ID 333 //
5205 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
5206 GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s16,
5207 GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s16,
5208 GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmContract),
5209 // MIs[0] y
5210 // No operand predicates
5211 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5212 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSQRT),
5213 GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::FmContract),
5214 // MIs[1] x
5215 // No operand predicates
5216 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5217 // Combiner Rule #196: fdiv_by_sqrt_to_rsq_f16
5218 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
5219 // Label 334: @18076
5220 GIM_Reject,
5221 // Label 64: @18077
5222 GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(18088), // Rule ID 272 //
5223 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5224 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FREM'
5225 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5226 // Label 335: @18088
5227 GIM_Reject,
5228 // Label 65: @18089
5229 GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(18110), // Rule ID 178 //
5230 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
5231 // MIs[0] dst
5232 // No operand predicates
5233 // MIs[0] float
5234 // No operand predicates
5235 // MIs[0] int
5236 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5237 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5238 // MIs[1] imm
5239 // No operand predicates
5240 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5241 // Combiner Rule #133: expand_const_fpowi
5242 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5243 // Label 336: @18110
5244 GIM_Reject,
5245 // Label 66: @18111
5246 GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(18132), // Rule ID 160 //
5247 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
5248 // MIs[0] dst
5249 // No operand predicates
5250 // MIs[0] src0
5251 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5252 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5253 // MIs[1] cst
5254 // No operand predicates
5255 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5256 // Combiner Rule #123: constant_fold_flog2
5257 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
5258 // Label 337: @18132
5259 GIM_Reject,
5260 // Label 67: @18133
5261 GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(18144), // Rule ID 330 //
5262 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5263 // Combiner Rule #194: foldable_fneg; wip_match_opcode 'G_FNEG'
5264 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
5265 // Label 338: @18144
5266 GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(18165), // Rule ID 157 //
5267 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
5268 // MIs[0] dst
5269 // No operand predicates
5270 // MIs[0] src0
5271 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5272 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5273 // MIs[1] cst
5274 // No operand predicates
5275 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5276 // Combiner Rule #120: constant_fold_fneg
5277 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
5278 // Label 339: @18165
5279 GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(18194), // Rule ID 105 //
5280 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
5281 // MIs[0] dst
5282 // No operand predicates
5283 // MIs[0] t
5284 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5285 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
5286 // MIs[1] src
5287 // No operand predicates
5288 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5289 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5290 // Combiner Rule #76: fneg_fneg_fold
5291 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5292 GIR_EraseRootFromParent_Done,
5293 // Label 340: @18194
5294 GIM_Reject,
5295 // Label 68: @18195
5296 GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(18219), // Rule ID 322 //
5297 GIM_CheckFeatures, GIMT_Encode2(GIFBS_Has16BitInsts_NotHasMed3_16),
5298 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
5299 // MIs[0] fptrunc_dst
5300 // No operand predicates
5301 // MIs[0] fmed3_dst
5302 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5303 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(AMDGPU::G_AMDGPU_FMED3),
5304 // MIs[1] src0
5305 // No operand predicates
5306 // MIs[1] src1
5307 // No operand predicates
5308 // MIs[1] src2
5309 // No operand predicates
5310 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5311 // Combiner Rule #190: expand_promoted_fmed3
5312 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5313 // Label 341: @18219
5314 GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(18240), // Rule ID 161 //
5315 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
5316 // MIs[0] dst
5317 // No operand predicates
5318 // MIs[0] src0
5319 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5320 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5321 // MIs[1] cst
5322 // No operand predicates
5323 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5324 // Combiner Rule #124: constant_fold_fptrunc
5325 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
5326 // Label 342: @18240
5327 GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(18261), // Rule ID 115 //
5328 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
5329 // MIs[0] dst
5330 // No operand predicates
5331 // MIs[0] src1
5332 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5333 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
5334 // MIs[1] src0
5335 // No operand predicates
5336 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5337 // Combiner Rule #84: fptrunc_fpext_fold
5338 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5339 // Label 343: @18261
5340 GIM_Reject,
5341 // Label 69: @18262
5342 GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(18273), // Rule ID 73 //
5343 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
5344 // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_FPTOSI'
5345 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5346 // Label 344: @18273
5347 GIM_Reject,
5348 // Label 70: @18274
5349 GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(18285), // Rule ID 74 //
5350 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
5351 // Combiner Rule #62: propagate_undef_any_op; wip_match_opcode 'G_FPTOUI'
5352 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5353 // Label 345: @18285
5354 GIM_Reject,
5355 // Label 71: @18286
5356 GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(18297), // Rule ID 61 //
5357 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
5358 // Combiner Rule #56: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
5359 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
5360 // Label 346: @18297
5361 GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(18308), // Rule ID 324 //
5362 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5363 // Combiner Rule #191: uchar_to_float; wip_match_opcode 'G_SITOFP'
5364 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
5365 // Label 347: @18308
5366 GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(18323), // Rule ID 162 //
5367 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
5368 // MIs[0] dst
5369 // No operand predicates
5370 // MIs[0] Operand 1
5371 GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5372 // Combiner Rule #125: itof_const_zero_fold_si
5373 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5374 // Label 348: @18323
5375 GIM_Reject,
5376 // Label 72: @18324
5377 GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(18335), // Rule ID 60 //
5378 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
5379 // Combiner Rule #56: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
5380 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
5381 // Label 349: @18335
5382 GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(18346), // Rule ID 323 //
5383 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5384 // Combiner Rule #191: uchar_to_float; wip_match_opcode 'G_UITOFP'
5385 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
5386 // Label 350: @18346
5387 GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(18361), // Rule ID 163 //
5388 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
5389 // MIs[0] dst
5390 // No operand predicates
5391 // MIs[0] Operand 1
5392 GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5393 // Combiner Rule #126: itof_const_zero_fold_ui
5394 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5395 // Label 351: @18361
5396 GIM_Reject,
5397 // Label 73: @18362
5398 GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(18391), // Rule ID 13 //
5399 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
5400 // MIs[0] dst
5401 // No operand predicates
5402 // MIs[0] src
5403 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5404 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
5405 // MIs[1] __idempotent_prop_match_0.x
5406 // No operand predicates
5407 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5408 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5409 // Combiner Rule #12: idempotent_prop @ [__idempotent_prop_match_0[1]]
5410 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5411 GIR_EraseRootFromParent_Done,
5412 // Label 352: @18391
5413 GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(18412), // Rule ID 158 //
5414 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
5415 // MIs[0] dst
5416 // No operand predicates
5417 // MIs[0] src0
5418 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5419 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5420 // MIs[1] cst
5421 // No operand predicates
5422 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5423 // Combiner Rule #121: constant_fold_fabs
5424 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
5425 // Label 353: @18412
5426 GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(18440), // Rule ID 230 //
5427 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
5428 // MIs[0] dst
5429 // No operand predicates
5430 // MIs[0] tmp
5431 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5432 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
5433 // MIs[1] x
5434 // No operand predicates
5435 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5436 // Combiner Rule #156: fabs_fneg_fold
5437 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
5438 GIR_RootToRootCopy, /*OpIdx*/0, // dst
5439 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5440 GIR_EraseRootFromParent_Done,
5441 // Label 354: @18440
5442 GIM_Reject,
5443 // Label 74: @18441
5444 GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(18452), // Rule ID 329 //
5445 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
5446 // Combiner Rule #193: remove_fcanonicalize; wip_match_opcode 'G_FCANONICALIZE'
5447 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
5448 // Label 355: @18452
5449 GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(18481), // Rule ID 14 //
5450 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
5451 // MIs[0] dst
5452 // No operand predicates
5453 // MIs[0] src
5454 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5455 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
5456 // MIs[1] __idempotent_prop_match_0.x
5457 // No operand predicates
5458 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5459 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5460 // Combiner Rule #12: idempotent_prop @ [__idempotent_prop_match_0[2]]
5461 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5462 GIR_EraseRootFromParent_Done,
5463 // Label 356: @18481
5464 GIM_Reject,
5465 // Label 75: @18482
5466 GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(18493), // Rule ID 174 //
5467 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
5468 // Combiner Rule #132: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
5469 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
5470 // Label 357: @18493
5471 GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(18504), // Rule ID 273 //
5472 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5473 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
5474 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5475 // Label 358: @18504
5476 GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(18515), // Rule ID 304 //
5477 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5478 // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
5479 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5480 // Label 359: @18515
5481 GIM_Reject,
5482 // Label 76: @18516
5483 GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(18527), // Rule ID 175 //
5484 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
5485 // Combiner Rule #132: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
5486 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
5487 // Label 360: @18527
5488 GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(18538), // Rule ID 274 //
5489 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5490 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
5491 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5492 // Label 361: @18538
5493 GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(18549), // Rule ID 305 //
5494 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5495 // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
5496 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5497 // Label 362: @18549
5498 GIM_Reject,
5499 // Label 77: @18550
5500 GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(18561), // Rule ID 306 //
5501 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5502 // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
5503 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5504 // Label 363: @18561
5505 GIM_Reject,
5506 // Label 78: @18562
5507 GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(18573), // Rule ID 307 //
5508 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5509 // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
5510 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5511 // Label 364: @18573
5512 GIM_Reject,
5513 // Label 79: @18574
5514 GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(18585), // Rule ID 176 //
5515 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
5516 // Combiner Rule #132: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
5517 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
5518 // Label 365: @18585
5519 GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(18596), // Rule ID 275 //
5520 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5521 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
5522 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5523 // Label 366: @18596
5524 GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(18607), // Rule ID 308 //
5525 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5526 // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
5527 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5528 // Label 367: @18607
5529 GIM_Reject,
5530 // Label 80: @18608
5531 GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(18619), // Rule ID 177 //
5532 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
5533 // Combiner Rule #132: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
5534 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
5535 // Label 368: @18619
5536 GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(18630), // Rule ID 276 //
5537 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5538 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
5539 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5540 // Label 369: @18630
5541 GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(18641), // Rule ID 309 //
5542 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5543 // Combiner Rule #178: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
5544 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5545 // Label 370: @18641
5546 GIM_Reject,
5547 // Label 81: @18642
5548 GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(18653), // Rule ID 126 //
5549 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
5550 // Combiner Rule #91: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
5551 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
5552 // Label 371: @18653
5553 GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(18664), // Rule ID 128 //
5554 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5555 // Combiner Rule #93: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
5556 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
5557 // Label 372: @18664
5558 GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(18675), // Rule ID 164 //
5559 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
5560 // Combiner Rule #127: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
5561 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
5562 // Label 373: @18675
5563 GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(18686), // Rule ID 180 //
5564 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
5565 // Combiner Rule #135: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
5566 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
5567 // Label 374: @18686
5568 GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(18697), // Rule ID 253 //
5569 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5570 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
5571 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5572 // Label 375: @18697
5573 GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(18720), // Rule ID 92 //
5574 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
5575 // MIs[0] dst
5576 // No operand predicates
5577 // MIs[0] lhs
5578 // No operand predicates
5579 // MIs[0] Operand 2
5580 GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5581 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5582 // Combiner Rule #69: right_identity_zero @ [__right_identity_zero_match_0[7]]
5583 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5584 GIR_EraseRootFromParent_Done,
5585 // Label 376: @18720
5586 GIM_Reject,
5587 // Label 82: @18721
5588 GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(18732), // Rule ID 264 //
5589 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5590 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SMIN'
5591 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5592 // Label 377: @18732
5593 GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(18743), // Rule ID 286 //
5594 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
5595 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
5596 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5597 // Label 378: @18743
5598 GIM_Reject,
5599 // Label 83: @18744
5600 GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(18755), // Rule ID 265 //
5601 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5602 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_SMAX'
5603 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5604 // Label 379: @18755
5605 GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(18766), // Rule ID 287 //
5606 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
5607 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
5608 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5609 // Label 380: @18766
5610 GIM_Reject,
5611 // Label 84: @18767
5612 GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(18778), // Rule ID 266 //
5613 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5614 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_UMIN'
5615 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5616 // Label 381: @18778
5617 GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(18789), // Rule ID 288 //
5618 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
5619 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
5620 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5621 // Label 382: @18789
5622 GIM_Reject,
5623 // Label 85: @18790
5624 GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(18801), // Rule ID 267 //
5625 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5626 // Combiner Rule #172: fold_binop_into_select; wip_match_opcode 'G_UMAX'
5627 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
5628 // Label 383: @18801
5629 GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(18812), // Rule ID 289 //
5630 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
5631 // Combiner Rule #177: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
5632 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5633 // Label 384: @18812
5634 GIM_Reject,
5635 // Label 86: @18813
5636 GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(18824), // Rule ID 71 //
5637 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
5638 // Combiner Rule #61: unary_undef_to_zero; wip_match_opcode 'G_ABS'
5639 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
5640 // Label 385: @18824
5641 GIM_Reject,
5642 // Label 87: @18825
5643 GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(18836), // Rule ID 149 //
5644 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5645 // Combiner Rule #112: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
5646 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
5647 // Label 386: @18836
5648 GIM_Reject,
5649 // Label 88: @18837
5650 GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(18848), // Rule ID 20 //
5651 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
5652 // Combiner Rule #18: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
5653 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5654 // Label 387: @18848
5655 GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(18859), // Rule ID 52 //
5656 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
5657 // Combiner Rule #50: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
5658 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
5659 // Label 388: @18859
5660 GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(18870), // Rule ID 82 //
5661 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
5662 // Combiner Rule #67: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
5663 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5664 // Label 389: @18870
5665 GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(18909), // Rule ID 45 //
5666 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
5667 // MIs[0] root
5668 // No operand predicates
5669 // MIs[0] src
5670 // No operand predicates
5671 // MIs[0] elt
5672 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5673 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
5674 // MIs[1] src
5675 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5676 // MIs[1] idx
5677 // No operand predicates
5678 // MIs[0] idx
5679 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5680 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5681 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5682 // Combiner Rule #43: insert_vector_element_extract_vector_element
5683 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5684 GIR_EraseRootFromParent_Done,
5685 // Label 390: @18909
5686 GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(18942), // Rule ID 18 //
5687 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
5688 // MIs[0] root
5689 // No operand predicates
5690 // MIs[0] src
5691 // No operand predicates
5692 // MIs[0] elt
5693 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5694 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5695 // MIs[0] idx
5696 // No operand predicates
5697 GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5698 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5699 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5700 // Combiner Rule #16: insert_vector_element_elt_undef
5701 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5702 GIR_EraseRootFromParent_Done,
5703 // Label 391: @18942
5704 GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(18966), // Rule ID 17 //
5705 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
5706 // MIs[0] root
5707 // No operand predicates
5708 // MIs[0] src
5709 // No operand predicates
5710 // MIs[0] elt
5711 // No operand predicates
5712 // MIs[0] idx
5713 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
5714 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5715 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5716 // Combiner Rule #15: insert_vector_element_idx_undef
5717 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5718 GIR_RootToRootCopy, /*OpIdx*/0, // root
5719 GIR_EraseRootFromParent_Done,
5720 // Label 392: @18966
5721 GIM_Reject,
5722 // Label 89: @18967
5723 GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(18978), // Rule ID 19 //
5724 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
5725 // Combiner Rule #17: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
5726 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
5727 // Label 393: @18978
5728 GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(18989), // Rule ID 53 //
5729 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
5730 // Combiner Rule #51: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
5731 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
5732 // Label 394: @18989
5733 GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(19000), // Rule ID 59 //
5734 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
5735 // Combiner Rule #55: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
5736 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
5737 // Label 395: @19000
5738 GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(19011), // Rule ID 83 //
5739 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
5740 // Combiner Rule #67: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
5741 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5742 // Label 396: @19011
5743 GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(19035), // Rule ID 36 //
5744 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
5745 // MIs[0] root
5746 // No operand predicates
5747 // MIs[0] src
5748 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5749 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
5750 GIM_CheckNumOperands, /*MI*/1, /*Expected*/17,
5751 // MIs[1] x
5752 // No operand predicates
5753 // MIs[1] y
5754 // No operand predicates
5755 // MIs[1] z
5756 // No operand predicates
5757 // MIs[1] a
5758 // No operand predicates
5759 // MIs[1] b
5760 // No operand predicates
5761 // MIs[1] c
5762 // No operand predicates
5763 // MIs[1] d
5764 // No operand predicates
5765 // MIs[1] e
5766 // No operand predicates
5767 // MIs[1] f
5768 // No operand predicates
5769 // MIs[1] g
5770 // No operand predicates
5771 // MIs[1] h
5772 // No operand predicates
5773 // MIs[1] i
5774 // No operand predicates
5775 // MIs[1] j
5776 // No operand predicates
5777 // MIs[1] k
5778 // No operand predicates
5779 // MIs[1] l
5780 // No operand predicates
5781 // MIs[1] m
5782 // No operand predicates
5783 // MIs[0] idx
5784 // No operand predicates
5785 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5786 // Combiner Rule #34: extract_vector_element_build_vector16
5787 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5788 // Label 397: @19035
5789 GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(19059), // Rule ID 35 //
5790 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
5791 // MIs[0] root
5792 // No operand predicates
5793 // MIs[0] src
5794 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5795 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
5796 GIM_CheckNumOperands, /*MI*/1, /*Expected*/16,
5797 // MIs[1] x
5798 // No operand predicates
5799 // MIs[1] y
5800 // No operand predicates
5801 // MIs[1] z
5802 // No operand predicates
5803 // MIs[1] a
5804 // No operand predicates
5805 // MIs[1] b
5806 // No operand predicates
5807 // MIs[1] c
5808 // No operand predicates
5809 // MIs[1] d
5810 // No operand predicates
5811 // MIs[1] e
5812 // No operand predicates
5813 // MIs[1] f
5814 // No operand predicates
5815 // MIs[1] g
5816 // No operand predicates
5817 // MIs[1] h
5818 // No operand predicates
5819 // MIs[1] i
5820 // No operand predicates
5821 // MIs[1] j
5822 // No operand predicates
5823 // MIs[1] k
5824 // No operand predicates
5825 // MIs[1] l
5826 // No operand predicates
5827 // MIs[0] idx
5828 // No operand predicates
5829 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5830 // Combiner Rule #33: extract_vector_element_build_vector15
5831 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5832 // Label 398: @19059
5833 GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(19083), // Rule ID 34 //
5834 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
5835 // MIs[0] root
5836 // No operand predicates
5837 // MIs[0] src
5838 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5839 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
5840 GIM_CheckNumOperands, /*MI*/1, /*Expected*/15,
5841 // MIs[1] x
5842 // No operand predicates
5843 // MIs[1] y
5844 // No operand predicates
5845 // MIs[1] z
5846 // No operand predicates
5847 // MIs[1] a
5848 // No operand predicates
5849 // MIs[1] b
5850 // No operand predicates
5851 // MIs[1] c
5852 // No operand predicates
5853 // MIs[1] d
5854 // No operand predicates
5855 // MIs[1] e
5856 // No operand predicates
5857 // MIs[1] f
5858 // No operand predicates
5859 // MIs[1] g
5860 // No operand predicates
5861 // MIs[1] h
5862 // No operand predicates
5863 // MIs[1] i
5864 // No operand predicates
5865 // MIs[1] j
5866 // No operand predicates
5867 // MIs[1] k
5868 // No operand predicates
5869 // MIs[0] idx
5870 // No operand predicates
5871 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5872 // Combiner Rule #32: extract_vector_element_build_vector14
5873 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5874 // Label 399: @19083
5875 GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(19107), // Rule ID 33 //
5876 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
5877 // MIs[0] root
5878 // No operand predicates
5879 // MIs[0] src
5880 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5881 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
5882 GIM_CheckNumOperands, /*MI*/1, /*Expected*/14,
5883 // MIs[1] x
5884 // No operand predicates
5885 // MIs[1] y
5886 // No operand predicates
5887 // MIs[1] z
5888 // No operand predicates
5889 // MIs[1] a
5890 // No operand predicates
5891 // MIs[1] b
5892 // No operand predicates
5893 // MIs[1] c
5894 // No operand predicates
5895 // MIs[1] d
5896 // No operand predicates
5897 // MIs[1] e
5898 // No operand predicates
5899 // MIs[1] f
5900 // No operand predicates
5901 // MIs[1] g
5902 // No operand predicates
5903 // MIs[1] h
5904 // No operand predicates
5905 // MIs[1] i
5906 // No operand predicates
5907 // MIs[1] j
5908 // No operand predicates
5909 // MIs[0] idx
5910 // No operand predicates
5911 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5912 // Combiner Rule #31: extract_vector_element_build_vector13
5913 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5914 // Label 400: @19107
5915 GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(19131), // Rule ID 32 //
5916 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
5917 // MIs[0] root
5918 // No operand predicates
5919 // MIs[0] src
5920 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5921 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
5922 GIM_CheckNumOperands, /*MI*/1, /*Expected*/13,
5923 // MIs[1] x
5924 // No operand predicates
5925 // MIs[1] y
5926 // No operand predicates
5927 // MIs[1] z
5928 // No operand predicates
5929 // MIs[1] a
5930 // No operand predicates
5931 // MIs[1] b
5932 // No operand predicates
5933 // MIs[1] c
5934 // No operand predicates
5935 // MIs[1] d
5936 // No operand predicates
5937 // MIs[1] e
5938 // No operand predicates
5939 // MIs[1] f
5940 // No operand predicates
5941 // MIs[1] g
5942 // No operand predicates
5943 // MIs[1] h
5944 // No operand predicates
5945 // MIs[1] i
5946 // No operand predicates
5947 // MIs[0] idx
5948 // No operand predicates
5949 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5950 // Combiner Rule #30: extract_vector_element_build_vector12
5951 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5952 // Label 401: @19131
5953 GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(19155), // Rule ID 31 //
5954 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
5955 // MIs[0] root
5956 // No operand predicates
5957 // MIs[0] src
5958 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5959 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
5960 GIM_CheckNumOperands, /*MI*/1, /*Expected*/12,
5961 // MIs[1] x
5962 // No operand predicates
5963 // MIs[1] y
5964 // No operand predicates
5965 // MIs[1] z
5966 // No operand predicates
5967 // MIs[1] a
5968 // No operand predicates
5969 // MIs[1] b
5970 // No operand predicates
5971 // MIs[1] c
5972 // No operand predicates
5973 // MIs[1] d
5974 // No operand predicates
5975 // MIs[1] e
5976 // No operand predicates
5977 // MIs[1] f
5978 // No operand predicates
5979 // MIs[1] g
5980 // No operand predicates
5981 // MIs[1] h
5982 // No operand predicates
5983 // MIs[0] idx
5984 // No operand predicates
5985 GIM_CheckIsSafeToFold, /*NumInsns*/1,
5986 // Combiner Rule #29: extract_vector_element_build_vector11
5987 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5988 // Label 402: @19155
5989 GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(19179), // Rule ID 30 //
5990 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
5991 // MIs[0] root
5992 // No operand predicates
5993 // MIs[0] src
5994 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5995 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
5996 GIM_CheckNumOperands, /*MI*/1, /*Expected*/11,
5997 // MIs[1] x
5998 // No operand predicates
5999 // MIs[1] y
6000 // No operand predicates
6001 // MIs[1] z
6002 // No operand predicates
6003 // MIs[1] a
6004 // No operand predicates
6005 // MIs[1] b
6006 // No operand predicates
6007 // MIs[1] c
6008 // No operand predicates
6009 // MIs[1] d
6010 // No operand predicates
6011 // MIs[1] e
6012 // No operand predicates
6013 // MIs[1] f
6014 // No operand predicates
6015 // MIs[1] g
6016 // No operand predicates
6017 // MIs[0] idx
6018 // No operand predicates
6019 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6020 // Combiner Rule #28: extract_vector_element_build_vector10
6021 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
6022 // Label 403: @19179
6023 GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(19203), // Rule ID 29 //
6024 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
6025 // MIs[0] root
6026 // No operand predicates
6027 // MIs[0] src
6028 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6029 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6030 GIM_CheckNumOperands, /*MI*/1, /*Expected*/10,
6031 // MIs[1] x
6032 // No operand predicates
6033 // MIs[1] y
6034 // No operand predicates
6035 // MIs[1] z
6036 // No operand predicates
6037 // MIs[1] a
6038 // No operand predicates
6039 // MIs[1] b
6040 // No operand predicates
6041 // MIs[1] c
6042 // No operand predicates
6043 // MIs[1] d
6044 // No operand predicates
6045 // MIs[1] e
6046 // No operand predicates
6047 // MIs[1] f
6048 // No operand predicates
6049 // MIs[0] idx
6050 // No operand predicates
6051 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6052 // Combiner Rule #27: extract_vector_element_build_vector9
6053 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
6054 // Label 404: @19203
6055 GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(19227), // Rule ID 28 //
6056 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
6057 // MIs[0] root
6058 // No operand predicates
6059 // MIs[0] src
6060 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6061 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6062 GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
6063 // MIs[1] x
6064 // No operand predicates
6065 // MIs[1] y
6066 // No operand predicates
6067 // MIs[1] z
6068 // No operand predicates
6069 // MIs[1] a
6070 // No operand predicates
6071 // MIs[1] b
6072 // No operand predicates
6073 // MIs[1] c
6074 // No operand predicates
6075 // MIs[1] d
6076 // No operand predicates
6077 // MIs[1] e
6078 // No operand predicates
6079 // MIs[0] idx
6080 // No operand predicates
6081 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6082 // Combiner Rule #26: extract_vector_element_build_vector8
6083 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
6084 // Label 405: @19227
6085 GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(19251), // Rule ID 43 //
6086 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
6087 // MIs[0] root
6088 // No operand predicates
6089 // MIs[0] src
6090 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6091 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
6092 GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
6093 // MIs[1] x
6094 // No operand predicates
6095 // MIs[1] y
6096 // No operand predicates
6097 // MIs[1] z
6098 // No operand predicates
6099 // MIs[1] a
6100 // No operand predicates
6101 // MIs[1] b
6102 // No operand predicates
6103 // MIs[1] c
6104 // No operand predicates
6105 // MIs[1] d
6106 // No operand predicates
6107 // MIs[1] e
6108 // No operand predicates
6109 // MIs[0] idx
6110 // No operand predicates
6111 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6112 // Combiner Rule #41: extract_vector_element_build_vector_trunc8
6113 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
6114 // Label 406: @19251
6115 GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(19275), // Rule ID 27 //
6116 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
6117 // MIs[0] root
6118 // No operand predicates
6119 // MIs[0] src
6120 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6121 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6122 GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
6123 // MIs[1] x
6124 // No operand predicates
6125 // MIs[1] y
6126 // No operand predicates
6127 // MIs[1] z
6128 // No operand predicates
6129 // MIs[1] a
6130 // No operand predicates
6131 // MIs[1] b
6132 // No operand predicates
6133 // MIs[1] c
6134 // No operand predicates
6135 // MIs[1] d
6136 // No operand predicates
6137 // MIs[0] idx
6138 // No operand predicates
6139 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6140 // Combiner Rule #25: extract_vector_element_build_vector7
6141 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
6142 // Label 407: @19275
6143 GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(19299), // Rule ID 42 //
6144 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
6145 // MIs[0] root
6146 // No operand predicates
6147 // MIs[0] src
6148 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6149 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
6150 GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
6151 // MIs[1] x
6152 // No operand predicates
6153 // MIs[1] y
6154 // No operand predicates
6155 // MIs[1] z
6156 // No operand predicates
6157 // MIs[1] a
6158 // No operand predicates
6159 // MIs[1] b
6160 // No operand predicates
6161 // MIs[1] c
6162 // No operand predicates
6163 // MIs[1] d
6164 // No operand predicates
6165 // MIs[0] idx
6166 // No operand predicates
6167 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6168 // Combiner Rule #40: extract_vector_element_build_vector_trunc7
6169 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
6170 // Label 408: @19299
6171 GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(19323), // Rule ID 41 //
6172 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
6173 // MIs[0] root
6174 // No operand predicates
6175 // MIs[0] src
6176 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6177 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
6178 GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
6179 // MIs[1] x
6180 // No operand predicates
6181 // MIs[1] y
6182 // No operand predicates
6183 // MIs[1] z
6184 // No operand predicates
6185 // MIs[1] a
6186 // No operand predicates
6187 // MIs[1] b
6188 // No operand predicates
6189 // MIs[1] c
6190 // No operand predicates
6191 // MIs[0] idx
6192 // No operand predicates
6193 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6194 // Combiner Rule #39: extract_vector_element_build_vector_trunc6
6195 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
6196 // Label 409: @19323
6197 GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(19347), // Rule ID 26 //
6198 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
6199 // MIs[0] root
6200 // No operand predicates
6201 // MIs[0] src
6202 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6203 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6204 GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
6205 // MIs[1] x
6206 // No operand predicates
6207 // MIs[1] y
6208 // No operand predicates
6209 // MIs[1] z
6210 // No operand predicates
6211 // MIs[1] a
6212 // No operand predicates
6213 // MIs[1] b
6214 // No operand predicates
6215 // MIs[0] idx
6216 // No operand predicates
6217 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6218 // Combiner Rule #24: extract_vector_element_build_vector5
6219 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
6220 // Label 410: @19347
6221 GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(19371), // Rule ID 40 //
6222 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
6223 // MIs[0] root
6224 // No operand predicates
6225 // MIs[0] src
6226 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6227 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
6228 GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
6229 // MIs[1] x
6230 // No operand predicates
6231 // MIs[1] y
6232 // No operand predicates
6233 // MIs[1] z
6234 // No operand predicates
6235 // MIs[1] a
6236 // No operand predicates
6237 // MIs[1] b
6238 // No operand predicates
6239 // MIs[0] idx
6240 // No operand predicates
6241 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6242 // Combiner Rule #38: extract_vector_element_build_vector_trunc5
6243 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
6244 // Label 411: @19371
6245 GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(19395), // Rule ID 25 //
6246 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
6247 // MIs[0] root
6248 // No operand predicates
6249 // MIs[0] src
6250 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6251 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6252 GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
6253 // MIs[1] x
6254 // No operand predicates
6255 // MIs[1] y
6256 // No operand predicates
6257 // MIs[1] z
6258 // No operand predicates
6259 // MIs[1] a
6260 // No operand predicates
6261 // MIs[0] idx
6262 // No operand predicates
6263 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6264 // Combiner Rule #23: extract_vector_element_build_vector4
6265 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
6266 // Label 412: @19395
6267 GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(19419), // Rule ID 39 //
6268 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
6269 // MIs[0] root
6270 // No operand predicates
6271 // MIs[0] src
6272 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6273 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
6274 GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
6275 // MIs[1] x
6276 // No operand predicates
6277 // MIs[1] y
6278 // No operand predicates
6279 // MIs[1] z
6280 // No operand predicates
6281 // MIs[1] a
6282 // No operand predicates
6283 // MIs[0] idx
6284 // No operand predicates
6285 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6286 // Combiner Rule #37: extract_vector_element_build_vector_trunc4
6287 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
6288 // Label 413: @19419
6289 GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(19443), // Rule ID 24 //
6290 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
6291 // MIs[0] root
6292 // No operand predicates
6293 // MIs[0] src
6294 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6295 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6296 GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
6297 // MIs[1] x
6298 // No operand predicates
6299 // MIs[1] y
6300 // No operand predicates
6301 // MIs[1] z
6302 // No operand predicates
6303 // MIs[0] idx
6304 // No operand predicates
6305 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6306 // Combiner Rule #22: extract_vector_element_build_vector3
6307 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
6308 // Label 414: @19443
6309 GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(19467), // Rule ID 38 //
6310 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
6311 // MIs[0] root
6312 // No operand predicates
6313 // MIs[0] src
6314 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6315 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
6316 GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
6317 // MIs[1] x
6318 // No operand predicates
6319 // MIs[1] y
6320 // No operand predicates
6321 // MIs[1] z
6322 // No operand predicates
6323 // MIs[0] idx
6324 // No operand predicates
6325 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6326 // Combiner Rule #36: extract_vector_element_build_vector_trunc3
6327 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
6328 // Label 415: @19467
6329 GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(19501), // Rule ID 21 //
6330 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
6331 // MIs[0] root
6332 // No operand predicates
6333 // MIs[0] src
6334 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6335 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
6336 // MIs[1] x
6337 // No operand predicates
6338 // MIs[1] value
6339 // No operand predicates
6340 // MIs[1] idx
6341 // No operand predicates
6342 // MIs[0] idx
6343 GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6344 GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6345 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6346 // Combiner Rule #19: extract_vector_element_not_const
6347 GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6348 GIR_EraseRootFromParent_Done,
6349 // Label 416: @19501
6350 GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(19522), // Rule ID 22 //
6351 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
6352 // MIs[0] root
6353 // No operand predicates
6354 // MIs[0] src
6355 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6356 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
6357 // MIs[1] x
6358 // No operand predicates
6359 // MIs[1] value
6360 // No operand predicates
6361 // MIs[1] idx2
6362 // No operand predicates
6363 // MIs[0] idx1
6364 // No operand predicates
6365 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6366 // Combiner Rule #20: extract_vector_element_different_indices
6367 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
6368 // Label 417: @19522
6369 GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(19543), // Rule ID 44 //
6370 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
6371 // MIs[0] root
6372 // No operand predicates
6373 // MIs[0] src
6374 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6375 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
6376 // MIs[1] src1
6377 // No operand predicates
6378 // MIs[1] src2
6379 // No operand predicates
6380 // MIs[1] mask
6381 // No operand predicates
6382 // MIs[0] idx
6383 // No operand predicates
6384 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6385 // Combiner Rule #42: extract_vector_element_shuffle_vector
6386 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
6387 // Label 418: @19543
6388 GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(19567), // Rule ID 23 //
6389 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
6390 // MIs[0] root
6391 // No operand predicates
6392 // MIs[0] src
6393 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6394 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6395 GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
6396 // MIs[1] x
6397 // No operand predicates
6398 // MIs[1] y
6399 // No operand predicates
6400 // MIs[0] idx
6401 // No operand predicates
6402 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6403 // Combiner Rule #21: extract_vector_element_build_vector2
6404 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
6405 // Label 419: @19567
6406 GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(19591), // Rule ID 37 //
6407 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
6408 // MIs[0] root
6409 // No operand predicates
6410 // MIs[0] src
6411 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6412 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
6413 GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
6414 // MIs[1] x
6415 // No operand predicates
6416 // MIs[1] y
6417 // No operand predicates
6418 // MIs[0] idx
6419 // No operand predicates
6420 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6421 // Combiner Rule #35: extract_vector_element_build_vector_trunc2
6422 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
6423 // Label 420: @19591
6424 GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(19615), // Rule ID 15 //
6425 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
6426 // MIs[0] root
6427 // No operand predicates
6428 // MIs[0] vector
6429 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6430 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6431 // MIs[0] idx
6432 // No operand predicates
6433 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6434 // Combiner Rule #13: match_extract_of_element_undef_vector
6435 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6436 GIR_RootToRootCopy, /*OpIdx*/0, // root
6437 GIR_EraseRootFromParent_Done,
6438 // Label 421: @19615
6439 GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(19639), // Rule ID 16 //
6440 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
6441 // MIs[0] root
6442 // No operand predicates
6443 // MIs[0] vector
6444 // No operand predicates
6445 // MIs[0] idx
6446 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6447 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6448 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6449 // Combiner Rule #14: match_extract_of_element_undef_index
6450 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6451 GIR_RootToRootCopy, /*OpIdx*/0, // root
6452 GIR_EraseRootFromParent_Done,
6453 // Label 422: @19639
6454 GIM_Reject,
6455 // Label 90: @19640
6456 GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(19651), // Rule ID 78 //
6457 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
6458 // Combiner Rule #63: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
6459 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
6460 // Label 423: @19651
6461 GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(19662), // Rule ID 79 //
6462 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
6463 // Combiner Rule #64: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
6464 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
6465 // Label 424: @19662
6466 GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(19673), // Rule ID 320 //
6467 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
6468 // Combiner Rule #188: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
6469 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
6470 // Label 425: @19673
6471 GIM_Reject,
6472 // Label 91: @19674
6473 GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(19718), // Rule ID 204 //
6474 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
6475 // MIs[0] d
6476 // No operand predicates
6477 // MIs[0] src
6478 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6479 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6480 // MIs[1] rev
6481 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
6482 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
6483 // MIs[2] val
6484 // No operand predicates
6485 // MIs[1] amt
6486 // No operand predicates
6487 GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
6488 GIM_CheckIsSafeToFold, /*NumInsns*/2,
6489 // Combiner Rule #146: bitreverse_lshr
6490 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
6491 GIR_RootToRootCopy, /*OpIdx*/0, // d
6492 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
6493 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
6494 GIR_EraseRootFromParent_Done,
6495 // Label 426: @19718
6496 GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(19762), // Rule ID 203 //
6497 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
6498 // MIs[0] d
6499 // No operand predicates
6500 // MIs[0] src
6501 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6502 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
6503 // MIs[1] rev
6504 GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
6505 GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
6506 // MIs[2] val
6507 // No operand predicates
6508 // MIs[1] amt
6509 // No operand predicates
6510 GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
6511 GIM_CheckIsSafeToFold, /*NumInsns*/2,
6512 // Combiner Rule #145: bitreverse_shl
6513 GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
6514 GIR_RootToRootCopy, /*OpIdx*/0, // d
6515 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
6516 GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
6517 GIR_EraseRootFromParent_Done,
6518 // Label 427: @19762
6519 GIM_Reject,
6520 // Label 92: @19763
6521 GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(19774), // Rule ID 332 //
6522 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6523 // Combiner Rule #195: rcp_sqrt_to_rsq; wip_match_opcode 'G_FSQRT'
6524 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6525 // Label 428: @19774
6526 GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(19795), // Rule ID 159 //
6527 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
6528 // MIs[0] dst
6529 // No operand predicates
6530 // MIs[0] src0
6531 GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6532 GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6533 // MIs[1] cst
6534 // No operand predicates
6535 GIM_CheckIsSafeToFold, /*NumInsns*/1,
6536 // Combiner Rule #122: constant_fold_fsqrt
6537 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6538 // Label 429: @19795
6539 GIM_Reject,
6540 // Label 93: @19796
6541 GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(19807), // Rule ID 325 //
6542 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
6543 // Combiner Rule #192: cvt_f32_ubyteN; wip_match_opcode 'G_AMDGPU_CVT_F32_UBYTE0'
6544 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
6545 // Label 430: @19807
6546 GIM_Reject,
6547 // Label 94: @19808
6548 GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(19819), // Rule ID 326 //
6549 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
6550 // Combiner Rule #192: cvt_f32_ubyteN; wip_match_opcode 'G_AMDGPU_CVT_F32_UBYTE1'
6551 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
6552 // Label 431: @19819
6553 GIM_Reject,
6554 // Label 95: @19820
6555 GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(19831), // Rule ID 327 //
6556 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
6557 // Combiner Rule #192: cvt_f32_ubyteN; wip_match_opcode 'G_AMDGPU_CVT_F32_UBYTE2'
6558 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
6559 // Label 432: @19831
6560 GIM_Reject,
6561 // Label 96: @19832
6562 GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(19843), // Rule ID 328 //
6563 GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
6564 // Combiner Rule #192: cvt_f32_ubyteN; wip_match_opcode 'G_AMDGPU_CVT_F32_UBYTE3'
6565 GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
6566 // Label 433: @19843
6567 GIM_Reject,
6568 // Label 97: @19844
6569 GIM_Reject,
6570 }; // Size: 19845 bytes
6571 return MatchTable0;
6572}
6573#undef GIMT_Encode2
6574#undef GIMT_Encode4
6575#undef GIMT_Encode8
6576
6577#endif // ifdef GET_GICOMBINER_IMPL
6578
6579#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
6580AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
6581AvailableFunctionFeatures()
6582#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
6583#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
6584, State(0),
6585ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
6586#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
6587
6588