1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* RISCVPostLegalizerCombinerImpl Combiner Match Table *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#ifdef GET_GICOMBINER_DEPS
10
11#include "llvm/ADT/SparseBitVector.h"
12namespace llvm {
13
14extern cl::OptionCategory GICombinerOptionCategory;
15
16} // namespace llvm
17
18#endif // GET_GICOMBINER_DEPS
19
20#ifdef GET_GICOMBINER_TYPES
21
22struct RISCVPostLegalizerCombinerImplRuleConfig {
23 SparseBitVector<> DisabledRules;
24
25 bool isRuleEnabled(unsigned RuleID) const;
26 bool parseCommandLineOption();
27 bool setRuleEnabled(StringRef RuleIdentifier);
28 bool setRuleDisabled(StringRef RuleIdentifier);
29};
30
31static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
32 uint64_t I;
33 // getAtInteger(...) returns false on success
34 bool Parsed = !RuleIdentifier.getAsInteger(0, I);
35 if (Parsed)
36 return I;
37
38#ifndef NDEBUG
39 switch (RuleIdentifier.size()) {
40 default: break;
41 case 10: // 2 strings to match.
42 switch (RuleIdentifier[0]) {
43 default: break;
44 case 'p': // 1 string to match.
45 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
46 break;
47 return 11; // "p2i_to_i2p"
48 case 's': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "ub_to_add", 9) != 0)
50 break;
51 return 0; // "sub_to_add"
52 }
53 break;
54 case 11: // 1 string to match.
55 if (memcmp(RuleIdentifier.data()+0, "add_sub_reg", 11) != 0)
56 break;
57 return 19; // "add_sub_reg"
58 case 13: // 3 strings to match.
59 switch (RuleIdentifier[0]) {
60 default: break;
61 case 'l': // 1 string to match.
62 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
63 break;
64 return 2; // "load_and_mask"
65 case 'r': // 1 string to match.
66 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
67 break;
68 return 3; // "redundant_and"
69 case 's': // 1 string to match.
70 if (memcmp(RuleIdentifier.data()+1, "ame_val_zero", 12) != 0)
71 break;
72 return 8; // "same_val_zero"
73 }
74 break;
75 case 14: // 2 strings to match.
76 switch (RuleIdentifier[0]) {
77 default: break;
78 case 'b': // 1 string to match.
79 if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0)
80 break;
81 return 7; // "binop_same_val"
82 case 'f': // 1 string to match.
83 if (memcmp(RuleIdentifier.data()+1, "neg_fneg_fold", 13) != 0)
84 break;
85 return 16; // "fneg_fneg_fold"
86 }
87 break;
88 case 15: // 2 strings to match.
89 switch (RuleIdentifier[0]) {
90 default: break;
91 case 'e': // 1 string to match.
92 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
93 break;
94 return 1; // "extending_loads"
95 case 'i': // 1 string to match.
96 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i_zext", 14) != 0)
97 break;
98 return 13; // "i2p_to_p2i_zext"
99 }
100 break;
101 case 16: // 1 string to match.
102 if (memcmp(RuleIdentifier.data()+0, "i2p_to_p2i_trunc", 16) != 0)
103 break;
104 return 14; // "i2p_to_p2i_trunc"
105 case 17: // 2 strings to match.
106 switch (RuleIdentifier[0]) {
107 default: break;
108 case 'a': // 1 string to match.
109 if (memcmp(RuleIdentifier.data()+1, "nyext_trunc_fold", 16) != 0)
110 break;
111 return 15; // "anyext_trunc_fold"
112 case 's': // 1 string to match.
113 if (memcmp(RuleIdentifier.data()+1, "hift_immed_chain", 16) != 0)
114 break;
115 return 30; // "shift_immed_chain"
116 }
117 break;
118 case 18: // 3 strings to match.
119 switch (RuleIdentifier[0]) {
120 default: break;
121 case 'b': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
123 break;
124 return 9; // "binop_left_to_zero"
125 case 'f': // 2 strings to match.
126 switch (RuleIdentifier[1]) {
127 default: break;
128 case 'o': // 1 string to match.
129 if (memcmp(RuleIdentifier.data()+2, "ld_fp_zero_store", 16) != 0)
130 break;
131 return 61; // "fold_fp_zero_store"
132 case 'p': // 1 string to match.
133 if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
134 break;
135 return 26; // "fptrunc_fpext_fold"
136 }
137 break;
138 }
139 break;
140 case 19: // 3 strings to match.
141 switch (RuleIdentifier[0]) {
142 default: break;
143 case 'b': // 1 string to match.
144 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
145 break;
146 return 10; // "binop_right_to_zero"
147 case 'r': // 1 string to match.
148 if (memcmp(RuleIdentifier.data()+1, "ight_identity_zero", 18) != 0)
149 break;
150 return 6; // "right_identity_zero"
151 case 's': // 1 string to match.
152 if (memcmp(RuleIdentifier.data()+1, "implify_neg_minmax", 18) != 0)
153 break;
154 return 60; // "simplify_neg_minmax"
155 }
156 break;
157 case 20: // 2 strings to match.
158 switch (RuleIdentifier[0]) {
159 default: break;
160 case 'b': // 1 string to match.
161 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
162 break;
163 return 24; // "bitcast_bitcast_fold"
164 case 'i': // 1 string to match.
165 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i_same_size", 19) != 0)
166 break;
167 return 12; // "i2p_to_p2i_same_size"
168 }
169 break;
170 case 21: // 2 strings to match.
171 switch (RuleIdentifier[0]) {
172 default: break;
173 case 'r': // 1 string to match.
174 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
175 break;
176 return 18; // "right_identity_one_fp"
177 case 's': // 1 string to match.
178 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_equiv", 20) != 0)
179 break;
180 return 5; // "select_same_val_equiv"
181 }
182 break;
183 case 22: // 2 strings to match.
184 switch (RuleIdentifier[0]) {
185 default: break;
186 case 'r': // 1 string to match.
187 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
188 break;
189 return 17; // "right_identity_one_int"
190 case 't': // 1 string to match.
191 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
192 break;
193 return 22; // "trunc_buildvector_fold"
194 }
195 break;
196 case 23: // 1 string to match.
197 if (memcmp(RuleIdentifier.data()+0, "select_same_val_trivial", 23) != 0)
198 break;
199 return 4; // "select_same_val_trivial"
200 case 25: // 1 string to match.
201 if (memcmp(RuleIdentifier.data()+0, "right_identity_neg_one_fp", 25) != 0)
202 break;
203 return 29; // "right_identity_neg_one_fp"
204 case 26: // 2 strings to match.
205 switch (RuleIdentifier[0]) {
206 default: break;
207 case 'b': // 1 string to match.
208 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_to_bitcast", 25) != 0)
209 break;
210 return 25; // "bitcast_bitcast_to_bitcast"
211 case 'r': // 1 string to match.
212 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
213 break;
214 return 27; // "right_identity_neg_zero_fp"
215 }
216 break;
217 case 27: // 1 string to match.
218 if (memcmp(RuleIdentifier.data()+0, "trunc_lshr_buildvector_fold", 27) != 0)
219 break;
220 return 23; // "trunc_lshr_buildvector_fold"
221 case 28: // 2 strings to match.
222 switch (RuleIdentifier[0]) {
223 default: break;
224 case 'G': // 1 string to match.
225 if (memcmp(RuleIdentifier.data()+1, "_OR_commute_constant_to_rhs", 27) != 0)
226 break;
227 return 34; // "G_OR_commute_constant_to_rhs"
228 case 'b': // 1 string to match.
229 if (memcmp(RuleIdentifier.data()+1, "uildvector_identity_fold_bv", 27) != 0)
230 break;
231 return 20; // "buildvector_identity_fold_bv"
232 }
233 break;
234 case 29: // 5 strings to match.
235 switch (RuleIdentifier[0]) {
236 default: break;
237 case 'G': // 4 strings to match.
238 if (RuleIdentifier[1] != '_')
239 break;
240 switch (RuleIdentifier[2]) {
241 default: break;
242 case 'A': // 2 strings to match.
243 switch (RuleIdentifier[3]) {
244 default: break;
245 case 'D': // 1 string to match.
246 if (memcmp(RuleIdentifier.data()+4, "D_commute_constant_to_rhs", 25) != 0)
247 break;
248 return 31; // "G_ADD_commute_constant_to_rhs"
249 case 'N': // 1 string to match.
250 if (memcmp(RuleIdentifier.data()+4, "D_commute_constant_to_rhs", 25) != 0)
251 break;
252 return 33; // "G_AND_commute_constant_to_rhs"
253 }
254 break;
255 case 'M': // 1 string to match.
256 if (memcmp(RuleIdentifier.data()+3, "UL_commute_constant_to_rhs", 26) != 0)
257 break;
258 return 32; // "G_MUL_commute_constant_to_rhs"
259 case 'X': // 1 string to match.
260 if (memcmp(RuleIdentifier.data()+3, "OR_commute_constant_to_rhs", 26) != 0)
261 break;
262 return 35; // "G_XOR_commute_constant_to_rhs"
263 }
264 break;
265 case 'b': // 1 string to match.
266 if (memcmp(RuleIdentifier.data()+1, "uildvector_identity_fold_bvt", 28) != 0)
267 break;
268 return 21; // "buildvector_identity_fold_bvt"
269 }
270 break;
271 case 30: // 5 strings to match.
272 switch (RuleIdentifier[0]) {
273 default: break;
274 case 'G': // 4 strings to match.
275 if (RuleIdentifier[1] != '_')
276 break;
277 switch (RuleIdentifier[2]) {
278 default: break;
279 case 'S': // 2 strings to match.
280 if (RuleIdentifier[3] != 'M')
281 break;
282 switch (RuleIdentifier[4]) {
283 default: break;
284 case 'A': // 1 string to match.
285 if (memcmp(RuleIdentifier.data()+5, "X_commute_constant_to_rhs", 25) != 0)
286 break;
287 return 37; // "G_SMAX_commute_constant_to_rhs"
288 case 'I': // 1 string to match.
289 if (memcmp(RuleIdentifier.data()+5, "N_commute_constant_to_rhs", 25) != 0)
290 break;
291 return 36; // "G_SMIN_commute_constant_to_rhs"
292 }
293 break;
294 case 'U': // 2 strings to match.
295 if (RuleIdentifier[3] != 'M')
296 break;
297 switch (RuleIdentifier[4]) {
298 default: break;
299 case 'A': // 1 string to match.
300 if (memcmp(RuleIdentifier.data()+5, "X_commute_constant_to_rhs", 25) != 0)
301 break;
302 return 39; // "G_UMAX_commute_constant_to_rhs"
303 case 'I': // 1 string to match.
304 if (memcmp(RuleIdentifier.data()+5, "N_commute_constant_to_rhs", 25) != 0)
305 break;
306 return 38; // "G_UMIN_commute_constant_to_rhs"
307 }
308 break;
309 }
310 break;
311 case 'r': // 1 string to match.
312 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
313 break;
314 return 28; // "right_identity_neg_zero_fp_nsz"
315 }
316 break;
317 case 31: // 6 strings to match.
318 if (memcmp(RuleIdentifier.data()+0, "G_", 2) != 0)
319 break;
320 switch (RuleIdentifier[2]) {
321 default: break;
322 case 'S': // 3 strings to match.
323 switch (RuleIdentifier[3]) {
324 default: break;
325 case 'A': // 1 string to match.
326 if (memcmp(RuleIdentifier.data()+4, "DDO_commute_constant_to_rhs", 27) != 0)
327 break;
328 return 49; // "G_SADDO_commute_constant_to_rhs"
329 case 'M': // 2 strings to match.
330 if (memcmp(RuleIdentifier.data()+4, "UL", 2) != 0)
331 break;
332 switch (RuleIdentifier[6]) {
333 default: break;
334 case 'H': // 1 string to match.
335 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
336 break;
337 return 41; // "G_SMULH_commute_constant_to_rhs"
338 case 'O': // 1 string to match.
339 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
340 break;
341 return 51; // "G_SMULO_commute_constant_to_rhs"
342 }
343 break;
344 }
345 break;
346 case 'U': // 3 strings to match.
347 switch (RuleIdentifier[3]) {
348 default: break;
349 case 'A': // 1 string to match.
350 if (memcmp(RuleIdentifier.data()+4, "DDO_commute_constant_to_rhs", 27) != 0)
351 break;
352 return 48; // "G_UADDO_commute_constant_to_rhs"
353 case 'M': // 2 strings to match.
354 if (memcmp(RuleIdentifier.data()+4, "UL", 2) != 0)
355 break;
356 switch (RuleIdentifier[6]) {
357 default: break;
358 case 'H': // 1 string to match.
359 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
360 break;
361 return 40; // "G_UMULH_commute_constant_to_rhs"
362 case 'O': // 1 string to match.
363 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
364 break;
365 return 50; // "G_UMULO_commute_constant_to_rhs"
366 }
367 break;
368 }
369 break;
370 }
371 break;
372 case 33: // 6 strings to match.
373 if (memcmp(RuleIdentifier.data()+0, "G_", 2) != 0)
374 break;
375 switch (RuleIdentifier[2]) {
376 default: break;
377 case 'F': // 2 strings to match.
378 switch (RuleIdentifier[3]) {
379 default: break;
380 case 'A': // 1 string to match.
381 if (memcmp(RuleIdentifier.data()+4, "DD_commute_fp_constant_to_rhs", 29) != 0)
382 break;
383 return 52; // "G_FADD_commute_fp_constant_to_rhs"
384 case 'M': // 1 string to match.
385 if (memcmp(RuleIdentifier.data()+4, "UL_commute_fp_constant_to_rhs", 29) != 0)
386 break;
387 return 53; // "G_FMUL_commute_fp_constant_to_rhs"
388 }
389 break;
390 case 'S': // 2 strings to match.
391 switch (RuleIdentifier[3]) {
392 default: break;
393 case 'A': // 1 string to match.
394 if (memcmp(RuleIdentifier.data()+4, "DDSAT_commute_constant_to_rhs", 29) != 0)
395 break;
396 return 43; // "G_SADDSAT_commute_constant_to_rhs"
397 case 'M': // 1 string to match.
398 if (memcmp(RuleIdentifier.data()+4, "ULFIX_commute_constant_to_rhs", 29) != 0)
399 break;
400 return 44; // "G_SMULFIX_commute_constant_to_rhs"
401 }
402 break;
403 case 'U': // 2 strings to match.
404 switch (RuleIdentifier[3]) {
405 default: break;
406 case 'A': // 1 string to match.
407 if (memcmp(RuleIdentifier.data()+4, "DDSAT_commute_constant_to_rhs", 29) != 0)
408 break;
409 return 42; // "G_UADDSAT_commute_constant_to_rhs"
410 case 'M': // 1 string to match.
411 if (memcmp(RuleIdentifier.data()+4, "ULFIX_commute_constant_to_rhs", 29) != 0)
412 break;
413 return 45; // "G_UMULFIX_commute_constant_to_rhs"
414 }
415 break;
416 }
417 break;
418 case 36: // 4 strings to match.
419 if (memcmp(RuleIdentifier.data()+0, "G_", 2) != 0)
420 break;
421 switch (RuleIdentifier[2]) {
422 default: break;
423 case 'F': // 2 strings to match.
424 if (RuleIdentifier[3] != 'M')
425 break;
426 switch (RuleIdentifier[4]) {
427 default: break;
428 case 'A': // 1 string to match.
429 if (memcmp(RuleIdentifier.data()+5, "XNUM_commute_fp_constant_to_rhs", 31) != 0)
430 break;
431 return 55; // "G_FMAXNUM_commute_fp_constant_to_rhs"
432 case 'I': // 1 string to match.
433 if (memcmp(RuleIdentifier.data()+5, "NNUM_commute_fp_constant_to_rhs", 31) != 0)
434 break;
435 return 54; // "G_FMINNUM_commute_fp_constant_to_rhs"
436 }
437 break;
438 case 'S': // 1 string to match.
439 if (memcmp(RuleIdentifier.data()+3, "MULFIXSAT_commute_constant_to_rhs", 33) != 0)
440 break;
441 return 46; // "G_SMULFIXSAT_commute_constant_to_rhs"
442 case 'U': // 1 string to match.
443 if (memcmp(RuleIdentifier.data()+3, "MULFIXSAT_commute_constant_to_rhs", 33) != 0)
444 break;
445 return 47; // "G_UMULFIXSAT_commute_constant_to_rhs"
446 }
447 break;
448 case 37: // 2 strings to match.
449 if (memcmp(RuleIdentifier.data()+0, "G_FM", 4) != 0)
450 break;
451 switch (RuleIdentifier[4]) {
452 default: break;
453 case 'A': // 1 string to match.
454 if (memcmp(RuleIdentifier.data()+5, "XIMUM_commute_fp_constant_to_rhs", 32) != 0)
455 break;
456 return 59; // "G_FMAXIMUM_commute_fp_constant_to_rhs"
457 case 'I': // 1 string to match.
458 if (memcmp(RuleIdentifier.data()+5, "NIMUM_commute_fp_constant_to_rhs", 32) != 0)
459 break;
460 return 58; // "G_FMINIMUM_commute_fp_constant_to_rhs"
461 }
462 break;
463 case 41: // 2 strings to match.
464 if (memcmp(RuleIdentifier.data()+0, "G_FM", 4) != 0)
465 break;
466 switch (RuleIdentifier[4]) {
467 default: break;
468 case 'A': // 1 string to match.
469 if (memcmp(RuleIdentifier.data()+5, "XNUM_IEEE_commute_fp_constant_to_rhs", 36) != 0)
470 break;
471 return 57; // "G_FMAXNUM_IEEE_commute_fp_constant_to_rhs"
472 case 'I': // 1 string to match.
473 if (memcmp(RuleIdentifier.data()+5, "NNUM_IEEE_commute_fp_constant_to_rhs", 36) != 0)
474 break;
475 return 56; // "G_FMINNUM_IEEE_commute_fp_constant_to_rhs"
476 }
477 break;
478 }
479#endif // ifndef NDEBUG
480
481 return std::nullopt;
482}
483static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
484 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
485 if (!RangePair.second.empty()) {
486 const auto First = getRuleIdxForIdentifier(RangePair.first);
487 const auto Last = getRuleIdxForIdentifier(RangePair.second);
488 if (!First || !Last)
489 return std::nullopt;
490 if (First >= Last)
491 report_fatal_error("Beginning of range should be before end of range");
492 return {{*First, *Last + 1}};
493 }
494 if (RangePair.first == "*") {
495 return {{0, 62}};
496 }
497 const auto I = getRuleIdxForIdentifier(RangePair.first);
498 if (!I)
499 return std::nullopt;
500 return {{*I, *I + 1}};
501}
502
503bool RISCVPostLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
504 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
505 if (!MaybeRange)
506 return false;
507 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
508 DisabledRules.reset(I);
509 return true;
510}
511
512bool RISCVPostLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
513 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
514 if (!MaybeRange)
515 return false;
516 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
517 DisabledRules.set(I);
518 return true;
519}
520
521static std::vector<std::string> RISCVPostLegalizerCombinerOption;
522static cl::list<std::string> RISCVPostLegalizerCombinerDisableOption(
523 "riscvpostlegalizercombiner-disable-rule",
524 cl::desc("Disable one or more combiner rules temporarily in the RISCVPostLegalizerCombiner pass"),
525 cl::CommaSeparated,
526 cl::Hidden,
527 cl::cat(GICombinerOptionCategory),
528 cl::callback([](const std::string &Str) {
529 RISCVPostLegalizerCombinerOption.push_back(Str);
530 }));
531static cl::list<std::string> RISCVPostLegalizerCombinerOnlyEnableOption(
532 "riscvpostlegalizercombiner-only-enable-rule",
533 cl::desc("Disable all rules in the RISCVPostLegalizerCombiner pass then re-enable the specified ones"),
534 cl::Hidden,
535 cl::cat(GICombinerOptionCategory),
536 cl::callback([](const std::string &CommaSeparatedArg) {
537 StringRef Str = CommaSeparatedArg;
538 RISCVPostLegalizerCombinerOption.push_back("*");
539 do {
540 auto X = Str.split(",");
541 RISCVPostLegalizerCombinerOption.push_back(("!" + X.first).str());
542 Str = X.second;
543 } while (!Str.empty());
544 }));
545
546
547bool RISCVPostLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
548 return !DisabledRules.test(RuleID);
549}
550bool RISCVPostLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
551 for (StringRef Identifier : RISCVPostLegalizerCombinerOption) {
552 bool Enabled = Identifier.consume_front("!");
553 if (Enabled && !setRuleEnabled(Identifier))
554 return false;
555 if (!Enabled && !setRuleDisabled(Identifier))
556 return false;
557 }
558 return true;
559}
560
561
562#endif // GET_GICOMBINER_TYPES
563
564#ifdef GET_GICOMBINER_TYPES
565
566const unsigned MAX_SUBTARGET_PREDICATES = 0;
567using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
568
569#endif // GET_GICOMBINER_TYPES
570
571#ifdef GET_GICOMBINER_CLASS_MEMBERS
572
573 bool canMatchOpcode(unsigned Opc) const override;
574 uint32_t getRootFlagsToDrop() const override;
575
576#endif // GET_GICOMBINER_CLASS_MEMBERS
577
578#ifdef GET_GICOMBINER_CLASS_MEMBERS
579
580PredicateBitset AvailableModuleFeatures;
581mutable PredicateBitset AvailableFunctionFeatures;
582PredicateBitset getAvailableFeatures() const {
583 return AvailableModuleFeatures | AvailableFunctionFeatures;
584}
585PredicateBitset
586computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const;
587PredicateBitset
588computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget,
589 const MachineFunction *MF) const;
590void setupGeneratedPerFunctionState(MachineFunction &MF) override;
591
592#endif // GET_GICOMBINER_CLASS_MEMBERS
593
594#ifdef GET_GICOMBINER_CLASS_MEMBERS
595
596 mutable MatcherState State;
597 typedef ComplexRendererFns(RISCVPostLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
598 typedef void(RISCVPostLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
599 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
600 static RISCVPostLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
601 static RISCVPostLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
602 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
603 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
604 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
605 const uint8_t *getMatchTable() const override;
606 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
607 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
608 bool testSimplePredicate(unsigned PredicateID) const override;
609 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
610
611#endif // GET_GICOMBINER_CLASS_MEMBERS
612
613#ifdef GET_GICOMBINER_IMPL
614
615// LLT Objects.
616enum {
617 GILLT_s1,
618};
619const static size_t NumTypeObjects = 1;
620const static LLT TypeObjects[] = {
621 LLT::scalar(1),
622};
623
624// Bits for subtarget features that participate in instruction matching.
625enum SubtargetFeatureBits : uint8_t {
626};
627
628PredicateBitset RISCVPostLegalizerCombinerImpl::
629computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const {
630 PredicateBitset Features{};
631 return Features;
632}
633
634void RISCVPostLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
635 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const RISCVSubtarget *)&MF.getSubtarget(), &MF);
636}
637PredicateBitset RISCVPostLegalizerCombinerImpl::
638computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget, const MachineFunction *MF) const {
639 PredicateBitset Features{};
640 return Features;
641}
642
643// Feature bitsets.
644enum {
645 GIFBS_Invalid,
646};
647constexpr static PredicateBitset FeatureBitsets[] {
648 {}, // GIFBS_Invalid
649};
650
651// ComplexPattern predicates.
652enum {
653 GICP_Invalid,
654};
655// See constructor for table contents
656
657RISCVPostLegalizerCombinerImpl::ComplexMatcherMemFn
658RISCVPostLegalizerCombinerImpl::ComplexPredicateFns[] = {
659 nullptr, // GICP_Invalid
660};
661
662enum {
663 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
664 GICXXPred_MI_Predicate_GICombiner1,
665 GICXXPred_MI_Predicate_GICombiner2,
666 GICXXPred_MI_Predicate_GICombiner3,
667 GICXXPred_MI_Predicate_GICombiner4,
668 GICXXPred_MI_Predicate_GICombiner5,
669 GICXXPred_MI_Predicate_GICombiner6,
670 GICXXPred_MI_Predicate_GICombiner7,
671 GICXXPred_MI_Predicate_GICombiner8,
672 GICXXPred_MI_Predicate_GICombiner9,
673 GICXXPred_MI_Predicate_GICombiner10,
674 GICXXPred_MI_Predicate_GICombiner11,
675 GICXXPred_MI_Predicate_GICombiner12,
676};
677bool RISCVPostLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
678 switch (PredicateID) {
679 case GICXXPred_MI_Predicate_GICombiner0: {
680 return Helper.matchSelectSameVal(*State.MIs[0]);
681 }
682 case GICXXPred_MI_Predicate_GICombiner1: {
683 return Helper.matchConstantOp(State.MIs[0]->getOperand(1), 0);
684 }
685 case GICXXPred_MI_Predicate_GICombiner2: {
686 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());
687 }
688 case GICXXPred_MI_Predicate_GICombiner3: {
689 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).getSizeInBits() ==
690 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getSizeInBits();
691 }
692 case GICXXPred_MI_Predicate_GICombiner4: {
693 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).getSizeInBits() >
694 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getSizeInBits();
695 }
696 case GICXXPred_MI_Predicate_GICombiner5: {
697 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).getSizeInBits() <
698 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getSizeInBits();
699 }
700 case GICXXPred_MI_Predicate_GICombiner6: {
701 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
702 }
703 case GICXXPred_MI_Predicate_GICombiner7: {
704 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
705 }
706 case GICXXPred_MI_Predicate_GICombiner8: {
707 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
708 }
709 case GICXXPred_MI_Predicate_GICombiner9: {
710 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
711 }
712 case GICXXPred_MI_Predicate_GICombiner10: {
713 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
714 }
715 case GICXXPred_MI_Predicate_GICombiner11: {
716 return Helper.matchCommuteConstantToRHS(*State.MIs[0]);
717 }
718 case GICXXPred_MI_Predicate_GICombiner12: {
719 return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);
720 }
721 }
722 llvm_unreachable("Unknown predicate");
723 return false;
724}
725bool RISCVPostLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
726 llvm_unreachable("Unknown predicate");
727 return false;
728}
729bool RISCVPostLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
730 llvm_unreachable("Unknown predicate");
731 return false;
732}
733bool RISCVPostLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
734 llvm_unreachable("Unknown predicate");
735 return false;
736}
737bool RISCVPostLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
738 llvm_unreachable("Unknown predicate");
739 return false;
740}
741enum {
742 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
743 GICXXPred_Simple_IsRule1Enabled,
744 GICXXPred_Simple_IsRule2Enabled,
745 GICXXPred_Simple_IsRule3Enabled,
746 GICXXPred_Simple_IsRule4Enabled,
747 GICXXPred_Simple_IsRule5Enabled,
748 GICXXPred_Simple_IsRule6Enabled,
749 GICXXPred_Simple_IsRule7Enabled,
750 GICXXPred_Simple_IsRule8Enabled,
751 GICXXPred_Simple_IsRule9Enabled,
752 GICXXPred_Simple_IsRule10Enabled,
753 GICXXPred_Simple_IsRule11Enabled,
754 GICXXPred_Simple_IsRule12Enabled,
755 GICXXPred_Simple_IsRule13Enabled,
756 GICXXPred_Simple_IsRule14Enabled,
757 GICXXPred_Simple_IsRule15Enabled,
758 GICXXPred_Simple_IsRule16Enabled,
759 GICXXPred_Simple_IsRule17Enabled,
760 GICXXPred_Simple_IsRule18Enabled,
761 GICXXPred_Simple_IsRule19Enabled,
762 GICXXPred_Simple_IsRule20Enabled,
763 GICXXPred_Simple_IsRule21Enabled,
764 GICXXPred_Simple_IsRule22Enabled,
765 GICXXPred_Simple_IsRule23Enabled,
766 GICXXPred_Simple_IsRule24Enabled,
767 GICXXPred_Simple_IsRule25Enabled,
768 GICXXPred_Simple_IsRule26Enabled,
769 GICXXPred_Simple_IsRule27Enabled,
770 GICXXPred_Simple_IsRule28Enabled,
771 GICXXPred_Simple_IsRule29Enabled,
772 GICXXPred_Simple_IsRule30Enabled,
773 GICXXPred_Simple_IsRule31Enabled,
774 GICXXPred_Simple_IsRule32Enabled,
775 GICXXPred_Simple_IsRule33Enabled,
776 GICXXPred_Simple_IsRule34Enabled,
777 GICXXPred_Simple_IsRule35Enabled,
778 GICXXPred_Simple_IsRule36Enabled,
779 GICXXPred_Simple_IsRule37Enabled,
780 GICXXPred_Simple_IsRule38Enabled,
781 GICXXPred_Simple_IsRule39Enabled,
782 GICXXPred_Simple_IsRule40Enabled,
783 GICXXPred_Simple_IsRule41Enabled,
784 GICXXPred_Simple_IsRule42Enabled,
785 GICXXPred_Simple_IsRule43Enabled,
786 GICXXPred_Simple_IsRule44Enabled,
787 GICXXPred_Simple_IsRule45Enabled,
788 GICXXPred_Simple_IsRule46Enabled,
789 GICXXPred_Simple_IsRule47Enabled,
790 GICXXPred_Simple_IsRule48Enabled,
791 GICXXPred_Simple_IsRule49Enabled,
792 GICXXPred_Simple_IsRule50Enabled,
793 GICXXPred_Simple_IsRule51Enabled,
794 GICXXPred_Simple_IsRule52Enabled,
795 GICXXPred_Simple_IsRule53Enabled,
796 GICXXPred_Simple_IsRule54Enabled,
797 GICXXPred_Simple_IsRule55Enabled,
798 GICXXPred_Simple_IsRule56Enabled,
799 GICXXPred_Simple_IsRule57Enabled,
800 GICXXPred_Simple_IsRule58Enabled,
801 GICXXPred_Simple_IsRule59Enabled,
802 GICXXPred_Simple_IsRule60Enabled,
803 GICXXPred_Simple_IsRule61Enabled,
804};
805
806bool RISCVPostLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
807 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
808}
809// Custom renderers.
810enum {
811 GICR_Invalid,
812};
813RISCVPostLegalizerCombinerImpl::CustomRendererFn
814RISCVPostLegalizerCombinerImpl::CustomRenderers[] = {
815 nullptr, // GICR_Invalid
816};
817
818bool RISCVPostLegalizerCombinerImpl::canMatchOpcode(unsigned Opc) const {
819 switch (Opc) {
820 case TargetOpcode::G_SADDO:
821 case TargetOpcode::G_SELECT:
822 case TargetOpcode::G_SMULFIX:
823 case TargetOpcode::G_SMULFIXSAT:
824 case TargetOpcode::G_SMULO:
825 case TargetOpcode::G_UADDO:
826 case TargetOpcode::G_UMULFIX:
827 case TargetOpcode::G_UMULFIXSAT:
828 case TargetOpcode::G_UMULO:
829 case TargetOpcode::G_ADD:
830 case TargetOpcode::G_AND:
831 case TargetOpcode::G_ASHR:
832 case TargetOpcode::G_FADD:
833 case TargetOpcode::G_FMAXIMUM:
834 case TargetOpcode::G_FMAXNUM:
835 case TargetOpcode::G_FMAXNUM_IEEE:
836 case TargetOpcode::G_FMINIMUM:
837 case TargetOpcode::G_FMINNUM:
838 case TargetOpcode::G_FMINNUM_IEEE:
839 case TargetOpcode::G_FMUL:
840 case TargetOpcode::G_LSHR:
841 case TargetOpcode::G_MUL:
842 case TargetOpcode::G_OR:
843 case TargetOpcode::G_PTR_ADD:
844 case TargetOpcode::G_ROTL:
845 case TargetOpcode::G_ROTR:
846 case TargetOpcode::G_SADDSAT:
847 case TargetOpcode::G_SDIV:
848 case TargetOpcode::G_SHL:
849 case TargetOpcode::G_SMAX:
850 case TargetOpcode::G_SMIN:
851 case TargetOpcode::G_SMULH:
852 case TargetOpcode::G_SREM:
853 case TargetOpcode::G_SSHLSAT:
854 case TargetOpcode::G_SUB:
855 case TargetOpcode::G_UADDSAT:
856 case TargetOpcode::G_UDIV:
857 case TargetOpcode::G_UMAX:
858 case TargetOpcode::G_UMIN:
859 case TargetOpcode::G_UMULH:
860 case TargetOpcode::G_UREM:
861 case TargetOpcode::G_USHLSAT:
862 case TargetOpcode::G_XOR:
863 case TargetOpcode::G_ANYEXT:
864 case TargetOpcode::G_BITCAST:
865 case TargetOpcode::G_BUILD_VECTOR:
866 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
867 case TargetOpcode::G_FNEG:
868 case TargetOpcode::G_FPTRUNC:
869 case TargetOpcode::G_INTTOPTR:
870 case TargetOpcode::G_LOAD:
871 case TargetOpcode::G_PTRTOINT:
872 case TargetOpcode::G_SEXTLOAD:
873 case TargetOpcode::G_STORE:
874 case TargetOpcode::G_TRUNC:
875 case TargetOpcode::G_ZEXTLOAD:
876 return true;
877 default:
878 return false;
879 }
880}
881
882uint32_t RISCVPostLegalizerCombinerImpl::getRootFlagsToDrop() const {
883 return MachineInstr::getPoisonGeneratingFlags();
884}
885
886bool RISCVPostLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
887 const PredicateBitset AvailableFeatures = getAvailableFeatures();
888 State.MIs.clear();
889 State.MIs.push_back(&I);
890 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
891 return true;
892 }
893
894 return false;
895}
896
897enum {
898 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
899 GICXXCustomAction_GICombiner1,
900 GICXXCustomAction_GICombiner2,
901 GICXXCustomAction_GICombiner3,
902 GICXXCustomAction_GICombiner4,
903 GICXXCustomAction_GICombiner5,
904 GICXXCustomAction_GICombiner6,
905 GICXXCustomAction_GICombiner7,
906 GICXXCustomAction_GICombiner8,
907 GICXXCustomAction_GICombiner9,
908 GICXXCustomAction_GICombiner10,
909};
910bool RISCVPostLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
911 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
912 switch(ApplyID) {
913 case GICXXCustomAction_GICombiner0:{
914 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
915 // Match Patterns
916 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
917 return false;
918 }
919 // Apply Patterns
920 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
921 return true;
922 }
923 case GICXXCustomAction_GICombiner1:{
924 PreferredTuple GIMatchData_matchinfo;
925 // Match Patterns
926 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
927 return false;
928 }
929 // Apply Patterns
930 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
931 return true;
932 }
933 case GICXXCustomAction_GICombiner2:{
934 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
935 // Match Patterns
936 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
937 return false;
938 }
939 // Apply Patterns
940 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
941 return true;
942 }
943 case GICXXCustomAction_GICombiner3:{
944 Register GIMatchData_matchinfo;
945 // Match Patterns
946 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
947 return false;
948 }
949 // Apply Patterns
950 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
951 return true;
952 }
953 case GICXXCustomAction_GICombiner4:{
954 Register GIMatchData_matchinfo;
955 // Match Patterns
956 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
957 return false;
958 }
959 // Apply Patterns
960 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
961 return true;
962 }
963 case GICXXCustomAction_GICombiner5:{
964 Register GIMatchData_matchinfo;
965 // Match Patterns
966 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
967 return false;
968 }
969 // Apply Patterns
970 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
971 return true;
972 }
973 case GICXXCustomAction_GICombiner6:{
974 Register GIMatchData_matchinfo;
975 // Match Patterns
976 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
977 return false;
978 }
979 // Apply Patterns
980 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
981 return true;
982 }
983 case GICXXCustomAction_GICombiner7:{
984 Register GIMatchData_matchinfo;
985 // Match Patterns
986 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
987 return false;
988 }
989 // Apply Patterns
990 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
991 return true;
992 }
993 case GICXXCustomAction_GICombiner8:{
994 RegisterImmPair GIMatchData_matchinfo;
995 // Match Patterns
996 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
997 return false;
998 }
999 // Apply Patterns
1000 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
1001 return true;
1002 }
1003 case GICXXCustomAction_GICombiner9:{
1004 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1005 // Match Patterns
1006 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
1007 return false;
1008 }
1009 // Apply Patterns
1010 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1011 return true;
1012 }
1013 case GICXXCustomAction_GICombiner10:{
1014 Register GIMatchData_matchinfo;
1015 // Match Patterns
1016 if(![&](){return matchFoldFPZeroStore(*State.MIs[0], MRI, STI, GIMatchData_matchinfo);}()) {
1017 return false;
1018 }
1019 // Apply Patterns
1020 applyFoldFPZeroStore(*State.MIs[0], MRI, B, STI, GIMatchData_matchinfo);
1021 return true;
1022 }
1023 }
1024 llvm_unreachable("Unknown Apply Action");
1025}
1026#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
1027#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
1028#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
1029#define GIMT_Encode8(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24), uint8_t(uint64_t(Val) >> 32), uint8_t(uint64_t(Val) >> 40), uint8_t(uint64_t(Val) >> 48), uint8_t(uint64_t(Val) >> 56)
1030#else
1031#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
1032#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
1033#define GIMT_Encode8(Val) uint8_t(uint64_t(Val) >> 56), uint8_t(uint64_t(Val) >> 48), uint8_t(uint64_t(Val) >> 40), uint8_t(uint64_t(Val) >> 32), uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
1034#endif
1035const uint8_t *RISCVPostLegalizerCombinerImpl::getMatchTable() const {
1036 constexpr static uint8_t MatchTable0[] = {
1037 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(55), GIMT_Encode2(246), /*)*//*default:*//*Label 56*/ GIMT_Encode4(2837),
1038 /* 10 */ /*TargetOpcode::G_ADD*//*Label 0*/ GIMT_Encode4(774),
1039 /* 14 */ /*TargetOpcode::G_SUB*//*Label 1*/ GIMT_Encode4(891),
1040 /* 18 */ /*TargetOpcode::G_MUL*//*Label 2*/ GIMT_Encode4(986),
1041 /* 22 */ /*TargetOpcode::G_SDIV*//*Label 3*/ GIMT_Encode4(1081),
1042 /* 26 */ /*TargetOpcode::G_UDIV*//*Label 4*/ GIMT_Encode4(1105),
1043 /* 30 */ /*TargetOpcode::G_SREM*//*Label 5*/ GIMT_Encode4(1129),
1044 /* 34 */ /*TargetOpcode::G_UREM*//*Label 6*/ GIMT_Encode4(1153), GIMT_Encode4(0), GIMT_Encode4(0),
1045 /* 46 */ /*TargetOpcode::G_AND*//*Label 7*/ GIMT_Encode4(1177),
1046 /* 50 */ /*TargetOpcode::G_OR*//*Label 8*/ GIMT_Encode4(1249),
1047 /* 54 */ /*TargetOpcode::G_XOR*//*Label 9*/ GIMT_Encode4(1322), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1048 /* 122 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 10*/ GIMT_Encode4(1410),
1049 /* 126 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 11*/ GIMT_Encode4(1425), GIMT_Encode4(0),
1050 /* 134 */ /*TargetOpcode::G_PTRTOINT*//*Label 12*/ GIMT_Encode4(1440),
1051 /* 138 */ /*TargetOpcode::G_INTTOPTR*//*Label 13*/ GIMT_Encode4(1537),
1052 /* 142 */ /*TargetOpcode::G_BITCAST*//*Label 14*/ GIMT_Encode4(1571), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1053 /* 186 */ /*TargetOpcode::G_LOAD*//*Label 15*/ GIMT_Encode4(1637),
1054 /* 190 */ /*TargetOpcode::G_SEXTLOAD*//*Label 16*/ GIMT_Encode4(1649),
1055 /* 194 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 17*/ GIMT_Encode4(1661), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1056 /* 214 */ /*TargetOpcode::G_STORE*//*Label 18*/ GIMT_Encode4(1673), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1057 /* 362 */ /*TargetOpcode::G_ANYEXT*//*Label 19*/ GIMT_Encode4(1685),
1058 /* 366 */ /*TargetOpcode::G_TRUNC*//*Label 20*/ GIMT_Encode4(1697), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1059 /* 410 */ /*TargetOpcode::G_SHL*//*Label 21*/ GIMT_Encode4(1720),
1060 /* 414 */ /*TargetOpcode::G_LSHR*//*Label 22*/ GIMT_Encode4(1778),
1061 /* 418 */ /*TargetOpcode::G_ASHR*//*Label 23*/ GIMT_Encode4(1836), GIMT_Encode4(0), GIMT_Encode4(0),
1062 /* 430 */ /*TargetOpcode::G_ROTR*//*Label 24*/ GIMT_Encode4(1894),
1063 /* 434 */ /*TargetOpcode::G_ROTL*//*Label 25*/ GIMT_Encode4(1918), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1064 /* 454 */ /*TargetOpcode::G_SELECT*//*Label 26*/ GIMT_Encode4(1942),
1065 /* 458 */ /*TargetOpcode::G_UADDO*//*Label 27*/ GIMT_Encode4(1990), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1066 /* 474 */ /*TargetOpcode::G_SADDO*//*Label 28*/ GIMT_Encode4(2018), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1067 /* 490 */ /*TargetOpcode::G_UMULO*//*Label 29*/ GIMT_Encode4(2046),
1068 /* 494 */ /*TargetOpcode::G_SMULO*//*Label 30*/ GIMT_Encode4(2074),
1069 /* 498 */ /*TargetOpcode::G_UMULH*//*Label 31*/ GIMT_Encode4(2102),
1070 /* 502 */ /*TargetOpcode::G_SMULH*//*Label 32*/ GIMT_Encode4(2128),
1071 /* 506 */ /*TargetOpcode::G_UADDSAT*//*Label 33*/ GIMT_Encode4(2154),
1072 /* 510 */ /*TargetOpcode::G_SADDSAT*//*Label 34*/ GIMT_Encode4(2180), GIMT_Encode4(0), GIMT_Encode4(0),
1073 /* 522 */ /*TargetOpcode::G_USHLSAT*//*Label 35*/ GIMT_Encode4(2206),
1074 /* 526 */ /*TargetOpcode::G_SSHLSAT*//*Label 36*/ GIMT_Encode4(2218),
1075 /* 530 */ /*TargetOpcode::G_SMULFIX*//*Label 37*/ GIMT_Encode4(2230),
1076 /* 534 */ /*TargetOpcode::G_UMULFIX*//*Label 38*/ GIMT_Encode4(2258),
1077 /* 538 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 39*/ GIMT_Encode4(2286),
1078 /* 542 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 40*/ GIMT_Encode4(2314), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1079 /* 562 */ /*TargetOpcode::G_FADD*//*Label 41*/ GIMT_Encode4(2342), GIMT_Encode4(0),
1080 /* 570 */ /*TargetOpcode::G_FMUL*//*Label 42*/ GIMT_Encode4(2420), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1081 /* 634 */ /*TargetOpcode::G_FNEG*//*Label 43*/ GIMT_Encode4(2489), GIMT_Encode4(0),
1082 /* 642 */ /*TargetOpcode::G_FPTRUNC*//*Label 44*/ GIMT_Encode4(2519), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1083 /* 686 */ /*TargetOpcode::G_FMINNUM*//*Label 45*/ GIMT_Encode4(2553),
1084 /* 690 */ /*TargetOpcode::G_FMAXNUM*//*Label 46*/ GIMT_Encode4(2579),
1085 /* 694 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 47*/ GIMT_Encode4(2605),
1086 /* 698 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 48*/ GIMT_Encode4(2631),
1087 /* 702 */ /*TargetOpcode::G_FMINIMUM*//*Label 49*/ GIMT_Encode4(2657),
1088 /* 706 */ /*TargetOpcode::G_FMAXIMUM*//*Label 50*/ GIMT_Encode4(2683), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1089 /* 750 */ /*TargetOpcode::G_PTR_ADD*//*Label 51*/ GIMT_Encode4(2709), GIMT_Encode4(0),
1090 /* 758 */ /*TargetOpcode::G_SMIN*//*Label 52*/ GIMT_Encode4(2733),
1091 /* 762 */ /*TargetOpcode::G_SMAX*//*Label 53*/ GIMT_Encode4(2759),
1092 /* 766 */ /*TargetOpcode::G_UMIN*//*Label 54*/ GIMT_Encode4(2785),
1093 /* 770 */ /*TargetOpcode::G_UMAX*//*Label 55*/ GIMT_Encode4(2811),
1094 /* 774 */ // Label 0: @774
1095 /* 774 */ GIM_Try, /*On fail goto*//*Label 57*/ GIMT_Encode4(808), // Rule ID 40 //
1096 /* 779 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
1097 /* 782 */ // MIs[0] dst
1098 /* 782 */ // No operand predicates
1099 /* 782 */ // MIs[0] __add_sub_reg_match_0.tmp
1100 /* 782 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1101 /* 786 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
1102 /* 790 */ // MIs[1] src
1103 /* 790 */ // No operand predicates
1104 /* 790 */ // MIs[1] __add_sub_reg_match_0.x
1105 /* 790 */ // No operand predicates
1106 /* 790 */ // MIs[0] __add_sub_reg_match_0.x
1107 /* 790 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
1108 /* 795 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1109 /* 800 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1110 /* 802 */ // Combiner Rule #19: add_sub_reg @ [__add_sub_reg_match_0[1]]
1111 /* 802 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1112 /* 807 */ GIR_EraseRootFromParent_Done,
1113 /* 808 */ // Label 57: @808
1114 /* 808 */ GIM_Try, /*On fail goto*//*Label 58*/ GIMT_Encode4(842), // Rule ID 39 //
1115 /* 813 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
1116 /* 816 */ // MIs[0] dst
1117 /* 816 */ // No operand predicates
1118 /* 816 */ // MIs[0] __add_sub_reg_match_0.x
1119 /* 816 */ // No operand predicates
1120 /* 816 */ // MIs[0] __add_sub_reg_match_0.tmp
1121 /* 816 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
1122 /* 820 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
1123 /* 824 */ // MIs[1] src
1124 /* 824 */ // No operand predicates
1125 /* 824 */ // MIs[1] __add_sub_reg_match_0.x
1126 /* 824 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1127 /* 829 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1128 /* 834 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1129 /* 836 */ // Combiner Rule #19: add_sub_reg @ [__add_sub_reg_match_0[0]]
1130 /* 836 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1131 /* 841 */ GIR_EraseRootFromParent_Done,
1132 /* 842 */ // Label 58: @842
1133 /* 842 */ GIM_Try, /*On fail goto*//*Label 59*/ GIMT_Encode4(865), // Rule ID 9 //
1134 /* 847 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1135 /* 850 */ // MIs[0] dst
1136 /* 850 */ // No operand predicates
1137 /* 850 */ // MIs[0] lhs
1138 /* 850 */ // No operand predicates
1139 /* 850 */ // MIs[0] Operand 2
1140 /* 850 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1141 /* 854 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1142 /* 859 */ // Combiner Rule #6: right_identity_zero @ [__right_identity_zero_match_0[1]]
1143 /* 859 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1144 /* 864 */ GIR_EraseRootFromParent_Done,
1145 /* 865 */ // Label 59: @865
1146 /* 865 */ GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(890), // Rule ID 56 //
1147 /* 870 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
1148 /* 873 */ // MIs[0] dst
1149 /* 873 */ // No operand predicates
1150 /* 873 */ // MIs[0] lhs
1151 /* 873 */ // No operand predicates
1152 /* 873 */ // MIs[0] rhs
1153 /* 873 */ // No operand predicates
1154 /* 873 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1155 /* 877 */ // Combiner Rule #31: G_ADD_commute_constant_to_rhs
1156 /* 877 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
1157 /* 880 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1158 /* 882 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
1159 /* 884 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
1160 /* 886 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
1161 /* 889 */ GIR_EraseRootFromParent_Done,
1162 /* 890 */ // Label 60: @890
1163 /* 890 */ GIM_Reject,
1164 /* 891 */ // Label 1: @891
1165 /* 891 */ GIM_Try, /*On fail goto*//*Label 61*/ GIMT_Encode4(930), // Rule ID 20 //
1166 /* 896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
1167 /* 899 */ // MIs[0] dst
1168 /* 899 */ // No operand predicates
1169 /* 899 */ // MIs[0] x
1170 /* 899 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
1171 /* 903 */ // MIs[0] x
1172 /* 903 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1173 /* 908 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
1174 /* 911 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
1175 /* 921 */ // Combiner Rule #8: same_val_zero @ [__same_val_zero_match_0[0]]
1176 /* 921 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
1177 /* 924 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1178 /* 926 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
1179 /* 929 */ GIR_EraseRootFromParent_Done,
1180 /* 930 */ // Label 61: @930
1181 /* 930 */ GIM_Try, /*On fail goto*//*Label 62*/ GIMT_Encode4(953), // Rule ID 8 //
1182 /* 935 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1183 /* 938 */ // MIs[0] dst
1184 /* 938 */ // No operand predicates
1185 /* 938 */ // MIs[0] lhs
1186 /* 938 */ // No operand predicates
1187 /* 938 */ // MIs[0] Operand 2
1188 /* 938 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1189 /* 942 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1190 /* 947 */ // Combiner Rule #6: right_identity_zero @ [__right_identity_zero_match_0[0]]
1191 /* 947 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1192 /* 952 */ GIR_EraseRootFromParent_Done,
1193 /* 953 */ // Label 62: @953
1194 /* 953 */ GIM_Try, /*On fail goto*//*Label 63*/ GIMT_Encode4(974), // Rule ID 0 //
1195 /* 958 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
1196 /* 961 */ // MIs[0] d
1197 /* 961 */ // No operand predicates
1198 /* 961 */ // MIs[0] op1
1199 /* 961 */ // No operand predicates
1200 /* 961 */ // MIs[0] c
1201 /* 961 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
1202 /* 965 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1203 /* 969 */ // MIs[1] imm
1204 /* 969 */ // No operand predicates
1205 /* 969 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1206 /* 971 */ // Combiner Rule #0: sub_to_add
1207 /* 971 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
1208 /* 974 */ // Label 63: @974
1209 /* 974 */ GIM_Try, /*On fail goto*//*Label 64*/ GIMT_Encode4(985), // Rule ID 85 //
1210 /* 979 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
1211 /* 982 */ // MIs[0] dst
1212 /* 982 */ // No operand predicates
1213 /* 982 */ // MIs[0] src1
1214 /* 982 */ // No operand predicates
1215 /* 982 */ // MIs[0] src2
1216 /* 982 */ // No operand predicates
1217 /* 982 */ // Combiner Rule #60: simplify_neg_minmax
1218 /* 982 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
1219 /* 985 */ // Label 64: @985
1220 /* 985 */ GIM_Reject,
1221 /* 986 */ // Label 2: @986
1222 /* 986 */ GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(1009), // Rule ID 30 //
1223 /* 991 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1224 /* 994 */ // MIs[0] dst
1225 /* 994 */ // No operand predicates
1226 /* 994 */ // MIs[0] lhs
1227 /* 994 */ // No operand predicates
1228 /* 994 */ // MIs[0] zero
1229 /* 994 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1230 /* 998 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1231 /* 1003 */ // Combiner Rule #10: binop_right_to_zero
1232 /* 1003 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1233 /* 1008 */ GIR_EraseRootFromParent_Done,
1234 /* 1009 */ // Label 65: @1009
1235 /* 1009 */ GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1032), // Rule ID 37 //
1236 /* 1014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1237 /* 1017 */ // MIs[0] dst
1238 /* 1017 */ // No operand predicates
1239 /* 1017 */ // MIs[0] x
1240 /* 1017 */ // No operand predicates
1241 /* 1017 */ // MIs[0] Operand 2
1242 /* 1017 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
1243 /* 1021 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1244 /* 1026 */ // Combiner Rule #17: right_identity_one_int
1245 /* 1026 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1246 /* 1031 */ GIR_EraseRootFromParent_Done,
1247 /* 1032 */ // Label 66: @1032
1248 /* 1032 */ GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1055), // Rule ID 29 //
1249 /* 1037 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1250 /* 1040 */ // MIs[0] dst
1251 /* 1040 */ // No operand predicates
1252 /* 1040 */ // MIs[0] zero
1253 /* 1040 */ // No operand predicates
1254 /* 1040 */ // MIs[0] rhs
1255 /* 1040 */ // No operand predicates
1256 /* 1040 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1257 /* 1044 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1258 /* 1049 */ // Combiner Rule #9: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
1259 /* 1049 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1260 /* 1054 */ GIR_EraseRootFromParent_Done,
1261 /* 1055 */ // Label 67: @1055
1262 /* 1055 */ GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(1080), // Rule ID 57 //
1263 /* 1060 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
1264 /* 1063 */ // MIs[0] dst
1265 /* 1063 */ // No operand predicates
1266 /* 1063 */ // MIs[0] lhs
1267 /* 1063 */ // No operand predicates
1268 /* 1063 */ // MIs[0] rhs
1269 /* 1063 */ // No operand predicates
1270 /* 1063 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1271 /* 1067 */ // Combiner Rule #32: G_MUL_commute_constant_to_rhs
1272 /* 1067 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MUL),
1273 /* 1070 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1274 /* 1072 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
1275 /* 1074 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
1276 /* 1076 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
1277 /* 1079 */ GIR_EraseRootFromParent_Done,
1278 /* 1080 */ // Label 68: @1080
1279 /* 1080 */ GIM_Reject,
1280 /* 1081 */ // Label 3: @1081
1281 /* 1081 */ GIM_Try, /*On fail goto*//*Label 69*/ GIMT_Encode4(1104), // Rule ID 25 //
1282 /* 1086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1283 /* 1089 */ // MIs[0] dst
1284 /* 1089 */ // No operand predicates
1285 /* 1089 */ // MIs[0] zero
1286 /* 1089 */ // No operand predicates
1287 /* 1089 */ // MIs[0] rhs
1288 /* 1089 */ // No operand predicates
1289 /* 1089 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1290 /* 1093 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1291 /* 1098 */ // Combiner Rule #9: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
1292 /* 1098 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1293 /* 1103 */ GIR_EraseRootFromParent_Done,
1294 /* 1104 */ // Label 69: @1104
1295 /* 1104 */ GIM_Reject,
1296 /* 1105 */ // Label 4: @1105
1297 /* 1105 */ GIM_Try, /*On fail goto*//*Label 70*/ GIMT_Encode4(1128), // Rule ID 26 //
1298 /* 1110 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1299 /* 1113 */ // MIs[0] dst
1300 /* 1113 */ // No operand predicates
1301 /* 1113 */ // MIs[0] zero
1302 /* 1113 */ // No operand predicates
1303 /* 1113 */ // MIs[0] rhs
1304 /* 1113 */ // No operand predicates
1305 /* 1113 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1306 /* 1117 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1307 /* 1122 */ // Combiner Rule #9: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
1308 /* 1122 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1309 /* 1127 */ GIR_EraseRootFromParent_Done,
1310 /* 1128 */ // Label 70: @1128
1311 /* 1128 */ GIM_Reject,
1312 /* 1129 */ // Label 5: @1129
1313 /* 1129 */ GIM_Try, /*On fail goto*//*Label 71*/ GIMT_Encode4(1152), // Rule ID 27 //
1314 /* 1134 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1315 /* 1137 */ // MIs[0] dst
1316 /* 1137 */ // No operand predicates
1317 /* 1137 */ // MIs[0] zero
1318 /* 1137 */ // No operand predicates
1319 /* 1137 */ // MIs[0] rhs
1320 /* 1137 */ // No operand predicates
1321 /* 1137 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1322 /* 1141 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1323 /* 1146 */ // Combiner Rule #9: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
1324 /* 1146 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1325 /* 1151 */ GIR_EraseRootFromParent_Done,
1326 /* 1152 */ // Label 71: @1152
1327 /* 1152 */ GIM_Reject,
1328 /* 1153 */ // Label 6: @1153
1329 /* 1153 */ GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1176), // Rule ID 28 //
1330 /* 1158 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1331 /* 1161 */ // MIs[0] dst
1332 /* 1161 */ // No operand predicates
1333 /* 1161 */ // MIs[0] zero
1334 /* 1161 */ // No operand predicates
1335 /* 1161 */ // MIs[0] rhs
1336 /* 1161 */ // No operand predicates
1337 /* 1161 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1338 /* 1165 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1339 /* 1170 */ // Combiner Rule #9: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
1340 /* 1170 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1341 /* 1175 */ GIR_EraseRootFromParent_Done,
1342 /* 1176 */ // Label 72: @1176
1343 /* 1176 */ GIM_Reject,
1344 /* 1177 */ // Label 7: @1177
1345 /* 1177 */ GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(1201), // Rule ID 18 //
1346 /* 1182 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
1347 /* 1185 */ // MIs[0] dst
1348 /* 1185 */ // No operand predicates
1349 /* 1185 */ // MIs[0] src
1350 /* 1185 */ // No operand predicates
1351 /* 1185 */ // MIs[0] src
1352 /* 1185 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1353 /* 1190 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1354 /* 1195 */ // Combiner Rule #7: binop_same_val @ [__binop_same_val_match_0[0]]
1355 /* 1195 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1356 /* 1200 */ GIR_EraseRootFromParent_Done,
1357 /* 1201 */ // Label 73: @1201
1358 /* 1201 */ GIM_Try, /*On fail goto*//*Label 74*/ GIMT_Encode4(1226), // Rule ID 58 //
1359 /* 1206 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
1360 /* 1209 */ // MIs[0] dst
1361 /* 1209 */ // No operand predicates
1362 /* 1209 */ // MIs[0] lhs
1363 /* 1209 */ // No operand predicates
1364 /* 1209 */ // MIs[0] rhs
1365 /* 1209 */ // No operand predicates
1366 /* 1209 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1367 /* 1213 */ // Combiner Rule #33: G_AND_commute_constant_to_rhs
1368 /* 1213 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
1369 /* 1216 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1370 /* 1218 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
1371 /* 1220 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
1372 /* 1222 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
1373 /* 1225 */ GIR_EraseRootFromParent_Done,
1374 /* 1226 */ // Label 74: @1226
1375 /* 1226 */ GIM_Try, /*On fail goto*//*Label 75*/ GIMT_Encode4(1237), // Rule ID 4 //
1376 /* 1231 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
1377 /* 1234 */ // MIs[0] dst
1378 /* 1234 */ // No operand predicates
1379 /* 1234 */ // MIs[0] src1
1380 /* 1234 */ // No operand predicates
1381 /* 1234 */ // MIs[0] src2
1382 /* 1234 */ // No operand predicates
1383 /* 1234 */ // Combiner Rule #2: load_and_mask
1384 /* 1234 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
1385 /* 1237 */ // Label 75: @1237
1386 /* 1237 */ GIM_Try, /*On fail goto*//*Label 76*/ GIMT_Encode4(1248), // Rule ID 5 //
1387 /* 1242 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1388 /* 1245 */ // MIs[0] dst
1389 /* 1245 */ // No operand predicates
1390 /* 1245 */ // MIs[0] src1
1391 /* 1245 */ // No operand predicates
1392 /* 1245 */ // MIs[0] src2
1393 /* 1245 */ // No operand predicates
1394 /* 1245 */ // Combiner Rule #3: redundant_and
1395 /* 1245 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
1396 /* 1248 */ // Label 76: @1248
1397 /* 1248 */ GIM_Reject,
1398 /* 1249 */ // Label 8: @1249
1399 /* 1249 */ GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1273), // Rule ID 19 //
1400 /* 1254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
1401 /* 1257 */ // MIs[0] dst
1402 /* 1257 */ // No operand predicates
1403 /* 1257 */ // MIs[0] src
1404 /* 1257 */ // No operand predicates
1405 /* 1257 */ // MIs[0] src
1406 /* 1257 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1407 /* 1262 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1408 /* 1267 */ // Combiner Rule #7: binop_same_val @ [__binop_same_val_match_0[1]]
1409 /* 1267 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1410 /* 1272 */ GIR_EraseRootFromParent_Done,
1411 /* 1273 */ // Label 77: @1273
1412 /* 1273 */ GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(1296), // Rule ID 10 //
1413 /* 1278 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1414 /* 1281 */ // MIs[0] dst
1415 /* 1281 */ // No operand predicates
1416 /* 1281 */ // MIs[0] lhs
1417 /* 1281 */ // No operand predicates
1418 /* 1281 */ // MIs[0] Operand 2
1419 /* 1281 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1420 /* 1285 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1421 /* 1290 */ // Combiner Rule #6: right_identity_zero @ [__right_identity_zero_match_0[2]]
1422 /* 1290 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1423 /* 1295 */ GIR_EraseRootFromParent_Done,
1424 /* 1296 */ // Label 78: @1296
1425 /* 1296 */ GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(1321), // Rule ID 59 //
1426 /* 1301 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
1427 /* 1304 */ // MIs[0] dst
1428 /* 1304 */ // No operand predicates
1429 /* 1304 */ // MIs[0] lhs
1430 /* 1304 */ // No operand predicates
1431 /* 1304 */ // MIs[0] rhs
1432 /* 1304 */ // No operand predicates
1433 /* 1304 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1434 /* 1308 */ // Combiner Rule #34: G_OR_commute_constant_to_rhs
1435 /* 1308 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
1436 /* 1311 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1437 /* 1313 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
1438 /* 1315 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
1439 /* 1317 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
1440 /* 1320 */ GIR_EraseRootFromParent_Done,
1441 /* 1321 */ // Label 79: @1321
1442 /* 1321 */ GIM_Reject,
1443 /* 1322 */ // Label 9: @1322
1444 /* 1322 */ GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(1361), // Rule ID 21 //
1445 /* 1327 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
1446 /* 1330 */ // MIs[0] dst
1447 /* 1330 */ // No operand predicates
1448 /* 1330 */ // MIs[0] x
1449 /* 1330 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
1450 /* 1334 */ // MIs[0] x
1451 /* 1334 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1452 /* 1339 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
1453 /* 1342 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
1454 /* 1352 */ // Combiner Rule #8: same_val_zero @ [__same_val_zero_match_0[1]]
1455 /* 1352 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
1456 /* 1355 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1457 /* 1357 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
1458 /* 1360 */ GIR_EraseRootFromParent_Done,
1459 /* 1361 */ // Label 80: @1361
1460 /* 1361 */ GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1384), // Rule ID 11 //
1461 /* 1366 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1462 /* 1369 */ // MIs[0] dst
1463 /* 1369 */ // No operand predicates
1464 /* 1369 */ // MIs[0] lhs
1465 /* 1369 */ // No operand predicates
1466 /* 1369 */ // MIs[0] Operand 2
1467 /* 1369 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1468 /* 1373 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1469 /* 1378 */ // Combiner Rule #6: right_identity_zero @ [__right_identity_zero_match_0[3]]
1470 /* 1378 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1471 /* 1383 */ GIR_EraseRootFromParent_Done,
1472 /* 1384 */ // Label 81: @1384
1473 /* 1384 */ GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1409), // Rule ID 60 //
1474 /* 1389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
1475 /* 1392 */ // MIs[0] dst
1476 /* 1392 */ // No operand predicates
1477 /* 1392 */ // MIs[0] lhs
1478 /* 1392 */ // No operand predicates
1479 /* 1392 */ // MIs[0] rhs
1480 /* 1392 */ // No operand predicates
1481 /* 1392 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1482 /* 1396 */ // Combiner Rule #35: G_XOR_commute_constant_to_rhs
1483 /* 1396 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
1484 /* 1399 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1485 /* 1401 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
1486 /* 1403 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
1487 /* 1405 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
1488 /* 1408 */ GIR_EraseRootFromParent_Done,
1489 /* 1409 */ // Label 82: @1409
1490 /* 1409 */ GIM_Reject,
1491 /* 1410 */ // Label 10: @1410
1492 /* 1410 */ GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1424), // Rule ID 41 //
1493 /* 1415 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
1494 /* 1418 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
1495 /* 1421 */ // MIs[0] build_vector
1496 /* 1421 */ // No operand predicates
1497 /* 1421 */ // MIs[0] srcs
1498 /* 1421 */ // No operand predicates
1499 /* 1421 */ // Combiner Rule #20: buildvector_identity_fold_bv
1500 /* 1421 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
1501 /* 1424 */ // Label 83: @1424
1502 /* 1424 */ GIM_Reject,
1503 /* 1425 */ // Label 11: @1425
1504 /* 1425 */ GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(1439), // Rule ID 42 //
1505 /* 1430 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
1506 /* 1433 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
1507 /* 1436 */ // MIs[0] build_vector
1508 /* 1436 */ // No operand predicates
1509 /* 1436 */ // MIs[0] srcs
1510 /* 1436 */ // No operand predicates
1511 /* 1436 */ // Combiner Rule #21: buildvector_identity_fold_bvt
1512 /* 1436 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
1513 /* 1439 */ // Label 84: @1439
1514 /* 1439 */ GIM_Reject,
1515 /* 1440 */ // Label 12: @1440
1516 /* 1440 */ GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1472), // Rule ID 32 //
1517 /* 1445 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1518 /* 1448 */ // MIs[0] dst
1519 /* 1448 */ // No operand predicates
1520 /* 1448 */ // MIs[0] t
1521 /* 1448 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1522 /* 1452 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
1523 /* 1456 */ // MIs[1] ptr
1524 /* 1456 */ // No operand predicates
1525 /* 1456 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
1526 /* 1460 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1527 /* 1462 */ // Combiner Rule #12: i2p_to_p2i_same_size
1528 /* 1462 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
1529 /* 1465 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1530 /* 1467 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
1531 /* 1471 */ GIR_EraseRootFromParent_Done,
1532 /* 1472 */ // Label 85: @1472
1533 /* 1472 */ GIM_Try, /*On fail goto*//*Label 86*/ GIMT_Encode4(1504), // Rule ID 33 //
1534 /* 1477 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
1535 /* 1480 */ // MIs[0] dst
1536 /* 1480 */ // No operand predicates
1537 /* 1480 */ // MIs[0] t
1538 /* 1480 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1539 /* 1484 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
1540 /* 1488 */ // MIs[1] ptr
1541 /* 1488 */ // No operand predicates
1542 /* 1488 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
1543 /* 1492 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1544 /* 1494 */ // Combiner Rule #13: i2p_to_p2i_zext
1545 /* 1494 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
1546 /* 1497 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1547 /* 1499 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
1548 /* 1503 */ GIR_EraseRootFromParent_Done,
1549 /* 1504 */ // Label 86: @1504
1550 /* 1504 */ GIM_Try, /*On fail goto*//*Label 87*/ GIMT_Encode4(1536), // Rule ID 34 //
1551 /* 1509 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
1552 /* 1512 */ // MIs[0] dst
1553 /* 1512 */ // No operand predicates
1554 /* 1512 */ // MIs[0] t
1555 /* 1512 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1556 /* 1516 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
1557 /* 1520 */ // MIs[1] ptr
1558 /* 1520 */ // No operand predicates
1559 /* 1520 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
1560 /* 1524 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1561 /* 1526 */ // Combiner Rule #14: i2p_to_p2i_trunc
1562 /* 1526 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC),
1563 /* 1529 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1564 /* 1531 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
1565 /* 1535 */ GIR_EraseRootFromParent_Done,
1566 /* 1536 */ // Label 87: @1536
1567 /* 1536 */ GIM_Reject,
1568 /* 1537 */ // Label 13: @1537
1569 /* 1537 */ GIM_Try, /*On fail goto*//*Label 88*/ GIMT_Encode4(1570), // Rule ID 31 //
1570 /* 1542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
1571 /* 1545 */ // MIs[0] dst
1572 /* 1545 */ // No operand predicates
1573 /* 1545 */ // MIs[0] mid
1574 /* 1545 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1575 /* 1549 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
1576 /* 1553 */ // MIs[1] x
1577 /* 1553 */ // No operand predicates
1578 /* 1553 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
1579 /* 1557 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1580 /* 1562 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1581 /* 1564 */ // Combiner Rule #11: p2i_to_i2p
1582 /* 1564 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1583 /* 1569 */ GIR_EraseRootFromParent_Done,
1584 /* 1570 */ // Label 88: @1570
1585 /* 1570 */ GIM_Reject,
1586 /* 1571 */ // Label 14: @1571
1587 /* 1571 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(1604), // Rule ID 45 //
1588 /* 1576 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1589 /* 1579 */ // MIs[0] dst
1590 /* 1579 */ // No operand predicates
1591 /* 1579 */ // MIs[0] src1
1592 /* 1579 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1593 /* 1583 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
1594 /* 1587 */ // MIs[1] src0
1595 /* 1587 */ // No operand predicates
1596 /* 1587 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
1597 /* 1591 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1598 /* 1596 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1599 /* 1598 */ // Combiner Rule #24: bitcast_bitcast_fold
1600 /* 1598 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1601 /* 1603 */ GIR_EraseRootFromParent_Done,
1602 /* 1604 */ // Label 89: @1604
1603 /* 1604 */ GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(1636), // Rule ID 46 //
1604 /* 1609 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1605 /* 1612 */ // MIs[0] dst
1606 /* 1612 */ // No operand predicates
1607 /* 1612 */ // MIs[0] src1
1608 /* 1612 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1609 /* 1616 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
1610 /* 1620 */ // MIs[1] src0
1611 /* 1620 */ // No operand predicates
1612 /* 1620 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
1613 /* 1624 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1614 /* 1626 */ // Combiner Rule #25: bitcast_bitcast_to_bitcast
1615 /* 1626 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
1616 /* 1629 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1617 /* 1631 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
1618 /* 1635 */ GIR_EraseRootFromParent_Done,
1619 /* 1636 */ // Label 90: @1636
1620 /* 1636 */ GIM_Reject,
1621 /* 1637 */ // Label 15: @1637
1622 /* 1637 */ GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(1648), // Rule ID 1 //
1623 /* 1642 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1624 /* 1645 */ // MIs[0] root
1625 /* 1645 */ // No operand predicates
1626 /* 1645 */ // MIs[0] mi.ptr
1627 /* 1645 */ // No operand predicates
1628 /* 1645 */ // Combiner Rule #1: extending_loads @ [mi[0]]
1629 /* 1645 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1630 /* 1648 */ // Label 91: @1648
1631 /* 1648 */ GIM_Reject,
1632 /* 1649 */ // Label 16: @1649
1633 /* 1649 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(1660), // Rule ID 2 //
1634 /* 1654 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1635 /* 1657 */ // MIs[0] root
1636 /* 1657 */ // No operand predicates
1637 /* 1657 */ // MIs[0] mi.ptr
1638 /* 1657 */ // No operand predicates
1639 /* 1657 */ // Combiner Rule #1: extending_loads @ [mi[1]]
1640 /* 1657 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1641 /* 1660 */ // Label 92: @1660
1642 /* 1660 */ GIM_Reject,
1643 /* 1661 */ // Label 17: @1661
1644 /* 1661 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(1672), // Rule ID 3 //
1645 /* 1666 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1646 /* 1669 */ // MIs[0] root
1647 /* 1669 */ // No operand predicates
1648 /* 1669 */ // MIs[0] mi.ptr
1649 /* 1669 */ // No operand predicates
1650 /* 1669 */ // Combiner Rule #1: extending_loads @ [mi[2]]
1651 /* 1669 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1652 /* 1672 */ // Label 93: @1672
1653 /* 1672 */ GIM_Reject,
1654 /* 1673 */ // Label 18: @1673
1655 /* 1673 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(1684), // Rule ID 86 //
1656 /* 1678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
1657 /* 1681 */ // MIs[0] src
1658 /* 1681 */ // No operand predicates
1659 /* 1681 */ // MIs[0] addr
1660 /* 1681 */ // No operand predicates
1661 /* 1681 */ // Combiner Rule #61: fold_fp_zero_store
1662 /* 1681 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1663 /* 1684 */ // Label 94: @1684
1664 /* 1684 */ GIM_Reject,
1665 /* 1685 */ // Label 19: @1685
1666 /* 1685 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(1696), // Rule ID 35 //
1667 /* 1690 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
1668 /* 1693 */ // MIs[0] dst
1669 /* 1693 */ // No operand predicates
1670 /* 1693 */ // MIs[0] src
1671 /* 1693 */ // No operand predicates
1672 /* 1693 */ // Combiner Rule #15: anyext_trunc_fold
1673 /* 1693 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
1674 /* 1696 */ // Label 95: @1696
1675 /* 1696 */ GIM_Reject,
1676 /* 1697 */ // Label 20: @1697
1677 /* 1697 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1708), // Rule ID 43 //
1678 /* 1702 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
1679 /* 1705 */ // MIs[0] dst
1680 /* 1705 */ // No operand predicates
1681 /* 1705 */ // MIs[0] src
1682 /* 1705 */ // No operand predicates
1683 /* 1705 */ // Combiner Rule #22: trunc_buildvector_fold
1684 /* 1705 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
1685 /* 1708 */ // Label 96: @1708
1686 /* 1708 */ GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1719), // Rule ID 44 //
1687 /* 1713 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
1688 /* 1716 */ // MIs[0] dst
1689 /* 1716 */ // No operand predicates
1690 /* 1716 */ // MIs[0] src
1691 /* 1716 */ // No operand predicates
1692 /* 1716 */ // Combiner Rule #23: trunc_lshr_buildvector_fold
1693 /* 1716 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
1694 /* 1719 */ // Label 97: @1719
1695 /* 1719 */ GIM_Reject,
1696 /* 1720 */ // Label 21: @1720
1697 /* 1720 */ GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1743), // Rule ID 12 //
1698 /* 1725 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1699 /* 1728 */ // MIs[0] dst
1700 /* 1728 */ // No operand predicates
1701 /* 1728 */ // MIs[0] lhs
1702 /* 1728 */ // No operand predicates
1703 /* 1728 */ // MIs[0] Operand 2
1704 /* 1728 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1705 /* 1732 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1706 /* 1737 */ // Combiner Rule #6: right_identity_zero @ [__right_identity_zero_match_0[4]]
1707 /* 1737 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1708 /* 1742 */ GIR_EraseRootFromParent_Done,
1709 /* 1743 */ // Label 98: @1743
1710 /* 1743 */ GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1766), // Rule ID 22 //
1711 /* 1748 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1712 /* 1751 */ // MIs[0] dst
1713 /* 1751 */ // No operand predicates
1714 /* 1751 */ // MIs[0] zero
1715 /* 1751 */ // No operand predicates
1716 /* 1751 */ // MIs[0] rhs
1717 /* 1751 */ // No operand predicates
1718 /* 1751 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1719 /* 1755 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1720 /* 1760 */ // Combiner Rule #9: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
1721 /* 1760 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1722 /* 1765 */ GIR_EraseRootFromParent_Done,
1723 /* 1766 */ // Label 99: @1766
1724 /* 1766 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1777), // Rule ID 51 //
1725 /* 1771 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
1726 /* 1774 */ // MIs[0] d
1727 /* 1774 */ // No operand predicates
1728 /* 1774 */ // MIs[0] mi.base
1729 /* 1774 */ // No operand predicates
1730 /* 1774 */ // MIs[0] mi.amt
1731 /* 1774 */ // No operand predicates
1732 /* 1774 */ // Combiner Rule #30: shift_immed_chain @ [mi[0]]
1733 /* 1774 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
1734 /* 1777 */ // Label 100: @1777
1735 /* 1777 */ GIM_Reject,
1736 /* 1778 */ // Label 22: @1778
1737 /* 1778 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1801), // Rule ID 14 //
1738 /* 1783 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1739 /* 1786 */ // MIs[0] dst
1740 /* 1786 */ // No operand predicates
1741 /* 1786 */ // MIs[0] lhs
1742 /* 1786 */ // No operand predicates
1743 /* 1786 */ // MIs[0] Operand 2
1744 /* 1786 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1745 /* 1790 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1746 /* 1795 */ // Combiner Rule #6: right_identity_zero @ [__right_identity_zero_match_0[6]]
1747 /* 1795 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1748 /* 1800 */ GIR_EraseRootFromParent_Done,
1749 /* 1801 */ // Label 101: @1801
1750 /* 1801 */ GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1824), // Rule ID 23 //
1751 /* 1806 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1752 /* 1809 */ // MIs[0] dst
1753 /* 1809 */ // No operand predicates
1754 /* 1809 */ // MIs[0] zero
1755 /* 1809 */ // No operand predicates
1756 /* 1809 */ // MIs[0] rhs
1757 /* 1809 */ // No operand predicates
1758 /* 1809 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1759 /* 1813 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1760 /* 1818 */ // Combiner Rule #9: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
1761 /* 1818 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1762 /* 1823 */ GIR_EraseRootFromParent_Done,
1763 /* 1824 */ // Label 102: @1824
1764 /* 1824 */ GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1835), // Rule ID 53 //
1765 /* 1829 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
1766 /* 1832 */ // MIs[0] d
1767 /* 1832 */ // No operand predicates
1768 /* 1832 */ // MIs[0] mi.base
1769 /* 1832 */ // No operand predicates
1770 /* 1832 */ // MIs[0] mi.amt
1771 /* 1832 */ // No operand predicates
1772 /* 1832 */ // Combiner Rule #30: shift_immed_chain @ [mi[2]]
1773 /* 1832 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
1774 /* 1835 */ // Label 103: @1835
1775 /* 1835 */ GIM_Reject,
1776 /* 1836 */ // Label 23: @1836
1777 /* 1836 */ GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1859), // Rule ID 13 //
1778 /* 1841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1779 /* 1844 */ // MIs[0] dst
1780 /* 1844 */ // No operand predicates
1781 /* 1844 */ // MIs[0] lhs
1782 /* 1844 */ // No operand predicates
1783 /* 1844 */ // MIs[0] Operand 2
1784 /* 1844 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1785 /* 1848 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1786 /* 1853 */ // Combiner Rule #6: right_identity_zero @ [__right_identity_zero_match_0[5]]
1787 /* 1853 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1788 /* 1858 */ GIR_EraseRootFromParent_Done,
1789 /* 1859 */ // Label 104: @1859
1790 /* 1859 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1882), // Rule ID 24 //
1791 /* 1864 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1792 /* 1867 */ // MIs[0] dst
1793 /* 1867 */ // No operand predicates
1794 /* 1867 */ // MIs[0] zero
1795 /* 1867 */ // No operand predicates
1796 /* 1867 */ // MIs[0] rhs
1797 /* 1867 */ // No operand predicates
1798 /* 1867 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1799 /* 1871 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1800 /* 1876 */ // Combiner Rule #9: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
1801 /* 1876 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1802 /* 1881 */ GIR_EraseRootFromParent_Done,
1803 /* 1882 */ // Label 105: @1882
1804 /* 1882 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1893), // Rule ID 52 //
1805 /* 1887 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
1806 /* 1890 */ // MIs[0] d
1807 /* 1890 */ // No operand predicates
1808 /* 1890 */ // MIs[0] mi.base
1809 /* 1890 */ // No operand predicates
1810 /* 1890 */ // MIs[0] mi.amt
1811 /* 1890 */ // No operand predicates
1812 /* 1890 */ // Combiner Rule #30: shift_immed_chain @ [mi[1]]
1813 /* 1890 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
1814 /* 1893 */ // Label 106: @1893
1815 /* 1893 */ GIM_Reject,
1816 /* 1894 */ // Label 24: @1894
1817 /* 1894 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1917), // Rule ID 17 //
1818 /* 1899 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1819 /* 1902 */ // MIs[0] dst
1820 /* 1902 */ // No operand predicates
1821 /* 1902 */ // MIs[0] lhs
1822 /* 1902 */ // No operand predicates
1823 /* 1902 */ // MIs[0] Operand 2
1824 /* 1902 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1825 /* 1906 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1826 /* 1911 */ // Combiner Rule #6: right_identity_zero @ [__right_identity_zero_match_0[9]]
1827 /* 1911 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1828 /* 1916 */ GIR_EraseRootFromParent_Done,
1829 /* 1917 */ // Label 107: @1917
1830 /* 1917 */ GIM_Reject,
1831 /* 1918 */ // Label 25: @1918
1832 /* 1918 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1941), // Rule ID 16 //
1833 /* 1923 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1834 /* 1926 */ // MIs[0] dst
1835 /* 1926 */ // No operand predicates
1836 /* 1926 */ // MIs[0] lhs
1837 /* 1926 */ // No operand predicates
1838 /* 1926 */ // MIs[0] Operand 2
1839 /* 1926 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1840 /* 1930 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1841 /* 1935 */ // Combiner Rule #6: right_identity_zero @ [__right_identity_zero_match_0[8]]
1842 /* 1935 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1843 /* 1940 */ GIR_EraseRootFromParent_Done,
1844 /* 1941 */ // Label 108: @1941
1845 /* 1941 */ GIM_Reject,
1846 /* 1942 */ // Label 26: @1942
1847 /* 1942 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1966), // Rule ID 6 //
1848 /* 1947 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
1849 /* 1950 */ // MIs[0] dst
1850 /* 1950 */ // No operand predicates
1851 /* 1950 */ // MIs[0] cond
1852 /* 1950 */ // No operand predicates
1853 /* 1950 */ // MIs[0] x
1854 /* 1950 */ // No operand predicates
1855 /* 1950 */ // MIs[0] x
1856 /* 1950 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/0, /*OtherOpIdx*/2,
1857 /* 1955 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1858 /* 1960 */ // Combiner Rule #4: select_same_val_trivial
1859 /* 1960 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1860 /* 1965 */ GIR_EraseRootFromParent_Done,
1861 /* 1966 */ // Label 109: @1966
1862 /* 1966 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1989), // Rule ID 7 //
1863 /* 1971 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1864 /* 1974 */ // MIs[0] dst
1865 /* 1974 */ // No operand predicates
1866 /* 1974 */ // MIs[0] cond
1867 /* 1974 */ // No operand predicates
1868 /* 1974 */ // MIs[0] tval
1869 /* 1974 */ // No operand predicates
1870 /* 1974 */ // MIs[0] fval
1871 /* 1974 */ // No operand predicates
1872 /* 1974 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
1873 /* 1978 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1874 /* 1983 */ // Combiner Rule #5: select_same_val_equiv
1875 /* 1983 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1876 /* 1988 */ GIR_EraseRootFromParent_Done,
1877 /* 1989 */ // Label 110: @1989
1878 /* 1989 */ GIM_Reject,
1879 /* 1990 */ // Label 27: @1990
1880 /* 1990 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(2017), // Rule ID 73 //
1881 /* 1995 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
1882 /* 1998 */ // MIs[0] dst
1883 /* 1998 */ // No operand predicates
1884 /* 1998 */ // MIs[0] carry
1885 /* 1998 */ // No operand predicates
1886 /* 1998 */ // MIs[0] lhs
1887 /* 1998 */ // No operand predicates
1888 /* 1998 */ // MIs[0] rhs
1889 /* 1998 */ // No operand predicates
1890 /* 1998 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1891 /* 2002 */ // Combiner Rule #48: G_UADDO_commute_constant_to_rhs
1892 /* 2002 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UADDO),
1893 /* 2005 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1894 /* 2007 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
1895 /* 2009 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
1896 /* 2011 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
1897 /* 2013 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
1898 /* 2016 */ GIR_EraseRootFromParent_Done,
1899 /* 2017 */ // Label 111: @2017
1900 /* 2017 */ GIM_Reject,
1901 /* 2018 */ // Label 28: @2018
1902 /* 2018 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(2045), // Rule ID 74 //
1903 /* 2023 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
1904 /* 2026 */ // MIs[0] dst
1905 /* 2026 */ // No operand predicates
1906 /* 2026 */ // MIs[0] carry
1907 /* 2026 */ // No operand predicates
1908 /* 2026 */ // MIs[0] lhs
1909 /* 2026 */ // No operand predicates
1910 /* 2026 */ // MIs[0] rhs
1911 /* 2026 */ // No operand predicates
1912 /* 2026 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1913 /* 2030 */ // Combiner Rule #49: G_SADDO_commute_constant_to_rhs
1914 /* 2030 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SADDO),
1915 /* 2033 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1916 /* 2035 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
1917 /* 2037 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
1918 /* 2039 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
1919 /* 2041 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
1920 /* 2044 */ GIR_EraseRootFromParent_Done,
1921 /* 2045 */ // Label 112: @2045
1922 /* 2045 */ GIM_Reject,
1923 /* 2046 */ // Label 29: @2046
1924 /* 2046 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(2073), // Rule ID 75 //
1925 /* 2051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
1926 /* 2054 */ // MIs[0] dst
1927 /* 2054 */ // No operand predicates
1928 /* 2054 */ // MIs[0] carry
1929 /* 2054 */ // No operand predicates
1930 /* 2054 */ // MIs[0] lhs
1931 /* 2054 */ // No operand predicates
1932 /* 2054 */ // MIs[0] rhs
1933 /* 2054 */ // No operand predicates
1934 /* 2054 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1935 /* 2058 */ // Combiner Rule #50: G_UMULO_commute_constant_to_rhs
1936 /* 2058 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULO),
1937 /* 2061 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1938 /* 2063 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
1939 /* 2065 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
1940 /* 2067 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
1941 /* 2069 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
1942 /* 2072 */ GIR_EraseRootFromParent_Done,
1943 /* 2073 */ // Label 113: @2073
1944 /* 2073 */ GIM_Reject,
1945 /* 2074 */ // Label 30: @2074
1946 /* 2074 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(2101), // Rule ID 76 //
1947 /* 2079 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
1948 /* 2082 */ // MIs[0] dst
1949 /* 2082 */ // No operand predicates
1950 /* 2082 */ // MIs[0] carry
1951 /* 2082 */ // No operand predicates
1952 /* 2082 */ // MIs[0] lhs
1953 /* 2082 */ // No operand predicates
1954 /* 2082 */ // MIs[0] rhs
1955 /* 2082 */ // No operand predicates
1956 /* 2082 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1957 /* 2086 */ // Combiner Rule #51: G_SMULO_commute_constant_to_rhs
1958 /* 2086 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULO),
1959 /* 2089 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1960 /* 2091 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
1961 /* 2093 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
1962 /* 2095 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
1963 /* 2097 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
1964 /* 2100 */ GIR_EraseRootFromParent_Done,
1965 /* 2101 */ // Label 114: @2101
1966 /* 2101 */ GIM_Reject,
1967 /* 2102 */ // Label 31: @2102
1968 /* 2102 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(2127), // Rule ID 65 //
1969 /* 2107 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
1970 /* 2110 */ // MIs[0] dst
1971 /* 2110 */ // No operand predicates
1972 /* 2110 */ // MIs[0] lhs
1973 /* 2110 */ // No operand predicates
1974 /* 2110 */ // MIs[0] rhs
1975 /* 2110 */ // No operand predicates
1976 /* 2110 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1977 /* 2114 */ // Combiner Rule #40: G_UMULH_commute_constant_to_rhs
1978 /* 2114 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULH),
1979 /* 2117 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1980 /* 2119 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
1981 /* 2121 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
1982 /* 2123 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
1983 /* 2126 */ GIR_EraseRootFromParent_Done,
1984 /* 2127 */ // Label 115: @2127
1985 /* 2127 */ GIM_Reject,
1986 /* 2128 */ // Label 32: @2128
1987 /* 2128 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(2153), // Rule ID 66 //
1988 /* 2133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
1989 /* 2136 */ // MIs[0] dst
1990 /* 2136 */ // No operand predicates
1991 /* 2136 */ // MIs[0] lhs
1992 /* 2136 */ // No operand predicates
1993 /* 2136 */ // MIs[0] rhs
1994 /* 2136 */ // No operand predicates
1995 /* 2136 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1996 /* 2140 */ // Combiner Rule #41: G_SMULH_commute_constant_to_rhs
1997 /* 2140 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULH),
1998 /* 2143 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1999 /* 2145 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2000 /* 2147 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2001 /* 2149 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2002 /* 2152 */ GIR_EraseRootFromParent_Done,
2003 /* 2153 */ // Label 116: @2153
2004 /* 2153 */ GIM_Reject,
2005 /* 2154 */ // Label 33: @2154
2006 /* 2154 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(2179), // Rule ID 67 //
2007 /* 2159 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
2008 /* 2162 */ // MIs[0] dst
2009 /* 2162 */ // No operand predicates
2010 /* 2162 */ // MIs[0] lhs
2011 /* 2162 */ // No operand predicates
2012 /* 2162 */ // MIs[0] rhs
2013 /* 2162 */ // No operand predicates
2014 /* 2162 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
2015 /* 2166 */ // Combiner Rule #42: G_UADDSAT_commute_constant_to_rhs
2016 /* 2166 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UADDSAT),
2017 /* 2169 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2018 /* 2171 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2019 /* 2173 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2020 /* 2175 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2021 /* 2178 */ GIR_EraseRootFromParent_Done,
2022 /* 2179 */ // Label 117: @2179
2023 /* 2179 */ GIM_Reject,
2024 /* 2180 */ // Label 34: @2180
2025 /* 2180 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(2205), // Rule ID 68 //
2026 /* 2185 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
2027 /* 2188 */ // MIs[0] dst
2028 /* 2188 */ // No operand predicates
2029 /* 2188 */ // MIs[0] lhs
2030 /* 2188 */ // No operand predicates
2031 /* 2188 */ // MIs[0] rhs
2032 /* 2188 */ // No operand predicates
2033 /* 2188 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
2034 /* 2192 */ // Combiner Rule #43: G_SADDSAT_commute_constant_to_rhs
2035 /* 2192 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SADDSAT),
2036 /* 2195 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2037 /* 2197 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2038 /* 2199 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2039 /* 2201 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2040 /* 2204 */ GIR_EraseRootFromParent_Done,
2041 /* 2205 */ // Label 118: @2205
2042 /* 2205 */ GIM_Reject,
2043 /* 2206 */ // Label 35: @2206
2044 /* 2206 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(2217), // Rule ID 55 //
2045 /* 2211 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
2046 /* 2214 */ // MIs[0] d
2047 /* 2214 */ // No operand predicates
2048 /* 2214 */ // MIs[0] mi.base
2049 /* 2214 */ // No operand predicates
2050 /* 2214 */ // MIs[0] mi.amt
2051 /* 2214 */ // No operand predicates
2052 /* 2214 */ // Combiner Rule #30: shift_immed_chain @ [mi[4]]
2053 /* 2214 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
2054 /* 2217 */ // Label 119: @2217
2055 /* 2217 */ GIM_Reject,
2056 /* 2218 */ // Label 36: @2218
2057 /* 2218 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(2229), // Rule ID 54 //
2058 /* 2223 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
2059 /* 2226 */ // MIs[0] d
2060 /* 2226 */ // No operand predicates
2061 /* 2226 */ // MIs[0] mi.base
2062 /* 2226 */ // No operand predicates
2063 /* 2226 */ // MIs[0] mi.amt
2064 /* 2226 */ // No operand predicates
2065 /* 2226 */ // Combiner Rule #30: shift_immed_chain @ [mi[3]]
2066 /* 2226 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
2067 /* 2229 */ // Label 120: @2229
2068 /* 2229 */ GIM_Reject,
2069 /* 2230 */ // Label 37: @2230
2070 /* 2230 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(2257), // Rule ID 69 //
2071 /* 2235 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
2072 /* 2238 */ // MIs[0] dst
2073 /* 2238 */ // No operand predicates
2074 /* 2238 */ // MIs[0] lhs
2075 /* 2238 */ // No operand predicates
2076 /* 2238 */ // MIs[0] rhs
2077 /* 2238 */ // No operand predicates
2078 /* 2238 */ // MIs[0] scale
2079 /* 2238 */ // No operand predicates
2080 /* 2238 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
2081 /* 2242 */ // Combiner Rule #44: G_SMULFIX_commute_constant_to_rhs
2082 /* 2242 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULFIX),
2083 /* 2245 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2084 /* 2247 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2085 /* 2249 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2086 /* 2251 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
2087 /* 2253 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2088 /* 2256 */ GIR_EraseRootFromParent_Done,
2089 /* 2257 */ // Label 121: @2257
2090 /* 2257 */ GIM_Reject,
2091 /* 2258 */ // Label 38: @2258
2092 /* 2258 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(2285), // Rule ID 70 //
2093 /* 2263 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
2094 /* 2266 */ // MIs[0] dst
2095 /* 2266 */ // No operand predicates
2096 /* 2266 */ // MIs[0] lhs
2097 /* 2266 */ // No operand predicates
2098 /* 2266 */ // MIs[0] rhs
2099 /* 2266 */ // No operand predicates
2100 /* 2266 */ // MIs[0] scale
2101 /* 2266 */ // No operand predicates
2102 /* 2266 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
2103 /* 2270 */ // Combiner Rule #45: G_UMULFIX_commute_constant_to_rhs
2104 /* 2270 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULFIX),
2105 /* 2273 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2106 /* 2275 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2107 /* 2277 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2108 /* 2279 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
2109 /* 2281 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2110 /* 2284 */ GIR_EraseRootFromParent_Done,
2111 /* 2285 */ // Label 122: @2285
2112 /* 2285 */ GIM_Reject,
2113 /* 2286 */ // Label 39: @2286
2114 /* 2286 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(2313), // Rule ID 71 //
2115 /* 2291 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
2116 /* 2294 */ // MIs[0] dst
2117 /* 2294 */ // No operand predicates
2118 /* 2294 */ // MIs[0] lhs
2119 /* 2294 */ // No operand predicates
2120 /* 2294 */ // MIs[0] rhs
2121 /* 2294 */ // No operand predicates
2122 /* 2294 */ // MIs[0] scale
2123 /* 2294 */ // No operand predicates
2124 /* 2294 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
2125 /* 2298 */ // Combiner Rule #46: G_SMULFIXSAT_commute_constant_to_rhs
2126 /* 2298 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULFIXSAT),
2127 /* 2301 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2128 /* 2303 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2129 /* 2305 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2130 /* 2307 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
2131 /* 2309 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2132 /* 2312 */ GIR_EraseRootFromParent_Done,
2133 /* 2313 */ // Label 123: @2313
2134 /* 2313 */ GIM_Reject,
2135 /* 2314 */ // Label 40: @2314
2136 /* 2314 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(2341), // Rule ID 72 //
2137 /* 2319 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
2138 /* 2322 */ // MIs[0] dst
2139 /* 2322 */ // No operand predicates
2140 /* 2322 */ // MIs[0] lhs
2141 /* 2322 */ // No operand predicates
2142 /* 2322 */ // MIs[0] rhs
2143 /* 2322 */ // No operand predicates
2144 /* 2322 */ // MIs[0] scale
2145 /* 2322 */ // No operand predicates
2146 /* 2322 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
2147 /* 2326 */ // Combiner Rule #47: G_UMULFIXSAT_commute_constant_to_rhs
2148 /* 2326 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULFIXSAT),
2149 /* 2329 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2150 /* 2331 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2151 /* 2333 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2152 /* 2335 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
2153 /* 2337 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2154 /* 2340 */ GIR_EraseRootFromParent_Done,
2155 /* 2341 */ // Label 124: @2341
2156 /* 2341 */ GIM_Reject,
2157 /* 2342 */ // Label 41: @2342
2158 /* 2342 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(2365), // Rule ID 48 //
2159 /* 2347 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
2160 /* 2350 */ // MIs[0] dst
2161 /* 2350 */ // No operand predicates
2162 /* 2350 */ // MIs[0] x
2163 /* 2350 */ // No operand predicates
2164 /* 2350 */ // MIs[0] y
2165 /* 2350 */ // No operand predicates
2166 /* 2350 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
2167 /* 2354 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2168 /* 2359 */ // Combiner Rule #27: right_identity_neg_zero_fp
2169 /* 2359 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2170 /* 2364 */ GIR_EraseRootFromParent_Done,
2171 /* 2365 */ // Label 125: @2365
2172 /* 2365 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(2390), // Rule ID 77 //
2173 /* 2370 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
2174 /* 2373 */ // MIs[0] dst
2175 /* 2373 */ // No operand predicates
2176 /* 2373 */ // MIs[0] lhs
2177 /* 2373 */ // No operand predicates
2178 /* 2373 */ // MIs[0] rhs
2179 /* 2373 */ // No operand predicates
2180 /* 2373 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
2181 /* 2377 */ // Combiner Rule #52: G_FADD_commute_fp_constant_to_rhs
2182 /* 2377 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FADD),
2183 /* 2380 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2184 /* 2382 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2185 /* 2384 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2186 /* 2386 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2187 /* 2389 */ GIR_EraseRootFromParent_Done,
2188 /* 2390 */ // Label 126: @2390
2189 /* 2390 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(2419), // Rule ID 49 //
2190 /* 2395 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
2191 /* 2398 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
2192 /* 2404 */ // MIs[0] dst
2193 /* 2404 */ // No operand predicates
2194 /* 2404 */ // MIs[0] x
2195 /* 2404 */ // No operand predicates
2196 /* 2404 */ // MIs[0] y
2197 /* 2404 */ // No operand predicates
2198 /* 2404 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
2199 /* 2408 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2200 /* 2413 */ // Combiner Rule #28: right_identity_neg_zero_fp_nsz
2201 /* 2413 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2202 /* 2418 */ GIR_EraseRootFromParent_Done,
2203 /* 2419 */ // Label 127: @2419
2204 /* 2419 */ GIM_Reject,
2205 /* 2420 */ // Label 42: @2420
2206 /* 2420 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(2443), // Rule ID 38 //
2207 /* 2425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
2208 /* 2428 */ // MIs[0] dst
2209 /* 2428 */ // No operand predicates
2210 /* 2428 */ // MIs[0] x
2211 /* 2428 */ // No operand predicates
2212 /* 2428 */ // MIs[0] y
2213 /* 2428 */ // No operand predicates
2214 /* 2428 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
2215 /* 2432 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2216 /* 2437 */ // Combiner Rule #18: right_identity_one_fp
2217 /* 2437 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2218 /* 2442 */ GIR_EraseRootFromParent_Done,
2219 /* 2443 */ // Label 128: @2443
2220 /* 2443 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(2463), // Rule ID 50 //
2221 /* 2448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
2222 /* 2451 */ // MIs[0] dst
2223 /* 2451 */ // No operand predicates
2224 /* 2451 */ // MIs[0] x
2225 /* 2451 */ // No operand predicates
2226 /* 2451 */ // MIs[0] y
2227 /* 2451 */ // No operand predicates
2228 /* 2451 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
2229 /* 2455 */ // Combiner Rule #29: right_identity_neg_one_fp
2230 /* 2455 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
2231 /* 2458 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2232 /* 2460 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
2233 /* 2462 */ GIR_EraseRootFromParent_Done,
2234 /* 2463 */ // Label 129: @2463
2235 /* 2463 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(2488), // Rule ID 78 //
2236 /* 2468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
2237 /* 2471 */ // MIs[0] dst
2238 /* 2471 */ // No operand predicates
2239 /* 2471 */ // MIs[0] lhs
2240 /* 2471 */ // No operand predicates
2241 /* 2471 */ // MIs[0] rhs
2242 /* 2471 */ // No operand predicates
2243 /* 2471 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
2244 /* 2475 */ // Combiner Rule #53: G_FMUL_commute_fp_constant_to_rhs
2245 /* 2475 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMUL),
2246 /* 2478 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2247 /* 2480 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2248 /* 2482 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2249 /* 2484 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2250 /* 2487 */ GIR_EraseRootFromParent_Done,
2251 /* 2488 */ // Label 130: @2488
2252 /* 2488 */ GIM_Reject,
2253 /* 2489 */ // Label 43: @2489
2254 /* 2489 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(2518), // Rule ID 36 //
2255 /* 2494 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
2256 /* 2497 */ // MIs[0] dst
2257 /* 2497 */ // No operand predicates
2258 /* 2497 */ // MIs[0] t
2259 /* 2497 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2260 /* 2501 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
2261 /* 2505 */ // MIs[1] src
2262 /* 2505 */ // No operand predicates
2263 /* 2505 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2264 /* 2510 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2265 /* 2512 */ // Combiner Rule #16: fneg_fneg_fold
2266 /* 2512 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2267 /* 2517 */ GIR_EraseRootFromParent_Done,
2268 /* 2518 */ // Label 131: @2518
2269 /* 2518 */ GIM_Reject,
2270 /* 2519 */ // Label 44: @2519
2271 /* 2519 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(2552), // Rule ID 47 //
2272 /* 2524 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
2273 /* 2527 */ // MIs[0] dst
2274 /* 2527 */ // No operand predicates
2275 /* 2527 */ // MIs[0] src1
2276 /* 2527 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2277 /* 2531 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
2278 /* 2535 */ // MIs[1] src0
2279 /* 2535 */ // No operand predicates
2280 /* 2535 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
2281 /* 2539 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2282 /* 2544 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2283 /* 2546 */ // Combiner Rule #26: fptrunc_fpext_fold
2284 /* 2546 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2285 /* 2551 */ GIR_EraseRootFromParent_Done,
2286 /* 2552 */ // Label 132: @2552
2287 /* 2552 */ GIM_Reject,
2288 /* 2553 */ // Label 45: @2553
2289 /* 2553 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(2578), // Rule ID 79 //
2290 /* 2558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
2291 /* 2561 */ // MIs[0] dst
2292 /* 2561 */ // No operand predicates
2293 /* 2561 */ // MIs[0] lhs
2294 /* 2561 */ // No operand predicates
2295 /* 2561 */ // MIs[0] rhs
2296 /* 2561 */ // No operand predicates
2297 /* 2561 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
2298 /* 2565 */ // Combiner Rule #54: G_FMINNUM_commute_fp_constant_to_rhs
2299 /* 2565 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMINNUM),
2300 /* 2568 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2301 /* 2570 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2302 /* 2572 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2303 /* 2574 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2304 /* 2577 */ GIR_EraseRootFromParent_Done,
2305 /* 2578 */ // Label 133: @2578
2306 /* 2578 */ GIM_Reject,
2307 /* 2579 */ // Label 46: @2579
2308 /* 2579 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(2604), // Rule ID 80 //
2309 /* 2584 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
2310 /* 2587 */ // MIs[0] dst
2311 /* 2587 */ // No operand predicates
2312 /* 2587 */ // MIs[0] lhs
2313 /* 2587 */ // No operand predicates
2314 /* 2587 */ // MIs[0] rhs
2315 /* 2587 */ // No operand predicates
2316 /* 2587 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
2317 /* 2591 */ // Combiner Rule #55: G_FMAXNUM_commute_fp_constant_to_rhs
2318 /* 2591 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAXNUM),
2319 /* 2594 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2320 /* 2596 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2321 /* 2598 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2322 /* 2600 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2323 /* 2603 */ GIR_EraseRootFromParent_Done,
2324 /* 2604 */ // Label 134: @2604
2325 /* 2604 */ GIM_Reject,
2326 /* 2605 */ // Label 47: @2605
2327 /* 2605 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2630), // Rule ID 81 //
2328 /* 2610 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
2329 /* 2613 */ // MIs[0] dst
2330 /* 2613 */ // No operand predicates
2331 /* 2613 */ // MIs[0] lhs
2332 /* 2613 */ // No operand predicates
2333 /* 2613 */ // MIs[0] rhs
2334 /* 2613 */ // No operand predicates
2335 /* 2613 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
2336 /* 2617 */ // Combiner Rule #56: G_FMINNUM_IEEE_commute_fp_constant_to_rhs
2337 /* 2617 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMINNUM_IEEE),
2338 /* 2620 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2339 /* 2622 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2340 /* 2624 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2341 /* 2626 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2342 /* 2629 */ GIR_EraseRootFromParent_Done,
2343 /* 2630 */ // Label 135: @2630
2344 /* 2630 */ GIM_Reject,
2345 /* 2631 */ // Label 48: @2631
2346 /* 2631 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2656), // Rule ID 82 //
2347 /* 2636 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
2348 /* 2639 */ // MIs[0] dst
2349 /* 2639 */ // No operand predicates
2350 /* 2639 */ // MIs[0] lhs
2351 /* 2639 */ // No operand predicates
2352 /* 2639 */ // MIs[0] rhs
2353 /* 2639 */ // No operand predicates
2354 /* 2639 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
2355 /* 2643 */ // Combiner Rule #57: G_FMAXNUM_IEEE_commute_fp_constant_to_rhs
2356 /* 2643 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAXNUM_IEEE),
2357 /* 2646 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2358 /* 2648 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2359 /* 2650 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2360 /* 2652 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2361 /* 2655 */ GIR_EraseRootFromParent_Done,
2362 /* 2656 */ // Label 136: @2656
2363 /* 2656 */ GIM_Reject,
2364 /* 2657 */ // Label 49: @2657
2365 /* 2657 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2682), // Rule ID 83 //
2366 /* 2662 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
2367 /* 2665 */ // MIs[0] dst
2368 /* 2665 */ // No operand predicates
2369 /* 2665 */ // MIs[0] lhs
2370 /* 2665 */ // No operand predicates
2371 /* 2665 */ // MIs[0] rhs
2372 /* 2665 */ // No operand predicates
2373 /* 2665 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
2374 /* 2669 */ // Combiner Rule #58: G_FMINIMUM_commute_fp_constant_to_rhs
2375 /* 2669 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMINIMUM),
2376 /* 2672 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2377 /* 2674 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2378 /* 2676 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2379 /* 2678 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2380 /* 2681 */ GIR_EraseRootFromParent_Done,
2381 /* 2682 */ // Label 137: @2682
2382 /* 2682 */ GIM_Reject,
2383 /* 2683 */ // Label 50: @2683
2384 /* 2683 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2708), // Rule ID 84 //
2385 /* 2688 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
2386 /* 2691 */ // MIs[0] dst
2387 /* 2691 */ // No operand predicates
2388 /* 2691 */ // MIs[0] lhs
2389 /* 2691 */ // No operand predicates
2390 /* 2691 */ // MIs[0] rhs
2391 /* 2691 */ // No operand predicates
2392 /* 2691 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
2393 /* 2695 */ // Combiner Rule #59: G_FMAXIMUM_commute_fp_constant_to_rhs
2394 /* 2695 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAXIMUM),
2395 /* 2698 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2396 /* 2700 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2397 /* 2702 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2398 /* 2704 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2399 /* 2707 */ GIR_EraseRootFromParent_Done,
2400 /* 2708 */ // Label 138: @2708
2401 /* 2708 */ GIM_Reject,
2402 /* 2709 */ // Label 51: @2709
2403 /* 2709 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2732), // Rule ID 15 //
2404 /* 2714 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
2405 /* 2717 */ // MIs[0] dst
2406 /* 2717 */ // No operand predicates
2407 /* 2717 */ // MIs[0] lhs
2408 /* 2717 */ // No operand predicates
2409 /* 2717 */ // MIs[0] Operand 2
2410 /* 2717 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2411 /* 2721 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2412 /* 2726 */ // Combiner Rule #6: right_identity_zero @ [__right_identity_zero_match_0[7]]
2413 /* 2726 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2414 /* 2731 */ GIR_EraseRootFromParent_Done,
2415 /* 2732 */ // Label 139: @2732
2416 /* 2732 */ GIM_Reject,
2417 /* 2733 */ // Label 52: @2733
2418 /* 2733 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2758), // Rule ID 61 //
2419 /* 2738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
2420 /* 2741 */ // MIs[0] dst
2421 /* 2741 */ // No operand predicates
2422 /* 2741 */ // MIs[0] lhs
2423 /* 2741 */ // No operand predicates
2424 /* 2741 */ // MIs[0] rhs
2425 /* 2741 */ // No operand predicates
2426 /* 2741 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
2427 /* 2745 */ // Combiner Rule #36: G_SMIN_commute_constant_to_rhs
2428 /* 2745 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMIN),
2429 /* 2748 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2430 /* 2750 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2431 /* 2752 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2432 /* 2754 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2433 /* 2757 */ GIR_EraseRootFromParent_Done,
2434 /* 2758 */ // Label 140: @2758
2435 /* 2758 */ GIM_Reject,
2436 /* 2759 */ // Label 53: @2759
2437 /* 2759 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2784), // Rule ID 62 //
2438 /* 2764 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
2439 /* 2767 */ // MIs[0] dst
2440 /* 2767 */ // No operand predicates
2441 /* 2767 */ // MIs[0] lhs
2442 /* 2767 */ // No operand predicates
2443 /* 2767 */ // MIs[0] rhs
2444 /* 2767 */ // No operand predicates
2445 /* 2767 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
2446 /* 2771 */ // Combiner Rule #37: G_SMAX_commute_constant_to_rhs
2447 /* 2771 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMAX),
2448 /* 2774 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2449 /* 2776 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2450 /* 2778 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2451 /* 2780 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2452 /* 2783 */ GIR_EraseRootFromParent_Done,
2453 /* 2784 */ // Label 141: @2784
2454 /* 2784 */ GIM_Reject,
2455 /* 2785 */ // Label 54: @2785
2456 /* 2785 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2810), // Rule ID 63 //
2457 /* 2790 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
2458 /* 2793 */ // MIs[0] dst
2459 /* 2793 */ // No operand predicates
2460 /* 2793 */ // MIs[0] lhs
2461 /* 2793 */ // No operand predicates
2462 /* 2793 */ // MIs[0] rhs
2463 /* 2793 */ // No operand predicates
2464 /* 2793 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
2465 /* 2797 */ // Combiner Rule #38: G_UMIN_commute_constant_to_rhs
2466 /* 2797 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMIN),
2467 /* 2800 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2468 /* 2802 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2469 /* 2804 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2470 /* 2806 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2471 /* 2809 */ GIR_EraseRootFromParent_Done,
2472 /* 2810 */ // Label 142: @2810
2473 /* 2810 */ GIM_Reject,
2474 /* 2811 */ // Label 55: @2811
2475 /* 2811 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2836), // Rule ID 64 //
2476 /* 2816 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
2477 /* 2819 */ // MIs[0] dst
2478 /* 2819 */ // No operand predicates
2479 /* 2819 */ // MIs[0] lhs
2480 /* 2819 */ // No operand predicates
2481 /* 2819 */ // MIs[0] rhs
2482 /* 2819 */ // No operand predicates
2483 /* 2819 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
2484 /* 2823 */ // Combiner Rule #39: G_UMAX_commute_constant_to_rhs
2485 /* 2823 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMAX),
2486 /* 2826 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2487 /* 2828 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2488 /* 2830 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2489 /* 2832 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2490 /* 2835 */ GIR_EraseRootFromParent_Done,
2491 /* 2836 */ // Label 143: @2836
2492 /* 2836 */ GIM_Reject,
2493 /* 2837 */ // Label 56: @2837
2494 /* 2837 */ GIM_Reject,
2495 /* 2838 */ }; // Size: 2838 bytes
2496 return MatchTable0;
2497}
2498#undef GIMT_Encode2
2499#undef GIMT_Encode4
2500#undef GIMT_Encode8
2501
2502
2503#endif // GET_GICOMBINER_IMPL
2504
2505#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
2506
2507AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
2508AvailableFunctionFeatures()
2509
2510#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
2511
2512#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
2513
2514, State(0),
2515ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
2516
2517#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
2518
2519