Coverage Report

Created: 2024-01-17 10:31

/src/build/lib/Target/AArch64/AArch64GenPreLegalizeGICombiner.inc
Line
Count
Source (jump to first uncovered line)
1
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2
|*                                                                            *|
3
|* AArch64PreLegalizerCombinerImpl Combiner Match Table                       *|
4
|*                                                                            *|
5
|* Automatically generated file, do not edit!                                 *|
6
|*                                                                            *|
7
\*===----------------------------------------------------------------------===*/
8
9
#ifdef GET_GICOMBINER_DEPS
10
#include "llvm/ADT/SparseBitVector.h"
11
namespace llvm {
12
extern cl::OptionCategory GICombinerOptionCategory;
13
} // end namespace llvm
14
#endif // ifdef GET_GICOMBINER_DEPS
15
16
#ifdef GET_GICOMBINER_TYPES
17
struct AArch64PreLegalizerCombinerImplRuleConfig {
18
  SparseBitVector<> DisabledRules;
19
20
  bool isRuleEnabled(unsigned RuleID) const;
21
  bool parseCommandLineOption();
22
  bool setRuleEnabled(StringRef RuleIdentifier);
23
  bool setRuleDisabled(StringRef RuleIdentifier);
24
};
25
26
0
static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
27
0
  uint64_t I;
28
  // getAtInteger(...) returns false on success
29
0
  bool Parsed = !RuleIdentifier.getAsInteger(0, I);
30
0
  if (Parsed)
31
0
    return I;
32
33
0
#ifndef NDEBUG
34
0
  switch (RuleIdentifier.size()) {
35
0
  default: break;
36
0
  case 9:  // 4 strings to match.
37
0
    switch (RuleIdentifier[0]) {
38
0
    default: break;
39
0
    case 'a':  // 1 string to match.
40
0
      if (memcmp(RuleIdentifier.data()+1, "ddo_by_0", 8) != 0)
41
0
        break;
42
0
      return 84;  // "addo_by_0"
43
0
    case 'c':  // 1 string to match.
44
0
      if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
45
0
        break;
46
0
      return 0;  // "copy_prop"
47
0
    case 'm':  // 2 strings to match.
48
0
      if (memcmp(RuleIdentifier.data()+1, "ulo_by_", 7) != 0)
49
0
        break;
50
0
      switch (RuleIdentifier[8]) {
51
0
      default: break;
52
0
      case '0':  // 1 string to match.
53
0
        return 83;  // "mulo_by_0"
54
0
      case '2':  // 1 string to match.
55
0
        return 82;  // "mulo_by_2"
56
0
      }
57
0
      break;
58
0
    }
59
0
    break;
60
0
  case 10:   // 3 strings to match.
61
0
    switch (RuleIdentifier[0]) {
62
0
    default: break;
63
0
    case 'i':  // 1 string to match.
64
0
      if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
65
0
        break;
66
0
      return 29;  // "i2p_to_p2i"
67
0
    case 'm':  // 1 string to match.
68
0
      if (memcmp(RuleIdentifier.data()+1, "ul_to_shl", 9) != 0)
69
0
        break;
70
0
      return 1;  // "mul_to_shl"
71
0
    case 'p':  // 1 string to match.
72
0
      if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
73
0
        break;
74
0
      return 28;  // "p2i_to_i2p"
75
0
    }
76
0
    break;
77
0
  case 11:   // 4 strings to match.
78
0
    switch (RuleIdentifier[0]) {
79
0
    default: break;
80
0
    case 'a':  // 1 string to match.
81
0
      if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
82
0
        break;
83
0
      return 34;  // "add_sub_reg"
84
0
    case 's':  // 1 string to match.
85
0
      if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
86
0
        break;
87
0
      return 122;  // "sub_add_reg"
88
0
    case 't':  // 1 string to match.
89
0
      if (memcmp(RuleIdentifier.data()+1, "runc_shift", 10) != 0)
90
0
        break;
91
0
      return 72;  // "trunc_shift"
92
0
    case 'u':  // 1 string to match.
93
0
      if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
94
0
        break;
95
0
      return 67;  // "unmerge_cst"
96
0
    }
97
0
    break;
98
0
  case 12:   // 6 strings to match.
99
0
    switch (RuleIdentifier[0]) {
100
0
    default: break;
101
0
    case 'a':  // 1 string to match.
102
0
      if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
103
0
        break;
104
0
      return 85;  // "adde_to_addo"
105
0
    case 'e':  // 1 string to match.
106
0
      if (memcmp(RuleIdentifier.data()+1, "xt_ext_fold", 11) != 0)
107
0
        break;
108
0
      return 63;  // "ext_ext_fold"
109
0
    case 'f':  // 1 string to match.
110
0
      if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
111
0
        break;
112
0
      return 125;  // "fsub_to_fneg"
113
0
    case 'm':  // 1 string to match.
114
0
      if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
115
0
        break;
116
0
      return 110;  // "mulh_to_lshr"
117
0
    case 'n':  // 1 string to match.
118
0
      if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
119
0
        break;
120
0
      return 64;  // "not_cmp_fold"
121
0
    case 'r':  // 1 string to match.
122
0
      if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
123
0
        break;
124
0
      return 57;  // "redundant_or"
125
0
    }
126
0
    break;
127
0
  case 13:   // 9 strings to match.
128
0
    switch (RuleIdentifier[0]) {
129
0
    default: break;
130
0
    case 'c':  // 1 string to match.
131
0
      if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
132
0
        break;
133
0
      return 98;  // "commute_shift"
134
0
    case 'l':  // 1 string to match.
135
0
      if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
136
0
        break;
137
0
      return 9;  // "load_and_mask"
138
0
    case 'm':  // 2 strings to match.
139
0
      switch (RuleIdentifier[1]) {
140
0
      default: break;
141
0
      case 'a':  // 1 string to match.
142
0
        if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
143
0
          break;
144
0
        return 54;  // "match_selects"
145
0
      case 'e':  // 1 string to match.
146
0
        if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
147
0
          break;
148
0
        return 70;  // "merge_unmerge"
149
0
      }
150
0
      break;
151
0
    case 'r':  // 1 string to match.
152
0
      if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
153
0
        break;
154
0
      return 55;  // "redundant_and"
155
0
    case 's':  // 1 string to match.
156
0
      if (memcmp(RuleIdentifier.data()+1, "div_by_const", 12) != 0)
157
0
        break;
158
0
      return 109;  // "sdiv_by_const"
159
0
    case 'u':  // 3 strings to match.
160
0
      switch (RuleIdentifier[1]) {
161
0
      default: break;
162
0
      case 'd':  // 1 string to match.
163
0
        if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
164
0
          break;
165
0
        return 108;  // "udiv_by_const"
166
0
      case 'n':  // 2 strings to match.
167
0
        if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
168
0
          break;
169
0
        switch (RuleIdentifier[8]) {
170
0
        default: break;
171
0
        case 'm':  // 1 string to match.
172
0
          if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
173
0
            break;
174
0
          return 66;  // "unmerge_merge"
175
0
        case 'u':  // 1 string to match.
176
0
          if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
177
0
            break;
178
0
          return 21;  // "unmerge_undef"
179
0
        }
180
0
        break;
181
0
      }
182
0
      break;
183
0
    }
184
0
    break;
185
0
  case 14:   // 7 strings to match.
186
0
    switch (RuleIdentifier[0]) {
187
0
    default: break;
188
0
    case 'b':  // 1 string to match.
189
0
      if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0)
190
0
        break;
191
0
      return 25;  // "binop_same_val"
192
0
    case 'f':  // 2 strings to match.
193
0
      switch (RuleIdentifier[1]) {
194
0
      default: break;
195
0
      case 'a':  // 1 string to match.
196
0
        if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
197
0
          break;
198
0
        return 107;  // "fabs_fneg_fold"
199
0
      case 'n':  // 1 string to match.
200
0
        if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
201
0
          break;
202
0
        return 31;  // "fneg_fneg_fold"
203
0
      }
204
0
      break;
205
0
    case 'm':  // 1 string to match.
206
0
      if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
207
0
        break;
208
0
      return 3;  // "mul_by_neg_one"
209
0
    case 'r':  // 1 string to match.
210
0
      if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
211
0
        break;
212
0
      return 45;  // "reassoc_ptradd"
213
0
    case 's':  // 1 string to match.
214
0
      if (memcmp(RuleIdentifier.data()+1, "hifts_too_big", 13) != 0)
215
0
        break;
216
0
      return 44;  // "shifts_too_big"
217
0
    case 't':  // 1 string to match.
218
0
      if (memcmp(RuleIdentifier.data()+1, "runc_ext_fold", 13) != 0)
219
0
        break;
220
0
      return 71;  // "trunc_ext_fold"
221
0
    }
222
0
    break;
223
0
  case 15:   // 6 strings to match.
224
0
    switch (RuleIdentifier[0]) {
225
0
    default: break;
226
0
    case 'e':  // 1 string to match.
227
0
      if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
228
0
        break;
229
0
      return 8;  // "extending_loads"
230
0
    case 'i':  // 1 string to match.
231
0
      if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
232
0
        break;
233
0
      return 4;  // "idempotent_prop"
234
0
    case 'l':  // 1 string to match.
235
0
      if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
236
0
        break;
237
0
      return 91;  // "load_or_combine"
238
0
    case 'o':  // 1 string to match.
239
0
      if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
240
0
        break;
241
0
      return 81;  // "overlapping_and"
242
0
    case 's':  // 1 string to match.
243
0
      if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
244
0
        break;
245
0
      return 23;  // "select_same_val"
246
0
    case 'z':  // 1 string to match.
247
0
      if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
248
0
        break;
249
0
      return 59;  // "zext_trunc_fold"
250
0
    }
251
0
    break;
252
0
  case 16:   // 3 strings to match.
253
0
    switch (RuleIdentifier[0]) {
254
0
    default: break;
255
0
    case 's':  // 2 strings to match.
256
0
      if (memcmp(RuleIdentifier.data()+1, "elect_", 6) != 0)
257
0
        break;
258
0
      switch (RuleIdentifier[7]) {
259
0
      default: break;
260
0
      case 't':  // 1 string to match.
261
0
        if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
262
0
          break;
263
0
        return 123;  // "select_to_minmax"
264
0
      case 'u':  // 1 string to match.
265
0
        if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
266
0
          break;
267
0
        return 52;  // "select_undef_cmp"
268
0
      }
269
0
      break;
270
0
    case 'u':  // 1 string to match.
271
0
      if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
272
0
        break;
273
0
      return 11;  // "undef_to_fp_zero"
274
0
    }
275
0
    break;
276
0
  case 17:   // 9 strings to match.
277
0
    switch (RuleIdentifier[0]) {
278
0
    default: break;
279
0
    case 'a':  // 2 strings to match.
280
0
      switch (RuleIdentifier[1]) {
281
0
      default: break;
282
0
      case 'd':  // 1 string to match.
283
0
        if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
284
0
          break;
285
0
        return 2;  // "add_p2i_to_ptradd"
286
0
      case 'n':  // 1 string to match.
287
0
        if (memcmp(RuleIdentifier.data()+2, "yext_trunc_fold", 15) != 0)
288
0
          break;
289
0
        return 30;  // "anyext_trunc_fold"
290
0
      }
291
0
      break;
292
0
    case 'c':  // 1 string to match.
293
0
      if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fma", 16) != 0)
294
0
        break;
295
0
      return 105;  // "constant_fold_fma"
296
0
    case 'd':  // 1 string to match.
297
0
      if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
298
0
        break;
299
0
      return 92;  // "div_rem_to_divrem"
300
0
    case 'e':  // 1 string to match.
301
0
      if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
302
0
        break;
303
0
      return 20;  // "erase_undef_store"
304
0
    case 'p':  // 1 string to match.
305
0
      if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
306
0
        break;
307
0
      return 88;  // "ptr_add_with_zero"
308
0
    case 's':  // 1 string to match.
309
0
      if (memcmp(RuleIdentifier.data()+1, "hift_immed_chain", 16) != 0)
310
0
        break;
311
0
      return 89;  // "shift_immed_chain"
312
0
    case 'u':  // 2 strings to match.
313
0
      switch (RuleIdentifier[1]) {
314
0
      default: break;
315
0
      case 'n':  // 1 string to match.
316
0
        if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
317
0
          break;
318
0
        return 12;  // "undef_to_int_zero"
319
0
      case 'r':  // 1 string to match.
320
0
        if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
321
0
          break;
322
0
        return 58;  // "urem_pow2_to_mask"
323
0
      }
324
0
      break;
325
0
    }
326
0
    break;
327
0
  case 18:   // 8 strings to match.
328
0
    switch (RuleIdentifier[0]) {
329
0
    default: break;
330
0
    case 'b':  // 1 string to match.
331
0
      if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
332
0
        break;
333
0
      return 26;  // "binop_left_to_zero"
334
0
    case 'c':  // 3 strings to match.
335
0
      if (RuleIdentifier[1] != 'o')
336
0
        break;
337
0
      switch (RuleIdentifier[2]) {
338
0
      default: break;
339
0
      case 'm':  // 1 string to match.
340
0
        if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
341
0
          break;
342
0
        return 86;  // "combine_minmax_nan"
343
0
      case 'n':  // 2 strings to match.
344
0
        if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
345
0
          break;
346
0
        switch (RuleIdentifier[15]) {
347
0
        default: break;
348
0
        case 'a':  // 1 string to match.
349
0
          if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
350
0
            break;
351
0
          return 74;  // "constant_fold_fabs"
352
0
        case 'n':  // 1 string to match.
353
0
          if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
354
0
            break;
355
0
          return 73;  // "constant_fold_fneg"
356
0
        }
357
0
        break;
358
0
      }
359
0
      break;
360
0
    case 'f':  // 2 strings to match.
361
0
      switch (RuleIdentifier[1]) {
362
0
      default: break;
363
0
      case 'o':  // 1 string to match.
364
0
        if (memcmp(RuleIdentifier.data()+2, "ld_global_offset", 16) != 0)
365
0
          break;
366
0
        return 130;  // "fold_global_offset"
367
0
      case 'p':  // 1 string to match.
368
0
        if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
369
0
          break;
370
0
        return 39;  // "fptrunc_fpext_fold"
371
0
      }
372
0
      break;
373
0
    case 's':  // 2 strings to match.
374
0
      switch (RuleIdentifier[1]) {
375
0
      default: break;
376
0
      case 'e':  // 1 string to match.
377
0
        if (memcmp(RuleIdentifier.data()+2, "xt_inreg_of_load", 16) != 0)
378
0
          break;
379
0
        return 49;  // "sext_inreg_of_load"
380
0
      case 'h':  // 1 string to match.
381
0
        if (memcmp(RuleIdentifier.data()+2, "uffle_to_extract", 16) != 0)
382
0
          break;
383
0
        return 131;  // "shuffle_to_extract"
384
0
      }
385
0
      break;
386
0
    }
387
0
    break;
388
0
  case 19:   // 13 strings to match.
389
0
    switch (RuleIdentifier[0]) {
390
0
    default: break;
391
0
    case 'b':  // 1 string to match.
392
0
      if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
393
0
        break;
394
0
      return 27;  // "binop_right_to_zero"
395
0
    case 'c':  // 4 strings to match.
396
0
      if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
397
0
        break;
398
0
      switch (RuleIdentifier[5]) {
399
0
      default: break;
400
0
      case '_':  // 1 string to match.
401
0
        if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
402
0
          break;
403
0
        return 80;  // "const_ptradd_to_i2p"
404
0
      case 'a':  // 3 strings to match.
405
0
        if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
406
0
          break;
407
0
        switch (RuleIdentifier[14]) {
408
0
        default: break;
409
0
        case 'b':  // 1 string to match.
410
0
          if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
411
0
            break;
412
0
          return 103;  // "constant_fold_binop"
413
0
        case 'f':  // 2 strings to match.
414
0
          switch (RuleIdentifier[15]) {
415
0
          default: break;
416
0
          case 'l':  // 1 string to match.
417
0
            if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
418
0
              break;
419
0
            return 76;  // "constant_fold_flog2"
420
0
          case 's':  // 1 string to match.
421
0
            if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
422
0
              break;
423
0
            return 75;  // "constant_fold_fsqrt"
424
0
          }
425
0
          break;
426
0
        }
427
0
        break;
428
0
      }
429
0
      break;
430
0
    case 'e':  // 2 strings to match.
431
0
      if (memcmp(RuleIdentifier.data()+1, "xt", 2) != 0)
432
0
        break;
433
0
      switch (RuleIdentifier[3]) {
434
0
      default: break;
435
0
      case '_':  // 1 string to match.
436
0
        if (memcmp(RuleIdentifier.data()+4, "uaddv_to_uaddlv", 15) != 0)
437
0
          break;
438
0
        return 133;  // "ext_uaddv_to_uaddlv"
439
0
      case 'e':  // 1 string to match.
440
0
        if (memcmp(RuleIdentifier.data()+4, "nd_through_phis", 15) != 0)
441
0
          break;
442
0
        return 41;  // "extend_through_phis"
443
0
      }
444
0
      break;
445
0
    case 'p':  // 1 string to match.
446
0
      if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
447
0
        break;
448
0
      return 47;  // "ptr_add_immed_chain"
449
0
    case 'r':  // 2 strings to match.
450
0
      switch (RuleIdentifier[1]) {
451
0
      default: break;
452
0
      case 'e':  // 1 string to match.
453
0
        if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
454
0
          break;
455
0
        return 46;  // "reassoc_comm_binops"
456
0
      case 'i':  // 1 string to match.
457
0
        if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
458
0
          break;
459
0
        return 24;  // "right_identity_zero"
460
0
      }
461
0
      break;
462
0
    case 's':  // 2 strings to match.
463
0
      switch (RuleIdentifier[1]) {
464
0
      default: break;
465
0
      case 'e':  // 1 string to match.
466
0
        if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
467
0
          break;
468
0
        return 53;  // "select_constant_cmp"
469
0
      case 'i':  // 1 string to match.
470
0
        if (memcmp(RuleIdentifier.data()+2, "mplify_add_to_sub", 17) != 0)
471
0
          break;
472
0
        return 42;  // "simplify_add_to_sub"
473
0
      }
474
0
      break;
475
0
    case 'u':  // 1 string to match.
476
0
      if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
477
0
        break;
478
0
      return 16;  // "unary_undef_to_zero"
479
0
    }
480
0
    break;
481
0
  case 20:   // 6 strings to match.
482
0
    switch (RuleIdentifier[0]) {
483
0
    default: break;
484
0
    case 'a':  // 1 string to match.
485
0
      if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
486
0
        break;
487
0
      return 112;  // "and_or_disjoint_mask"
488
0
    case 'b':  // 1 string to match.
489
0
      if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
490
0
        break;
491
0
      return 38;  // "bitcast_bitcast_fold"
492
0
    case 'i':  // 1 string to match.
493
0
      if (memcmp(RuleIdentifier.data()+1, "cmp_redundant_trunc", 19) != 0)
494
0
        break;
495
0
      return 129;  // "icmp_redundant_trunc"
496
0
    case 'r':  // 2 strings to match.
497
0
      if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
498
0
        break;
499
0
      switch (RuleIdentifier[4]) {
500
0
      default: break;
501
0
      case 'c':  // 1 string to match.
502
0
        if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
503
0
          break;
504
0
        return 50;  // "reduce_shl_of_extend"
505
0
      case 'n':  // 1 string to match.
506
0
        if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
507
0
          break;
508
0
        return 56;  // "redundant_sext_inreg"
509
0
      }
510
0
      break;
511
0
    case 'u':  // 1 string to match.
512
0
      if (memcmp(RuleIdentifier.data()+1, "nmerge_zext_to_zext", 19) != 0)
513
0
        break;
514
0
      return 69;  // "unmerge_zext_to_zext"
515
0
    }
516
0
    break;
517
0
  case 21:   // 7 strings to match.
518
0
    switch (RuleIdentifier[0]) {
519
0
    default: break;
520
0
    case 'c':  // 2 strings to match.
521
0
      if (memcmp(RuleIdentifier.data()+1, "onstant_fold_", 13) != 0)
522
0
        break;
523
0
      switch (RuleIdentifier[14]) {
524
0
      default: break;
525
0
      case 'c':  // 1 string to match.
526
0
        if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
527
0
          break;
528
0
        return 106;  // "constant_fold_cast_op"
529
0
      case 'f':  // 1 string to match.
530
0
        if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
531
0
          break;
532
0
        return 77;  // "constant_fold_fptrunc"
533
0
      }
534
0
      break;
535
0
    case 'e':  // 1 string to match.
536
0
      if (memcmp(RuleIdentifier.data()+1, "xt_addv_to_udot_addv", 20) != 0)
537
0
        break;
538
0
      return 132;  // "ext_addv_to_udot_addv"
539
0
    case 'f':  // 1 string to match.
540
0
      if (memcmp(RuleIdentifier.data()+1, "constant_to_constant", 20) != 0)
541
0
        break;
542
0
      return 128;  // "fconstant_to_constant"
543
0
    case 'r':  // 1 string to match.
544
0
      if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
545
0
        break;
546
0
      return 33;  // "right_identity_one_fp"
547
0
    case 'u':  // 2 strings to match.
548
0
      if (RuleIdentifier[1] != 'n')
549
0
        break;
550
0
      switch (RuleIdentifier[2]) {
551
0
      default: break;
552
0
      case 'd':  // 1 string to match.
553
0
        if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
554
0
          break;
555
0
        return 13;  // "undef_to_negative_one"
556
0
      case 'm':  // 1 string to match.
557
0
        if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
558
0
          break;
559
0
        return 68;  // "unmerge_dead_to_trunc"
560
0
      }
561
0
      break;
562
0
    }
563
0
    break;
564
0
  case 22:   // 11 strings to match.
565
0
    switch (RuleIdentifier[0]) {
566
0
    default: break;
567
0
    case 'c':  // 1 string to match.
568
0
      if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fp_binop", 21) != 0)
569
0
        break;
570
0
      return 104;  // "constant_fold_fp_binop"
571
0
    case 'f':  // 4 strings to match.
572
0
      switch (RuleIdentifier[1]) {
573
0
      default: break;
574
0
      case 'o':  // 1 string to match.
575
0
        if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
576
0
          break;
577
0
        return 121;  // "fold_binop_into_select"
578
0
      case 'u':  // 3 strings to match.
579
0
        if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
580
0
          break;
581
0
        switch (RuleIdentifier[13]) {
582
0
        default: break;
583
0
        case 'l':  // 1 string to match.
584
0
          if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
585
0
            break;
586
0
          return 96;  // "funnel_shift_left_zero"
587
0
        case 'o':  // 1 string to match.
588
0
          if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
589
0
            break;
590
0
          return 97;  // "funnel_shift_overshift"
591
0
        case 't':  // 1 string to match.
592
0
          if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
593
0
            break;
594
0
          return 94;  // "funnel_shift_to_rotate"
595
0
        }
596
0
        break;
597
0
      }
598
0
      break;
599
0
    case 'i':  // 1 string to match.
600
0
      if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
601
0
        break;
602
0
      return 61;  // "icmp_to_lhs_known_bits"
603
0
    case 'p':  // 1 string to match.
604
0
      if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
605
0
        break;
606
0
      return 17;  // "propagate_undef_any_op"
607
0
    case 'r':  // 2 strings to match.
608
0
      switch (RuleIdentifier[1]) {
609
0
      default: break;
610
0
      case 'e':  // 1 string to match.
611
0
        if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
612
0
          break;
613
0
        return 111;  // "redundant_neg_operands"
614
0
      case 'i':  // 1 string to match.
615
0
        if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
616
0
          break;
617
0
        return 32;  // "right_identity_one_int"
618
0
      }
619
0
      break;
620
0
    case 's':  // 1 string to match.
621
0
      if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
622
0
        break;
623
0
      return 48;  // "shl_ashr_to_sext_inreg"
624
0
    case 't':  // 1 string to match.
625
0
      if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
626
0
        break;
627
0
      return 36;  // "trunc_buildvector_fold"
628
0
    }
629
0
    break;
630
0
  case 23:   // 4 strings to match.
631
0
    switch (RuleIdentifier[0]) {
632
0
    default: break;
633
0
    case 'f':  // 1 string to match.
634
0
      if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
635
0
        break;
636
0
      return 95;  // "funnel_shift_right_zero"
637
0
    case 'i':  // 2 strings to match.
638
0
      if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
639
0
        break;
640
0
      switch (RuleIdentifier[21]) {
641
0
      default: break;
642
0
      case 's':  // 1 string to match.
643
0
        if (RuleIdentifier[22] != 'i')
644
0
          break;
645
0
        return 78;  // "itof_const_zero_fold_si"
646
0
      case 'u':  // 1 string to match.
647
0
        if (RuleIdentifier[22] != 'i')
648
0
          break;
649
0
        return 79;  // "itof_const_zero_fold_ui"
650
0
      }
651
0
      break;
652
0
    case 'p':  // 1 string to match.
653
0
      if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
654
0
        break;
655
0
      return 18;  // "propagate_undef_all_ops"
656
0
    }
657
0
    break;
658
0
  case 24:   // 4 strings to match.
659
0
    switch (RuleIdentifier[0]) {
660
0
    default: break;
661
0
    case 'b':  // 1 string to match.
662
0
      if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
663
0
        break;
664
0
      return 14;  // "binop_left_undef_to_zero"
665
0
    case 'n':  // 1 string to match.
666
0
      if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
667
0
        break;
668
0
      return 51;  // "narrow_binop_feeding_and"
669
0
    case 's':  // 1 string to match.
670
0
      if (memcmp(RuleIdentifier.data()+1, "ext_inreg_to_zext_inreg", 23) != 0)
671
0
        break;
672
0
      return 62;  // "sext_inreg_to_zext_inreg"
673
0
    case 'x':  // 1 string to match.
674
0
      if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
675
0
        break;
676
0
      return 87;  // "xor_of_and_with_same_reg"
677
0
    }
678
0
    break;
679
0
  case 25:   // 4 strings to match.
680
0
    switch (RuleIdentifier[0]) {
681
0
    default: break;
682
0
    case 'b':  // 3 strings to match.
683
0
      switch (RuleIdentifier[1]) {
684
0
      default: break;
685
0
      case 'i':  // 2 strings to match.
686
0
        if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
687
0
          break;
688
0
        switch (RuleIdentifier[22]) {
689
0
        default: break;
690
0
        case 'a':  // 1 string to match.
691
0
          if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
692
0
            break;
693
0
          return 100;  // "bitfield_extract_from_and"
694
0
        case 's':  // 1 string to match.
695
0
          if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
696
0
            break;
697
0
          return 101;  // "bitfield_extract_from_shr"
698
0
        }
699
0
        break;
700
0
      case 'u':  // 1 string to match.
701
0
        if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
702
0
          break;
703
0
        return 35;  // "buildvector_identity_fold"
704
0
      }
705
0
      break;
706
0
    case 'e':  // 1 string to match.
707
0
      if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
708
0
        break;
709
0
      return 6;  // "extract_vec_elt_build_vec"
710
0
    }
711
0
    break;
712
0
  case 26:   // 4 strings to match.
713
0
    switch (RuleIdentifier[0]) {
714
0
    default: break;
715
0
    case 'b':  // 1 string to match.
716
0
      if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
717
0
        break;
718
0
      return 15;  // "binop_right_undef_to_undef"
719
0
    case 'c':  // 1 string to match.
720
0
      if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs", 25) != 0)
721
0
        break;
722
0
      return 127;  // "commute_fp_constant_to_rhs"
723
0
    case 'f':  // 1 string to match.
724
0
      if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
725
0
        break;
726
0
      return 93;  // "funnel_shift_from_or_shift"
727
0
    case 'r':  // 1 string to match.
728
0
      if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
729
0
        break;
730
0
      return 40;  // "right_identity_neg_zero_fp"
731
0
    }
732
0
    break;
733
0
  case 27:   // 3 strings to match.
734
0
    switch (RuleIdentifier[0]) {
735
0
    default: break;
736
0
    case 'c':  // 1 string to match.
737
0
      if (memcmp(RuleIdentifier.data()+1, "ommute_int_constant_to_rhs", 26) != 0)
738
0
        break;
739
0
      return 126;  // "commute_int_constant_to_rhs"
740
0
    case 'r':  // 1 string to match.
741
0
      if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
742
0
        break;
743
0
      return 124;  // "redundant_binop_in_equality"
744
0
    case 't':  // 1 string to match.
745
0
      if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
746
0
        break;
747
0
      return 37;  // "trunc_lshr_buildvector_fold"
748
0
    }
749
0
    break;
750
0
  case 28:   // 3 strings to match.
751
0
    switch (RuleIdentifier[0]) {
752
0
    default: break;
753
0
    case 'o':  // 1 string to match.
754
0
      if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
755
0
        break;
756
0
      return 65;  // "opt_brcond_by_inverting_cond"
757
0
    case 'p':  // 1 string to match.
758
0
      if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
759
0
        break;
760
0
      return 19;  // "propagate_undef_shuffle_mask"
761
0
    case 's':  // 1 string to match.
762
0
      if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
763
0
        break;
764
0
      return 90;  // "shift_of_shifted_logic_chain"
765
0
    }
766
0
    break;
767
0
  case 29:   // 3 strings to match.
768
0
    switch (RuleIdentifier[0]) {
769
0
    default: break;
770
0
    case 'b':  // 1 string to match.
771
0
      if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
772
0
        break;
773
0
      return 102;  // "bitfield_extract_from_shr_and"
774
0
    case 'c':  // 1 string to match.
775
0
      if (memcmp(RuleIdentifier.data()+1, "ombine_extracted_vector_load", 28) != 0)
776
0
        break;
777
0
      return 10;  // "combine_extracted_vector_load"
778
0
    case 'i':  // 1 string to match.
779
0
      if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
780
0
        break;
781
0
      return 60;  // "icmp_to_true_false_known_bits"
782
0
    }
783
0
    break;
784
0
  case 32:   // 3 strings to match.
785
0
    switch (RuleIdentifier[0]) {
786
0
    default: break;
787
0
    case 'b':  // 1 string to match.
788
0
      if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
789
0
        break;
790
0
      return 99;  // "bitfield_extract_from_sext_inreg"
791
0
    case 'c':  // 2 strings to match.
792
0
      if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
793
0
        break;
794
0
      switch (RuleIdentifier[9]) {
795
0
      default: break;
796
0
      case 'a':  // 1 string to match.
797
0
        if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
798
0
          break;
799
0
        return 113;  // "combine_fadd_fmul_to_fmad_or_fma"
800
0
      case 's':  // 1 string to match.
801
0
        if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
802
0
          break;
803
0
        return 117;  // "combine_fsub_fmul_to_fmad_or_fma"
804
0
      }
805
0
      break;
806
0
    }
807
0
    break;
808
0
  case 34:   // 1 string to match.
809
0
    if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
810
0
      break;
811
0
    return 7;  // "extract_all_elts_from_build_vector"
812
0
  case 36:   // 3 strings to match.
813
0
    switch (RuleIdentifier[0]) {
814
0
    default: break;
815
0
    case 'c':  // 2 strings to match.
816
0
      if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
817
0
        break;
818
0
      switch (RuleIdentifier[8]) {
819
0
      default: break;
820
0
      case 'f':  // 1 string to match.
821
0
        if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
822
0
          break;
823
0
        return 115;  // "combine_fadd_fma_fmul_to_fmad_or_fma"
824
0
      case 'i':  // 1 string to match.
825
0
        if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
826
0
          break;
827
0
        return 5;  // "combine_insert_vec_elts_build_vector"
828
0
      }
829
0
      break;
830
0
    case 'i':  // 1 string to match.
831
0
      if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
832
0
        break;
833
0
      return 22;  // "insert_extract_vec_elt_out_of_bounds"
834
0
    }
835
0
    break;
836
0
  case 37:   // 2 strings to match.
837
0
    switch (RuleIdentifier[0]) {
838
0
    default: break;
839
0
    case 'c':  // 1 string to match.
840
0
      if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
841
0
        break;
842
0
      return 118;  // "combine_fsub_fneg_fmul_to_fmad_or_fma"
843
0
    case 'h':  // 1 string to match.
844
0
      if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
845
0
        break;
846
0
      return 43;  // "hoist_logic_op_with_same_opcode_hands"
847
0
    }
848
0
    break;
849
0
  case 38:   // 2 strings to match.
850
0
    if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
851
0
      break;
852
0
    switch (RuleIdentifier[9]) {
853
0
    default: break;
854
0
    case 'a':  // 1 string to match.
855
0
      if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
856
0
        break;
857
0
      return 114;  // "combine_fadd_fpext_fmul_to_fmad_or_fma"
858
0
    case 's':  // 1 string to match.
859
0
      if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
860
0
        break;
861
0
      return 119;  // "combine_fsub_fpext_fmul_to_fmad_or_fma"
862
0
    }
863
0
    break;
864
0
  case 42:   // 1 string to match.
865
0
    if (memcmp(RuleIdentifier.data()+0, "combine_fadd_fpext_fma_fmul_to_fmad_or_fma", 42) != 0)
866
0
      break;
867
0
    return 116;  // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
868
0
  case 43:   // 1 string to match.
869
0
    if (memcmp(RuleIdentifier.data()+0, "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 43) != 0)
870
0
      break;
871
0
    return 120;  // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
872
0
  }
873
0
#endif // ifndef NDEBUG
874
875
0
  return std::nullopt;
876
0
}
877
0
static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
878
0
  std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
879
0
  if (!RangePair.second.empty()) {
880
0
    const auto First = getRuleIdxForIdentifier(RangePair.first);
881
0
    const auto Last = getRuleIdxForIdentifier(RangePair.second);
882
0
    if (!First || !Last)
883
0
      return std::nullopt;
884
0
    if (First >= Last)
885
0
      report_fatal_error("Beginning of range should be before end of range");
886
0
    return {{*First, *Last + 1}};
887
0
  }
888
0
  if (RangePair.first == "*") {
889
0
    return {{0, 134}};
890
0
  }
891
0
  const auto I = getRuleIdxForIdentifier(RangePair.first);
892
0
  if (!I)
893
0
    return std::nullopt;
894
0
  return {{*I, *I + 1}};
895
0
}
896
897
0
bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
898
0
  auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
899
0
  if (!MaybeRange)
900
0
    return false;
901
0
  for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
902
0
    DisabledRules.reset(I);
903
0
  return true;
904
0
}
905
906
0
bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
907
0
  auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
908
0
  if (!MaybeRange)
909
0
    return false;
910
0
  for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
911
0
    DisabledRules.set(I);
912
0
  return true;
913
0
}
914
915
static std::vector<std::string> AArch64PreLegalizerCombinerOption;
916
static cl::list<std::string> AArch64PreLegalizerCombinerDisableOption(
917
    "aarch64prelegalizercombiner-disable-rule",
918
    cl::desc("Disable one or more combiner rules temporarily in the AArch64PreLegalizerCombiner pass"),
919
    cl::CommaSeparated,
920
    cl::Hidden,
921
    cl::cat(GICombinerOptionCategory),
922
0
    cl::callback([](const std::string &Str) {
923
0
      AArch64PreLegalizerCombinerOption.push_back(Str);
924
0
    }));
925
static cl::list<std::string> AArch64PreLegalizerCombinerOnlyEnableOption(
926
    "aarch64prelegalizercombiner-only-enable-rule",
927
    cl::desc("Disable all rules in the AArch64PreLegalizerCombiner pass then re-enable the specified ones"),
928
    cl::Hidden,
929
    cl::cat(GICombinerOptionCategory),
930
0
    cl::callback([](const std::string &CommaSeparatedArg) {
931
0
      StringRef Str = CommaSeparatedArg;
932
0
      AArch64PreLegalizerCombinerOption.push_back("*");
933
0
      do {
934
0
        auto X = Str.split(",");
935
0
        AArch64PreLegalizerCombinerOption.push_back(("!" + X.first).str());
936
0
        Str = X.second;
937
0
      } while (!Str.empty());
938
0
    }));
939
940
941
0
bool AArch64PreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
942
0
    return  !DisabledRules.test(RuleID);
943
0
}
944
0
bool AArch64PreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
945
0
  for (StringRef Identifier : AArch64PreLegalizerCombinerOption) {
946
0
    bool Enabled = Identifier.consume_front("!");
947
0
    if (Enabled && !setRuleEnabled(Identifier))
948
0
      return false;
949
0
    if (!Enabled && !setRuleDisabled(Identifier))
950
0
      return false;
951
0
  }
952
0
  return true;
953
0
}
954
955
#endif // ifdef GET_GICOMBINER_TYPES
956
957
#ifdef GET_GICOMBINER_TYPES
958
const unsigned MAX_SUBTARGET_PREDICATES = 1;
959
using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
960
#endif // ifdef GET_GICOMBINER_TYPES
961
962
#ifdef GET_GICOMBINER_CLASS_MEMBERS
963
PredicateBitset AvailableModuleFeatures;
964
mutable PredicateBitset AvailableFunctionFeatures;
965
0
PredicateBitset getAvailableFeatures() const {
966
0
  return AvailableModuleFeatures | AvailableFunctionFeatures;
967
0
}
968
PredicateBitset
969
computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
970
PredicateBitset
971
computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
972
                                 const MachineFunction *MF) const;
973
void setupGeneratedPerFunctionState(MachineFunction &MF) override;
974
#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
975
#ifdef GET_GICOMBINER_CLASS_MEMBERS
976
  mutable MatcherState State;
977
  typedef ComplexRendererFns(AArch64PreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
978
  typedef void(AArch64PreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
979
  const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
980
  static AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
981
  static AArch64PreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
982
  bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
983
  bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
984
  bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
985
  const uint8_t *getMatchTable() const override;
986
  bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
987
  bool testSimplePredicate(unsigned PredicateID) const override;
988
  void runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
989
  struct MatchInfosTy {
990
    std::pair<Register, bool> MDInfo1;
991
    ConstantFP* MDInfo23;
992
    InstructionStepsMatchInfo MDInfo9;
993
    MachineInstr* MDInfo7;
994
    SmallVector<Register, 4> MDInfo2;
995
    RegisterImmPair MDInfo13;
996
    Register MDInfo3;
997
    std::pair<Register, unsigned> MDInfo18;
998
    APInt MDInfo20;
999
    std::pair<uint64_t, uint64_t> MDInfo24;
1000
    unsigned MDInfo0;
1001
    SmallVector<std::pair<Register, MachineInstr*>> MDInfo4;
1002
    std::tuple<Register, unsigned> MDInfo12;
1003
    MachineInstr * MDInfo15;
1004
    ShiftOfShiftedLogic MDInfo22;
1005
    std::pair<MachineInstr*, LLT> MDInfo19;
1006
    PreferredTuple MDInfo5;
1007
    SmallVector<APInt, 8> MDInfo17;
1008
    std::tuple<Register, Register> MDInfo8;
1009
    std::tuple<Register, int64_t> MDInfo11;
1010
    SmallVector<Register, 8> MDInfo16;
1011
    std::function<void(MachineIRBuilder &)> MDInfo6;
1012
    int64_t MDInfo14;
1013
    std::tuple<Register, Register, bool> MDInfo25;
1014
    std::pair<Register, Register> MDInfo21;
1015
    PtrAddChain MDInfo10;
1016
  };
1017
  mutable MatchInfosTy MatchInfos;
1018
1019
#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
1020
1021
#ifdef GET_GICOMBINER_IMPL
1022
// LLT Objects.
1023
enum {
1024
  GILLT_s1,
1025
};
1026
const static size_t NumTypeObjects = 1;
1027
const static LLT TypeObjects[] = {
1028
  LLT::scalar(1),
1029
};
1030
1031
// Bits for subtarget features that participate in instruction matching.
1032
enum SubtargetFeatureBits : uint8_t {
1033
  Feature_HasDotProdBit = 0,
1034
};
1035
1036
PredicateBitset AArch64PreLegalizerCombinerImpl::
1037
0
computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
1038
0
  PredicateBitset Features;
1039
0
  if (Subtarget->hasDotProd())
1040
0
    Features.set(Feature_HasDotProdBit);
1041
0
  return Features;
1042
0
}
1043
1044
0
void AArch64PreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1045
0
  AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
1046
0
}
1047
PredicateBitset AArch64PreLegalizerCombinerImpl::
1048
0
computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
1049
0
  PredicateBitset Features;
1050
0
  return Features;
1051
0
}
1052
1053
// Feature bitsets.
1054
enum {
1055
  GIFBS_Invalid,
1056
  GIFBS_HasDotProd,
1057
};
1058
constexpr static PredicateBitset FeatureBitsets[] {
1059
  {}, // GIFBS_Invalid
1060
  {Feature_HasDotProdBit, },
1061
};
1062
1063
// ComplexPattern predicates.
1064
enum {
1065
  GICP_Invalid,
1066
};
1067
// See constructor for table contents
1068
1069
AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn
1070
AArch64PreLegalizerCombinerImpl::ComplexPredicateFns[] = {
1071
  nullptr, // GICP_Invalid
1072
};
1073
1074
enum {
1075
  GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1076
  GICXXPred_MI_Predicate_GICombiner1,
1077
  GICXXPred_MI_Predicate_GICombiner2,
1078
  GICXXPred_MI_Predicate_GICombiner3,
1079
  GICXXPred_MI_Predicate_GICombiner4,
1080
  GICXXPred_MI_Predicate_GICombiner5,
1081
  GICXXPred_MI_Predicate_GICombiner6,
1082
  GICXXPred_MI_Predicate_GICombiner7,
1083
  GICXXPred_MI_Predicate_GICombiner8,
1084
  GICXXPred_MI_Predicate_GICombiner9,
1085
  GICXXPred_MI_Predicate_GICombiner10,
1086
  GICXXPred_MI_Predicate_GICombiner11,
1087
  GICXXPred_MI_Predicate_GICombiner12,
1088
  GICXXPred_MI_Predicate_GICombiner13,
1089
  GICXXPred_MI_Predicate_GICombiner14,
1090
  GICXXPred_MI_Predicate_GICombiner15,
1091
  GICXXPred_MI_Predicate_GICombiner16,
1092
  GICXXPred_MI_Predicate_GICombiner17,
1093
  GICXXPred_MI_Predicate_GICombiner18,
1094
  GICXXPred_MI_Predicate_GICombiner19,
1095
  GICXXPred_MI_Predicate_GICombiner20,
1096
  GICXXPred_MI_Predicate_GICombiner21,
1097
  GICXXPred_MI_Predicate_GICombiner22,
1098
  GICXXPred_MI_Predicate_GICombiner23,
1099
  GICXXPred_MI_Predicate_GICombiner24,
1100
  GICXXPred_MI_Predicate_GICombiner25,
1101
  GICXXPred_MI_Predicate_GICombiner26,
1102
  GICXXPred_MI_Predicate_GICombiner27,
1103
  GICXXPred_MI_Predicate_GICombiner28,
1104
  GICXXPred_MI_Predicate_GICombiner29,
1105
  GICXXPred_MI_Predicate_GICombiner30,
1106
  GICXXPred_MI_Predicate_GICombiner31,
1107
  GICXXPred_MI_Predicate_GICombiner32,
1108
  GICXXPred_MI_Predicate_GICombiner33,
1109
  GICXXPred_MI_Predicate_GICombiner34,
1110
  GICXXPred_MI_Predicate_GICombiner35,
1111
  GICXXPred_MI_Predicate_GICombiner36,
1112
  GICXXPred_MI_Predicate_GICombiner37,
1113
  GICXXPred_MI_Predicate_GICombiner38,
1114
  GICXXPred_MI_Predicate_GICombiner39,
1115
  GICXXPred_MI_Predicate_GICombiner40,
1116
  GICXXPred_MI_Predicate_GICombiner41,
1117
  GICXXPred_MI_Predicate_GICombiner42,
1118
  GICXXPred_MI_Predicate_GICombiner43,
1119
  GICXXPred_MI_Predicate_GICombiner44,
1120
  GICXXPred_MI_Predicate_GICombiner45,
1121
  GICXXPred_MI_Predicate_GICombiner46,
1122
  GICXXPred_MI_Predicate_GICombiner47,
1123
  GICXXPred_MI_Predicate_GICombiner48,
1124
  GICXXPred_MI_Predicate_GICombiner49,
1125
  GICXXPred_MI_Predicate_GICombiner50,
1126
  GICXXPred_MI_Predicate_GICombiner51,
1127
  GICXXPred_MI_Predicate_GICombiner52,
1128
  GICXXPred_MI_Predicate_GICombiner53,
1129
  GICXXPred_MI_Predicate_GICombiner54,
1130
  GICXXPred_MI_Predicate_GICombiner55,
1131
  GICXXPred_MI_Predicate_GICombiner56,
1132
  GICXXPred_MI_Predicate_GICombiner57,
1133
  GICXXPred_MI_Predicate_GICombiner58,
1134
  GICXXPred_MI_Predicate_GICombiner59,
1135
  GICXXPred_MI_Predicate_GICombiner60,
1136
  GICXXPred_MI_Predicate_GICombiner61,
1137
  GICXXPred_MI_Predicate_GICombiner62,
1138
  GICXXPred_MI_Predicate_GICombiner63,
1139
  GICXXPred_MI_Predicate_GICombiner64,
1140
  GICXXPred_MI_Predicate_GICombiner65,
1141
  GICXXPred_MI_Predicate_GICombiner66,
1142
  GICXXPred_MI_Predicate_GICombiner67,
1143
  GICXXPred_MI_Predicate_GICombiner68,
1144
  GICXXPred_MI_Predicate_GICombiner69,
1145
  GICXXPred_MI_Predicate_GICombiner70,
1146
  GICXXPred_MI_Predicate_GICombiner71,
1147
  GICXXPred_MI_Predicate_GICombiner72,
1148
  GICXXPred_MI_Predicate_GICombiner73,
1149
  GICXXPred_MI_Predicate_GICombiner74,
1150
  GICXXPred_MI_Predicate_GICombiner75,
1151
  GICXXPred_MI_Predicate_GICombiner76,
1152
  GICXXPred_MI_Predicate_GICombiner77,
1153
  GICXXPred_MI_Predicate_GICombiner78,
1154
  GICXXPred_MI_Predicate_GICombiner79,
1155
  GICXXPred_MI_Predicate_GICombiner80,
1156
  GICXXPred_MI_Predicate_GICombiner81,
1157
  GICXXPred_MI_Predicate_GICombiner82,
1158
  GICXXPred_MI_Predicate_GICombiner83,
1159
  GICXXPred_MI_Predicate_GICombiner84,
1160
  GICXXPred_MI_Predicate_GICombiner85,
1161
  GICXXPred_MI_Predicate_GICombiner86,
1162
  GICXXPred_MI_Predicate_GICombiner87,
1163
  GICXXPred_MI_Predicate_GICombiner88,
1164
  GICXXPred_MI_Predicate_GICombiner89,
1165
  GICXXPred_MI_Predicate_GICombiner90,
1166
  GICXXPred_MI_Predicate_GICombiner91,
1167
  GICXXPred_MI_Predicate_GICombiner92,
1168
  GICXXPred_MI_Predicate_GICombiner93,
1169
  GICXXPred_MI_Predicate_GICombiner94,
1170
  GICXXPred_MI_Predicate_GICombiner95,
1171
  GICXXPred_MI_Predicate_GICombiner96,
1172
  GICXXPred_MI_Predicate_GICombiner97,
1173
  GICXXPred_MI_Predicate_GICombiner98,
1174
  GICXXPred_MI_Predicate_GICombiner99,
1175
  GICXXPred_MI_Predicate_GICombiner100,
1176
  GICXXPred_MI_Predicate_GICombiner101,
1177
  GICXXPred_MI_Predicate_GICombiner102,
1178
  GICXXPred_MI_Predicate_GICombiner103,
1179
  GICXXPred_MI_Predicate_GICombiner104,
1180
  GICXXPred_MI_Predicate_GICombiner105,
1181
  GICXXPred_MI_Predicate_GICombiner106,
1182
  GICXXPred_MI_Predicate_GICombiner107,
1183
  GICXXPred_MI_Predicate_GICombiner108,
1184
  GICXXPred_MI_Predicate_GICombiner109,
1185
};
1186
0
bool AArch64PreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1187
0
  switch (PredicateID) {
1188
0
  case GICXXPred_MI_Predicate_GICombiner0: {
1189
0
    return Helper.matchCombineCopy(*State.MIs[0]);
1190
0
  }
1191
0
  case GICXXPred_MI_Predicate_GICombiner1: {
1192
0
    return Helper.matchCombineMulToShl(*State.MIs[0], MatchInfos.MDInfo0);
1193
0
  }
1194
0
  case GICXXPred_MI_Predicate_GICombiner2: {
1195
0
    return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], MatchInfos.MDInfo1);
1196
0
  }
1197
0
  case GICXXPred_MI_Predicate_GICombiner3: {
1198
0
    return Helper.matchCombineInsertVecElts(*State.MIs[0], MatchInfos.MDInfo2);
1199
0
  }
1200
0
  case GICXXPred_MI_Predicate_GICombiner4: {
1201
0
    return Helper.matchExtractVecEltBuildVec(*State.MIs[0], MatchInfos.MDInfo3);
1202
0
  }
1203
0
  case GICXXPred_MI_Predicate_GICombiner5: {
1204
0
    return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], MatchInfos.MDInfo4);
1205
0
  }
1206
0
  case GICXXPred_MI_Predicate_GICombiner6: {
1207
0
    return Helper.matchCombineExtendingLoads(*State.MIs[0], MatchInfos.MDInfo5);
1208
0
  }
1209
0
  case GICXXPred_MI_Predicate_GICombiner7: {
1210
0
    return Helper.matchCombineLoadWithAndMask(*State.MIs[0], MatchInfos.MDInfo6);
1211
0
  }
1212
0
  case GICXXPred_MI_Predicate_GICombiner8: {
1213
0
    return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], MatchInfos.MDInfo6);
1214
0
  }
1215
0
  case GICXXPred_MI_Predicate_GICombiner9: {
1216
0
    return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);
1217
0
  }
1218
0
  case GICXXPred_MI_Predicate_GICombiner10: {
1219
0
    return Helper.matchOperandIsUndef(*State.MIs[0], 1);
1220
0
  }
1221
0
  case GICXXPred_MI_Predicate_GICombiner11: {
1222
0
    return Helper.matchOperandIsUndef(*State.MIs[0], 2);
1223
0
  }
1224
0
  case GICXXPred_MI_Predicate_GICombiner12: {
1225
0
    return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);
1226
0
  }
1227
0
  case GICXXPred_MI_Predicate_GICombiner13: {
1228
0
    return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);
1229
0
  }
1230
0
  case GICXXPred_MI_Predicate_GICombiner14: {
1231
0
    return Helper.matchUndefStore(*State.MIs[0]);
1232
0
  }
1233
0
  case GICXXPred_MI_Predicate_GICombiner15: {
1234
0
    return Helper.matchCombineUnmergeUndef(*State.MIs[0], MatchInfos.MDInfo6);
1235
0
  }
1236
0
  case GICXXPred_MI_Predicate_GICombiner16: {
1237
0
    return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);
1238
0
  }
1239
0
  case GICXXPred_MI_Predicate_GICombiner17: {
1240
0
    return Helper.matchSelectSameVal(*State.MIs[0]);
1241
0
  }
1242
0
  case GICXXPred_MI_Predicate_GICombiner18: {
1243
0
    return Helper.matchOperandIsZero(*State.MIs[0], 1);
1244
0
  }
1245
0
  case GICXXPred_MI_Predicate_GICombiner19: {
1246
0
    return Helper.matchCombineI2PToP2I(*State.MIs[0], MatchInfos.MDInfo3);
1247
0
  }
1248
0
  case GICXXPred_MI_Predicate_GICombiner20: {
1249
0
    MatchInfos.MDInfo3 = State.MIs[1]->getOperand(1).getReg(); return true;
1250
0
    llvm_unreachable("GICombiner20 should have returned");
1251
0
  }
1252
0
  case GICXXPred_MI_Predicate_GICombiner21: {
1253
0
    return Helper.matchCombineAnyExtTrunc(*State.MIs[0], MatchInfos.MDInfo3);
1254
0
  }
1255
0
  case GICXXPred_MI_Predicate_GICombiner22: {
1256
0
    return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1257
0
  }
1258
0
  case GICXXPred_MI_Predicate_GICombiner23: {
1259
0
    return Helper.matchBuildVectorIdentityFold(*State.MIs[0], MatchInfos.MDInfo3);
1260
0
  }
1261
0
  case GICXXPred_MI_Predicate_GICombiner24: {
1262
0
    return Helper.matchTruncBuildVectorFold(*State.MIs[0], MatchInfos.MDInfo3);
1263
0
  }
1264
0
  case GICXXPred_MI_Predicate_GICombiner25: {
1265
0
    return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], MatchInfos.MDInfo3);
1266
0
  }
1267
0
  case GICXXPred_MI_Predicate_GICombiner26: {
1268
0
    return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());
1269
0
  }
1270
0
  case GICXXPred_MI_Predicate_GICombiner27: {
1271
0
    return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1272
0
  }
1273
0
  case GICXXPred_MI_Predicate_GICombiner28: {
1274
0
    return Helper.matchExtendThroughPhis(*State.MIs[0], MatchInfos.MDInfo7);
1275
0
  }
1276
0
  case GICXXPred_MI_Predicate_GICombiner29: {
1277
0
    return Helper.matchSimplifyAddToSub(*State.MIs[0], MatchInfos.MDInfo8);
1278
0
  }
1279
0
  case GICXXPred_MI_Predicate_GICombiner30: {
1280
0
    return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], MatchInfos.MDInfo9);
1281
0
  }
1282
0
  case GICXXPred_MI_Predicate_GICombiner31: {
1283
0
    return Helper.matchShiftsTooBig(*State.MIs[0]);
1284
0
  }
1285
0
  case GICXXPred_MI_Predicate_GICombiner32: {
1286
0
    return Helper.matchReassocPtrAdd(*State.MIs[0], MatchInfos.MDInfo6);
1287
0
  }
1288
0
  case GICXXPred_MI_Predicate_GICombiner33: {
1289
0
    return Helper.matchReassocCommBinOp(*State.MIs[0], MatchInfos.MDInfo6);
1290
0
  }
1291
0
  case GICXXPred_MI_Predicate_GICombiner34: {
1292
0
    return Helper.matchPtrAddImmedChain(*State.MIs[0], MatchInfos.MDInfo10);
1293
0
  }
1294
0
  case GICXXPred_MI_Predicate_GICombiner35: {
1295
0
    return Helper.matchAshrShlToSextInreg(*State.MIs[0], MatchInfos.MDInfo11);
1296
0
  }
1297
0
  case GICXXPred_MI_Predicate_GICombiner36: {
1298
0
    return Helper.matchSextInRegOfLoad(*State.MIs[0], MatchInfos.MDInfo12);
1299
0
  }
1300
0
  case GICXXPred_MI_Predicate_GICombiner37: {
1301
0
    return Helper.matchCombineShlOfExtend(*State.MIs[0], MatchInfos.MDInfo13);
1302
0
  }
1303
0
  case GICXXPred_MI_Predicate_GICombiner38: {
1304
0
    return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], MatchInfos.MDInfo6);
1305
0
  }
1306
0
  case GICXXPred_MI_Predicate_GICombiner39: {
1307
0
    return Helper.matchConstantSelectCmp(*State.MIs[0], MatchInfos.MDInfo0);
1308
0
  }
1309
0
  case GICXXPred_MI_Predicate_GICombiner40: {
1310
0
    return Helper.matchSelect(*State.MIs[0], MatchInfos.MDInfo6);
1311
0
  }
1312
0
  case GICXXPred_MI_Predicate_GICombiner41: {
1313
0
    return Helper.matchRedundantAnd(*State.MIs[0], MatchInfos.MDInfo3);
1314
0
  }
1315
0
  case GICXXPred_MI_Predicate_GICombiner42: {
1316
0
    return Helper.matchRedundantSExtInReg(*State.MIs[0]);
1317
0
  }
1318
0
  case GICXXPred_MI_Predicate_GICombiner43: {
1319
0
    return Helper.matchRedundantOr(*State.MIs[0], MatchInfos.MDInfo3);
1320
0
  }
1321
0
  case GICXXPred_MI_Predicate_GICombiner44: {
1322
0
    return Helper.matchOperandIsKnownToBeAPowerOfTwo(*State.MIs[0], 2);
1323
0
  }
1324
0
  case GICXXPred_MI_Predicate_GICombiner45: {
1325
0
    return Helper.matchCombineZextTrunc(*State.MIs[0], MatchInfos.MDInfo3);
1326
0
  }
1327
0
  case GICXXPred_MI_Predicate_GICombiner46: {
1328
0
    return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], MatchInfos.MDInfo14);
1329
0
  }
1330
0
  case GICXXPred_MI_Predicate_GICombiner47: {
1331
0
    return Helper.matchICmpToLHSKnownBits(*State.MIs[0], MatchInfos.MDInfo6);
1332
0
  }
1333
0
  case GICXXPred_MI_Predicate_GICombiner48: {
1334
0
    unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
1335
0
                return Helper.getKnownBits()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
1336
0
                         APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));
1337
0
    llvm_unreachable("GICombiner48 should have returned");
1338
0
  }
1339
0
  case GICXXPred_MI_Predicate_GICombiner49: {
1340
0
    return Helper.matchCombineExtOfExt(*State.MIs[0], MatchInfos.MDInfo12);
1341
0
  }
1342
0
  case GICXXPred_MI_Predicate_GICombiner50: {
1343
0
    return Helper.matchNotCmp(*State.MIs[0], MatchInfos.MDInfo2);
1344
0
  }
1345
0
  case GICXXPred_MI_Predicate_GICombiner51: {
1346
0
    return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], MatchInfos.MDInfo15);
1347
0
  }
1348
0
  case GICXXPred_MI_Predicate_GICombiner52: {
1349
0
    return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], MatchInfos.MDInfo16);
1350
0
  }
1351
0
  case GICXXPred_MI_Predicate_GICombiner53: {
1352
0
    return Helper.matchCombineUnmergeConstant(*State.MIs[0], MatchInfos.MDInfo17);
1353
0
  }
1354
0
  case GICXXPred_MI_Predicate_GICombiner54: {
1355
0
    return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
1356
0
  }
1357
0
  case GICXXPred_MI_Predicate_GICombiner55: {
1358
0
    return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);
1359
0
  }
1360
0
  case GICXXPred_MI_Predicate_GICombiner56: {
1361
0
    return Helper.matchCombineMergeUnmerge(*State.MIs[0], MatchInfos.MDInfo3);
1362
0
  }
1363
0
  case GICXXPred_MI_Predicate_GICombiner57: {
1364
0
    return Helper.matchCombineTruncOfExt(*State.MIs[0], MatchInfos.MDInfo18);
1365
0
  }
1366
0
  case GICXXPred_MI_Predicate_GICombiner58: {
1367
0
    return Helper.matchCombineTruncOfShift(*State.MIs[0], MatchInfos.MDInfo19);
1368
0
  }
1369
0
  case GICXXPred_MI_Predicate_GICombiner59: {
1370
0
    return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], MatchInfos.MDInfo20);
1371
0
  }
1372
0
  case GICXXPred_MI_Predicate_GICombiner60: {
1373
0
    return Helper.matchOverlappingAnd(*State.MIs[0], MatchInfos.MDInfo6);
1374
0
  }
1375
0
  case GICXXPred_MI_Predicate_GICombiner61: {
1376
0
    return Helper.matchMulOBy2(*State.MIs[0], MatchInfos.MDInfo6);
1377
0
  }
1378
0
  case GICXXPred_MI_Predicate_GICombiner62: {
1379
0
    return Helper.matchMulOBy0(*State.MIs[0], MatchInfos.MDInfo6);
1380
0
  }
1381
0
  case GICXXPred_MI_Predicate_GICombiner63: {
1382
0
    return Helper.matchAddOBy0(*State.MIs[0], MatchInfos.MDInfo6);
1383
0
  }
1384
0
  case GICXXPred_MI_Predicate_GICombiner64: {
1385
0
    return Helper.matchAddEToAddO(*State.MIs[0], MatchInfos.MDInfo6);
1386
0
  }
1387
0
  case GICXXPred_MI_Predicate_GICombiner65: {
1388
0
    return Helper.matchCombineFMinMaxNaN(*State.MIs[0], MatchInfos.MDInfo0);
1389
0
  }
1390
0
  case GICXXPred_MI_Predicate_GICombiner66: {
1391
0
    return Helper.matchXorOfAndWithSameReg(*State.MIs[0], MatchInfos.MDInfo21);
1392
0
  }
1393
0
  case GICXXPred_MI_Predicate_GICombiner67: {
1394
0
    return Helper.matchPtrAddZero(*State.MIs[0]);
1395
0
  }
1396
0
  case GICXXPred_MI_Predicate_GICombiner68: {
1397
0
    return Helper.matchShiftImmedChain(*State.MIs[0], MatchInfos.MDInfo13);
1398
0
  }
1399
0
  case GICXXPred_MI_Predicate_GICombiner69: {
1400
0
    return Helper.matchShiftOfShiftedLogic(*State.MIs[0], MatchInfos.MDInfo22);
1401
0
  }
1402
0
  case GICXXPred_MI_Predicate_GICombiner70: {
1403
0
    return Helper.matchLoadOrCombine(*State.MIs[0], MatchInfos.MDInfo6);
1404
0
  }
1405
0
  case GICXXPred_MI_Predicate_GICombiner71: {
1406
0
    return Helper.matchCombineDivRem(*State.MIs[0], MatchInfos.MDInfo15);
1407
0
  }
1408
0
  case GICXXPred_MI_Predicate_GICombiner72: {
1409
0
    return Helper.matchOrShiftToFunnelShift(*State.MIs[0], MatchInfos.MDInfo6);
1410
0
  }
1411
0
  case GICXXPred_MI_Predicate_GICombiner73: {
1412
0
    return Helper.matchFunnelShiftToRotate(*State.MIs[0]);
1413
0
  }
1414
0
  case GICXXPred_MI_Predicate_GICombiner74: {
1415
0
    return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);
1416
0
  }
1417
0
  case GICXXPred_MI_Predicate_GICombiner75: {
1418
0
    return Helper.matchCommuteShift(*State.MIs[0], MatchInfos.MDInfo6);
1419
0
  }
1420
0
  case GICXXPred_MI_Predicate_GICombiner76: {
1421
0
    return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], MatchInfos.MDInfo6);
1422
0
  }
1423
0
  case GICXXPred_MI_Predicate_GICombiner77: {
1424
0
    return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], MatchInfos.MDInfo6);
1425
0
  }
1426
0
  case GICXXPred_MI_Predicate_GICombiner78: {
1427
0
    return Helper.matchBitfieldExtractFromShr(*State.MIs[0], MatchInfos.MDInfo6);
1428
0
  }
1429
0
  case GICXXPred_MI_Predicate_GICombiner79: {
1430
0
    return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], MatchInfos.MDInfo6);
1431
0
  }
1432
0
  case GICXXPred_MI_Predicate_GICombiner80: {
1433
0
    return Helper.matchConstantFoldBinOp(*State.MIs[0], MatchInfos.MDInfo20);
1434
0
  }
1435
0
  case GICXXPred_MI_Predicate_GICombiner81: {
1436
0
    return Helper.matchConstantFoldFPBinOp(*State.MIs[0], MatchInfos.MDInfo23);
1437
0
  }
1438
0
  case GICXXPred_MI_Predicate_GICombiner82: {
1439
0
    return Helper.matchConstantFoldFMA(*State.MIs[0], MatchInfos.MDInfo23);
1440
0
  }
1441
0
  case GICXXPred_MI_Predicate_GICombiner83: {
1442
0
    return Helper.matchConstantFoldCastOp(*State.MIs[0], MatchInfos.MDInfo20);
1443
0
  }
1444
0
  case GICXXPred_MI_Predicate_GICombiner84: {
1445
0
    return Helper.matchUDivByConst(*State.MIs[0]);
1446
0
  }
1447
0
  case GICXXPred_MI_Predicate_GICombiner85: {
1448
0
    return Helper.matchSDivByConst(*State.MIs[0]);
1449
0
  }
1450
0
  case GICXXPred_MI_Predicate_GICombiner86: {
1451
0
    return Helper.matchUMulHToLShr(*State.MIs[0]);
1452
0
  }
1453
0
  case GICXXPred_MI_Predicate_GICombiner87: {
1454
0
    return Helper.matchRedundantNegOperands(*State.MIs[0], MatchInfos.MDInfo6);
1455
0
  }
1456
0
  case GICXXPred_MI_Predicate_GICombiner88: {
1457
0
    return Helper.matchAndOrDisjointMask(*State.MIs[0], MatchInfos.MDInfo6);
1458
0
  }
1459
0
  case GICXXPred_MI_Predicate_GICombiner89: {
1460
0
    return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
1461
0
                                                                  MatchInfos.MDInfo6);
1462
0
  }
1463
0
  case GICXXPred_MI_Predicate_GICombiner90: {
1464
0
    return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
1465
0
                                                                       MatchInfos.MDInfo6);
1466
0
  }
1467
0
  case GICXXPred_MI_Predicate_GICombiner91: {
1468
0
    return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
1469
0
                                                                     MatchInfos.MDInfo6);
1470
0
  }
1471
0
  case GICXXPred_MI_Predicate_GICombiner92: {
1472
0
    return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
1473
0
                                                          *State.MIs[0], MatchInfos.MDInfo6);
1474
0
  }
1475
0
  case GICXXPred_MI_Predicate_GICombiner93: {
1476
0
    return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
1477
0
                                                                  MatchInfos.MDInfo6);
1478
0
  }
1479
0
  case GICXXPred_MI_Predicate_GICombiner94: {
1480
0
    return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
1481
0
                                                                      MatchInfos.MDInfo6);
1482
0
  }
1483
0
  case GICXXPred_MI_Predicate_GICombiner95: {
1484
0
    return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
1485
0
                                                                       MatchInfos.MDInfo6);
1486
0
  }
1487
0
  case GICXXPred_MI_Predicate_GICombiner96: {
1488
0
    return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
1489
0
                                                    *State.MIs[0], MatchInfos.MDInfo6);
1490
0
  }
1491
0
  case GICXXPred_MI_Predicate_GICombiner97: {
1492
0
    return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], MatchInfos.MDInfo0);
1493
0
  }
1494
0
  case GICXXPred_MI_Predicate_GICombiner98: {
1495
0
    return Helper.matchSubAddSameReg(*State.MIs[0], MatchInfos.MDInfo6);
1496
0
  }
1497
0
  case GICXXPred_MI_Predicate_GICombiner99: {
1498
0
    return Helper.matchSimplifySelectToMinMax(*State.MIs[0], MatchInfos.MDInfo6);
1499
0
  }
1500
0
  case GICXXPred_MI_Predicate_GICombiner100: {
1501
0
    return Helper.matchRedundantBinOpInEquality(*State.MIs[0], MatchInfos.MDInfo6);
1502
0
  }
1503
0
  case GICXXPred_MI_Predicate_GICombiner101: {
1504
0
    return Helper.matchFsubToFneg(*State.MIs[0], MatchInfos.MDInfo3);
1505
0
  }
1506
0
  case GICXXPred_MI_Predicate_GICombiner102: {
1507
0
    return Helper.matchCommuteConstantToRHS(*State.MIs[0]);
1508
0
  }
1509
0
  case GICXXPred_MI_Predicate_GICombiner103: {
1510
0
    return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);
1511
0
  }
1512
0
  case GICXXPred_MI_Predicate_GICombiner104: {
1513
0
    return matchFConstantToConstant(*State.MIs[0], MRI);
1514
0
  }
1515
0
  case GICXXPred_MI_Predicate_GICombiner105: {
1516
0
    return matchICmpRedundantTrunc(*State.MIs[0], MRI, Helper.getKnownBits(), MatchInfos.MDInfo3);
1517
0
  }
1518
0
  case GICXXPred_MI_Predicate_GICombiner106: {
1519
0
    return matchFoldGlobalOffset(*State.MIs[0], MRI, MatchInfos.MDInfo24);
1520
0
  }
1521
0
  case GICXXPred_MI_Predicate_GICombiner107: {
1522
0
    return Helper.matchShuffleToExtract(*State.MIs[0]);
1523
0
  }
1524
0
  case GICXXPred_MI_Predicate_GICombiner108: {
1525
0
    return matchExtAddvToUdotAddv(*State.MIs[0], MRI, STI, MatchInfos.MDInfo25);
1526
0
  }
1527
0
  case GICXXPred_MI_Predicate_GICombiner109: {
1528
0
    return matchExtUaddvToUaddlv(*State.MIs[0], MRI, MatchInfos.MDInfo1);
1529
0
  }
1530
0
  }
1531
0
  llvm_unreachable("Unknown predicate");
1532
0
  return false;
1533
0
}
1534
0
bool AArch64PreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1535
0
  llvm_unreachable("Unknown predicate");
1536
0
  return false;
1537
0
}
1538
0
bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1539
0
  llvm_unreachable("Unknown predicate");
1540
0
  return false;
1541
0
}
1542
0
bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1543
0
  llvm_unreachable("Unknown predicate");
1544
0
  return false;
1545
0
}
1546
enum {
1547
  GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1548
  GICXXPred_Simple_IsRule1Enabled,
1549
  GICXXPred_Simple_IsRule2Enabled,
1550
  GICXXPred_Simple_IsRule3Enabled,
1551
  GICXXPred_Simple_IsRule4Enabled,
1552
  GICXXPred_Simple_IsRule5Enabled,
1553
  GICXXPred_Simple_IsRule6Enabled,
1554
  GICXXPred_Simple_IsRule7Enabled,
1555
  GICXXPred_Simple_IsRule8Enabled,
1556
  GICXXPred_Simple_IsRule9Enabled,
1557
  GICXXPred_Simple_IsRule10Enabled,
1558
  GICXXPred_Simple_IsRule11Enabled,
1559
  GICXXPred_Simple_IsRule12Enabled,
1560
  GICXXPred_Simple_IsRule13Enabled,
1561
  GICXXPred_Simple_IsRule14Enabled,
1562
  GICXXPred_Simple_IsRule15Enabled,
1563
  GICXXPred_Simple_IsRule16Enabled,
1564
  GICXXPred_Simple_IsRule17Enabled,
1565
  GICXXPred_Simple_IsRule18Enabled,
1566
  GICXXPred_Simple_IsRule19Enabled,
1567
  GICXXPred_Simple_IsRule20Enabled,
1568
  GICXXPred_Simple_IsRule21Enabled,
1569
  GICXXPred_Simple_IsRule22Enabled,
1570
  GICXXPred_Simple_IsRule23Enabled,
1571
  GICXXPred_Simple_IsRule24Enabled,
1572
  GICXXPred_Simple_IsRule25Enabled,
1573
  GICXXPred_Simple_IsRule26Enabled,
1574
  GICXXPred_Simple_IsRule27Enabled,
1575
  GICXXPred_Simple_IsRule28Enabled,
1576
  GICXXPred_Simple_IsRule29Enabled,
1577
  GICXXPred_Simple_IsRule30Enabled,
1578
  GICXXPred_Simple_IsRule31Enabled,
1579
  GICXXPred_Simple_IsRule32Enabled,
1580
  GICXXPred_Simple_IsRule33Enabled,
1581
  GICXXPred_Simple_IsRule34Enabled,
1582
  GICXXPred_Simple_IsRule35Enabled,
1583
  GICXXPred_Simple_IsRule36Enabled,
1584
  GICXXPred_Simple_IsRule37Enabled,
1585
  GICXXPred_Simple_IsRule38Enabled,
1586
  GICXXPred_Simple_IsRule39Enabled,
1587
  GICXXPred_Simple_IsRule40Enabled,
1588
  GICXXPred_Simple_IsRule41Enabled,
1589
  GICXXPred_Simple_IsRule42Enabled,
1590
  GICXXPred_Simple_IsRule43Enabled,
1591
  GICXXPred_Simple_IsRule44Enabled,
1592
  GICXXPred_Simple_IsRule45Enabled,
1593
  GICXXPred_Simple_IsRule46Enabled,
1594
  GICXXPred_Simple_IsRule47Enabled,
1595
  GICXXPred_Simple_IsRule48Enabled,
1596
  GICXXPred_Simple_IsRule49Enabled,
1597
  GICXXPred_Simple_IsRule50Enabled,
1598
  GICXXPred_Simple_IsRule51Enabled,
1599
  GICXXPred_Simple_IsRule52Enabled,
1600
  GICXXPred_Simple_IsRule53Enabled,
1601
  GICXXPred_Simple_IsRule54Enabled,
1602
  GICXXPred_Simple_IsRule55Enabled,
1603
  GICXXPred_Simple_IsRule56Enabled,
1604
  GICXXPred_Simple_IsRule57Enabled,
1605
  GICXXPred_Simple_IsRule58Enabled,
1606
  GICXXPred_Simple_IsRule59Enabled,
1607
  GICXXPred_Simple_IsRule60Enabled,
1608
  GICXXPred_Simple_IsRule61Enabled,
1609
  GICXXPred_Simple_IsRule62Enabled,
1610
  GICXXPred_Simple_IsRule63Enabled,
1611
  GICXXPred_Simple_IsRule64Enabled,
1612
  GICXXPred_Simple_IsRule65Enabled,
1613
  GICXXPred_Simple_IsRule66Enabled,
1614
  GICXXPred_Simple_IsRule67Enabled,
1615
  GICXXPred_Simple_IsRule68Enabled,
1616
  GICXXPred_Simple_IsRule69Enabled,
1617
  GICXXPred_Simple_IsRule70Enabled,
1618
  GICXXPred_Simple_IsRule71Enabled,
1619
  GICXXPred_Simple_IsRule72Enabled,
1620
  GICXXPred_Simple_IsRule73Enabled,
1621
  GICXXPred_Simple_IsRule74Enabled,
1622
  GICXXPred_Simple_IsRule75Enabled,
1623
  GICXXPred_Simple_IsRule76Enabled,
1624
  GICXXPred_Simple_IsRule77Enabled,
1625
  GICXXPred_Simple_IsRule78Enabled,
1626
  GICXXPred_Simple_IsRule79Enabled,
1627
  GICXXPred_Simple_IsRule80Enabled,
1628
  GICXXPred_Simple_IsRule81Enabled,
1629
  GICXXPred_Simple_IsRule82Enabled,
1630
  GICXXPred_Simple_IsRule83Enabled,
1631
  GICXXPred_Simple_IsRule84Enabled,
1632
  GICXXPred_Simple_IsRule85Enabled,
1633
  GICXXPred_Simple_IsRule86Enabled,
1634
  GICXXPred_Simple_IsRule87Enabled,
1635
  GICXXPred_Simple_IsRule88Enabled,
1636
  GICXXPred_Simple_IsRule89Enabled,
1637
  GICXXPred_Simple_IsRule90Enabled,
1638
  GICXXPred_Simple_IsRule91Enabled,
1639
  GICXXPred_Simple_IsRule92Enabled,
1640
  GICXXPred_Simple_IsRule93Enabled,
1641
  GICXXPred_Simple_IsRule94Enabled,
1642
  GICXXPred_Simple_IsRule95Enabled,
1643
  GICXXPred_Simple_IsRule96Enabled,
1644
  GICXXPred_Simple_IsRule97Enabled,
1645
  GICXXPred_Simple_IsRule98Enabled,
1646
  GICXXPred_Simple_IsRule99Enabled,
1647
  GICXXPred_Simple_IsRule100Enabled,
1648
  GICXXPred_Simple_IsRule101Enabled,
1649
  GICXXPred_Simple_IsRule102Enabled,
1650
  GICXXPred_Simple_IsRule103Enabled,
1651
  GICXXPred_Simple_IsRule104Enabled,
1652
  GICXXPred_Simple_IsRule105Enabled,
1653
  GICXXPred_Simple_IsRule106Enabled,
1654
  GICXXPred_Simple_IsRule107Enabled,
1655
  GICXXPred_Simple_IsRule108Enabled,
1656
  GICXXPred_Simple_IsRule109Enabled,
1657
  GICXXPred_Simple_IsRule110Enabled,
1658
  GICXXPred_Simple_IsRule111Enabled,
1659
  GICXXPred_Simple_IsRule112Enabled,
1660
  GICXXPred_Simple_IsRule113Enabled,
1661
  GICXXPred_Simple_IsRule114Enabled,
1662
  GICXXPred_Simple_IsRule115Enabled,
1663
  GICXXPred_Simple_IsRule116Enabled,
1664
  GICXXPred_Simple_IsRule117Enabled,
1665
  GICXXPred_Simple_IsRule118Enabled,
1666
  GICXXPred_Simple_IsRule119Enabled,
1667
  GICXXPred_Simple_IsRule120Enabled,
1668
  GICXXPred_Simple_IsRule121Enabled,
1669
  GICXXPred_Simple_IsRule122Enabled,
1670
  GICXXPred_Simple_IsRule123Enabled,
1671
  GICXXPred_Simple_IsRule124Enabled,
1672
  GICXXPred_Simple_IsRule125Enabled,
1673
  GICXXPred_Simple_IsRule126Enabled,
1674
  GICXXPred_Simple_IsRule127Enabled,
1675
  GICXXPred_Simple_IsRule128Enabled,
1676
  GICXXPred_Simple_IsRule129Enabled,
1677
  GICXXPred_Simple_IsRule130Enabled,
1678
  GICXXPred_Simple_IsRule131Enabled,
1679
  GICXXPred_Simple_IsRule132Enabled,
1680
  GICXXPred_Simple_IsRule133Enabled,
1681
};
1682
1683
0
bool AArch64PreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
1684
0
    return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
1685
0
}
1686
// Custom renderers.
1687
enum {
1688
  GICR_Invalid,
1689
};
1690
AArch64PreLegalizerCombinerImpl::CustomRendererFn
1691
AArch64PreLegalizerCombinerImpl::CustomRenderers[] = {
1692
  nullptr, // GICR_Invalid
1693
};
1694
1695
0
bool AArch64PreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
1696
0
  const TargetSubtargetInfo &ST = MF.getSubtarget();
1697
0
  const PredicateBitset AvailableFeatures = getAvailableFeatures();
1698
0
  B.setInstrAndDebugLoc(I);
1699
0
  State.MIs.clear();
1700
0
  State.MIs.push_back(&I);
1701
0
  MatchInfos = MatchInfosTy();
1702
1703
0
  if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
1704
0
    return true;
1705
0
  }
1706
1707
0
  return false;
1708
0
}
1709
1710
enum {
1711
  GICXXCustomAction_CombineApplyGICombiner0 = GICXXCustomAction_Invalid + 1,
1712
  GICXXCustomAction_CombineApplyGICombiner1,
1713
  GICXXCustomAction_CombineApplyGICombiner2,
1714
  GICXXCustomAction_CombineApplyGICombiner3,
1715
  GICXXCustomAction_CombineApplyGICombiner4,
1716
  GICXXCustomAction_CombineApplyGICombiner5,
1717
  GICXXCustomAction_CombineApplyGICombiner6,
1718
  GICXXCustomAction_CombineApplyGICombiner7,
1719
  GICXXCustomAction_CombineApplyGICombiner8,
1720
  GICXXCustomAction_CombineApplyGICombiner9,
1721
  GICXXCustomAction_CombineApplyGICombiner10,
1722
  GICXXCustomAction_CombineApplyGICombiner11,
1723
  GICXXCustomAction_CombineApplyGICombiner12,
1724
  GICXXCustomAction_CombineApplyGICombiner13,
1725
  GICXXCustomAction_CombineApplyGICombiner14,
1726
  GICXXCustomAction_CombineApplyGICombiner15,
1727
  GICXXCustomAction_CombineApplyGICombiner16,
1728
  GICXXCustomAction_CombineApplyGICombiner17,
1729
  GICXXCustomAction_CombineApplyGICombiner18,
1730
  GICXXCustomAction_CombineApplyGICombiner19,
1731
  GICXXCustomAction_CombineApplyGICombiner20,
1732
  GICXXCustomAction_CombineApplyGICombiner21,
1733
  GICXXCustomAction_CombineApplyGICombiner22,
1734
  GICXXCustomAction_CombineApplyGICombiner23,
1735
  GICXXCustomAction_CombineApplyGICombiner24,
1736
  GICXXCustomAction_CombineApplyGICombiner25,
1737
  GICXXCustomAction_CombineApplyGICombiner26,
1738
  GICXXCustomAction_CombineApplyGICombiner27,
1739
  GICXXCustomAction_CombineApplyGICombiner28,
1740
  GICXXCustomAction_CombineApplyGICombiner29,
1741
  GICXXCustomAction_CombineApplyGICombiner30,
1742
  GICXXCustomAction_CombineApplyGICombiner31,
1743
  GICXXCustomAction_CombineApplyGICombiner32,
1744
  GICXXCustomAction_CombineApplyGICombiner33,
1745
  GICXXCustomAction_CombineApplyGICombiner34,
1746
  GICXXCustomAction_CombineApplyGICombiner35,
1747
  GICXXCustomAction_CombineApplyGICombiner36,
1748
  GICXXCustomAction_CombineApplyGICombiner37,
1749
  GICXXCustomAction_CombineApplyGICombiner38,
1750
  GICXXCustomAction_CombineApplyGICombiner39,
1751
  GICXXCustomAction_CombineApplyGICombiner40,
1752
  GICXXCustomAction_CombineApplyGICombiner41,
1753
  GICXXCustomAction_CombineApplyGICombiner42,
1754
  GICXXCustomAction_CombineApplyGICombiner43,
1755
  GICXXCustomAction_CombineApplyGICombiner44,
1756
  GICXXCustomAction_CombineApplyGICombiner45,
1757
  GICXXCustomAction_CombineApplyGICombiner46,
1758
  GICXXCustomAction_CombineApplyGICombiner47,
1759
  GICXXCustomAction_CombineApplyGICombiner48,
1760
  GICXXCustomAction_CombineApplyGICombiner49,
1761
  GICXXCustomAction_CombineApplyGICombiner50,
1762
  GICXXCustomAction_CombineApplyGICombiner51,
1763
  GICXXCustomAction_CombineApplyGICombiner52,
1764
  GICXXCustomAction_CombineApplyGICombiner53,
1765
  GICXXCustomAction_CombineApplyGICombiner54,
1766
  GICXXCustomAction_CombineApplyGICombiner55,
1767
  GICXXCustomAction_CombineApplyGICombiner56,
1768
  GICXXCustomAction_CombineApplyGICombiner57,
1769
  GICXXCustomAction_CombineApplyGICombiner58,
1770
  GICXXCustomAction_CombineApplyGICombiner59,
1771
  GICXXCustomAction_CombineApplyGICombiner60,
1772
  GICXXCustomAction_CombineApplyGICombiner61,
1773
  GICXXCustomAction_CombineApplyGICombiner62,
1774
  GICXXCustomAction_CombineApplyGICombiner63,
1775
};
1776
0
void AArch64PreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
1777
0
  switch(ApplyID) {
1778
0
  case GICXXCustomAction_CombineApplyGICombiner0:{
1779
0
    Helper.applyCombineCopy(*State.MIs[0]);
1780
0
    return;
1781
0
  }
1782
0
  case GICXXCustomAction_CombineApplyGICombiner1:{
1783
0
    Helper.applyCombineMulToShl(*State.MIs[0], MatchInfos.MDInfo0);
1784
0
    return;
1785
0
  }
1786
0
  case GICXXCustomAction_CombineApplyGICombiner2:{
1787
0
    Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], MatchInfos.MDInfo1);
1788
0
    return;
1789
0
  }
1790
0
  case GICXXCustomAction_CombineApplyGICombiner3:{
1791
0
    Helper.applyCombineInsertVecElts(*State.MIs[0], MatchInfos.MDInfo2);
1792
0
    return;
1793
0
  }
1794
0
  case GICXXCustomAction_CombineApplyGICombiner4:{
1795
0
    Helper.applyExtractVecEltBuildVec(*State.MIs[0], MatchInfos.MDInfo3);
1796
0
    return;
1797
0
  }
1798
0
  case GICXXCustomAction_CombineApplyGICombiner5:{
1799
0
    Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], MatchInfos.MDInfo4);
1800
0
    return;
1801
0
  }
1802
0
  case GICXXCustomAction_CombineApplyGICombiner6:{
1803
0
    Helper.applyCombineExtendingLoads(*State.MIs[0], MatchInfos.MDInfo5);
1804
0
    return;
1805
0
  }
1806
0
  case GICXXCustomAction_CombineApplyGICombiner7:{
1807
0
    Helper.applyBuildFn(*State.MIs[0], MatchInfos.MDInfo6);
1808
0
    return;
1809
0
  }
1810
0
  case GICXXCustomAction_CombineApplyGICombiner8:{
1811
0
    Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
1812
0
    return;
1813
0
  }
1814
0
  case GICXXCustomAction_CombineApplyGICombiner9:{
1815
0
    Helper.replaceInstWithConstant(*State.MIs[0], 0);
1816
0
    return;
1817
0
  }
1818
0
  case GICXXCustomAction_CombineApplyGICombiner10:{
1819
0
    Helper.replaceInstWithConstant(*State.MIs[0], -1);
1820
0
    return;
1821
0
  }
1822
0
  case GICXXCustomAction_CombineApplyGICombiner11:{
1823
0
    Helper.replaceInstWithUndef(*State.MIs[0]);
1824
0
    return;
1825
0
  }
1826
0
  case GICXXCustomAction_CombineApplyGICombiner12:{
1827
0
    Helper.eraseInst(*State.MIs[0]);
1828
0
    return;
1829
0
  }
1830
0
  case GICXXCustomAction_CombineApplyGICombiner13:{
1831
0
    Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
1832
0
    return;
1833
0
  }
1834
0
  case GICXXCustomAction_CombineApplyGICombiner14:{
1835
0
    Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
1836
0
    return;
1837
0
  }
1838
0
  case GICXXCustomAction_CombineApplyGICombiner15:{
1839
0
    Helper.applyCombineI2PToP2I(*State.MIs[0], MatchInfos.MDInfo3);
1840
0
    return;
1841
0
  }
1842
0
  case GICXXCustomAction_CombineApplyGICombiner16:{
1843
0
    Helper.applyCombineP2IToI2P(*State.MIs[0], MatchInfos.MDInfo3);
1844
0
    return;
1845
0
  }
1846
0
  case GICXXCustomAction_CombineApplyGICombiner17:{
1847
0
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], MatchInfos.MDInfo3);
1848
0
    return;
1849
0
  }
1850
0
  case GICXXCustomAction_CombineApplyGICombiner18:{
1851
0
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
1852
0
    return;
1853
0
  }
1854
0
  case GICXXCustomAction_CombineApplyGICombiner19:{
1855
0
    Helper.applyExtendThroughPhis(*State.MIs[0], MatchInfos.MDInfo7);
1856
0
    return;
1857
0
  }
1858
0
  case GICXXCustomAction_CombineApplyGICombiner20:{
1859
0
    Helper.applySimplifyAddToSub(*State.MIs[0], MatchInfos.MDInfo8);
1860
0
    return;
1861
0
  }
1862
0
  case GICXXCustomAction_CombineApplyGICombiner21:{
1863
0
    Helper.applyBuildInstructionSteps(*State.MIs[0], MatchInfos.MDInfo9);
1864
0
    return;
1865
0
  }
1866
0
  case GICXXCustomAction_CombineApplyGICombiner22:{
1867
0
    Helper.applyBuildFnNoErase(*State.MIs[0], MatchInfos.MDInfo6);
1868
0
    return;
1869
0
  }
1870
0
  case GICXXCustomAction_CombineApplyGICombiner23:{
1871
0
    Helper.applyPtrAddImmedChain(*State.MIs[0], MatchInfos.MDInfo10);
1872
0
    return;
1873
0
  }
1874
0
  case GICXXCustomAction_CombineApplyGICombiner24:{
1875
0
    Helper.applyAshShlToSextInreg(*State.MIs[0], MatchInfos.MDInfo11);
1876
0
    return;
1877
0
  }
1878
0
  case GICXXCustomAction_CombineApplyGICombiner25:{
1879
0
    Helper.applySextInRegOfLoad(*State.MIs[0], MatchInfos.MDInfo12);
1880
0
    return;
1881
0
  }
1882
0
  case GICXXCustomAction_CombineApplyGICombiner26:{
1883
0
    Helper.applyCombineShlOfExtend(*State.MIs[0], MatchInfos.MDInfo13);
1884
0
    return;
1885
0
  }
1886
0
  case GICXXCustomAction_CombineApplyGICombiner27:{
1887
0
    Helper.replaceSingleDefInstWithOperand(*State.MIs[0], MatchInfos.MDInfo0);
1888
0
    return;
1889
0
  }
1890
0
  case GICXXCustomAction_CombineApplyGICombiner28:{
1891
0
    Helper.applySimplifyURemByPow2(*State.MIs[0]);
1892
0
    return;
1893
0
  }
1894
0
  case GICXXCustomAction_CombineApplyGICombiner29:{
1895
0
    Helper.replaceInstWithConstant(*State.MIs[0], MatchInfos.MDInfo14);
1896
0
    return;
1897
0
  }
1898
0
  case GICXXCustomAction_CombineApplyGICombiner30:{
1899
0
    Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
1900
0
              Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
1901
0
              State.MIs[0]->eraseFromParent();
1902
0
    return;
1903
0
  }
1904
0
  case GICXXCustomAction_CombineApplyGICombiner31:{
1905
0
    Helper.applyCombineExtOfExt(*State.MIs[0], MatchInfos.MDInfo12);
1906
0
    return;
1907
0
  }
1908
0
  case GICXXCustomAction_CombineApplyGICombiner32:{
1909
0
    Helper.applyNotCmp(*State.MIs[0], MatchInfos.MDInfo2);
1910
0
    return;
1911
0
  }
1912
0
  case GICXXCustomAction_CombineApplyGICombiner33:{
1913
0
    Helper.applyOptBrCondByInvertingCond(*State.MIs[0], MatchInfos.MDInfo15);
1914
0
    return;
1915
0
  }
1916
0
  case GICXXCustomAction_CombineApplyGICombiner34:{
1917
0
    Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], MatchInfos.MDInfo16);
1918
0
    return;
1919
0
  }
1920
0
  case GICXXCustomAction_CombineApplyGICombiner35:{
1921
0
    Helper.applyCombineUnmergeConstant(*State.MIs[0], MatchInfos.MDInfo17);
1922
0
    return;
1923
0
  }
1924
0
  case GICXXCustomAction_CombineApplyGICombiner36:{
1925
0
    Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
1926
0
    return;
1927
0
  }
1928
0
  case GICXXCustomAction_CombineApplyGICombiner37:{
1929
0
    Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
1930
0
    return;
1931
0
  }
1932
0
  case GICXXCustomAction_CombineApplyGICombiner38:{
1933
0
    Helper.applyCombineTruncOfExt(*State.MIs[0], MatchInfos.MDInfo18);
1934
0
    return;
1935
0
  }
1936
0
  case GICXXCustomAction_CombineApplyGICombiner39:{
1937
0
    Helper.applyCombineTruncOfShift(*State.MIs[0], MatchInfos.MDInfo19);
1938
0
    return;
1939
0
  }
1940
0
  case GICXXCustomAction_CombineApplyGICombiner40:{
1941
0
    Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
1942
0
    return;
1943
0
  }
1944
0
  case GICXXCustomAction_CombineApplyGICombiner41:{
1945
0
    Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
1946
0
    return;
1947
0
  }
1948
0
  case GICXXCustomAction_CombineApplyGICombiner42:{
1949
0
    Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], MatchInfos.MDInfo20);
1950
0
    return;
1951
0
  }
1952
0
  case GICXXCustomAction_CombineApplyGICombiner43:{
1953
0
    Helper.applyXorOfAndWithSameReg(*State.MIs[0], MatchInfos.MDInfo21);
1954
0
    return;
1955
0
  }
1956
0
  case GICXXCustomAction_CombineApplyGICombiner44:{
1957
0
    Helper.applyPtrAddZero(*State.MIs[0]);
1958
0
    return;
1959
0
  }
1960
0
  case GICXXCustomAction_CombineApplyGICombiner45:{
1961
0
    Helper.applyShiftImmedChain(*State.MIs[0], MatchInfos.MDInfo13);
1962
0
    return;
1963
0
  }
1964
0
  case GICXXCustomAction_CombineApplyGICombiner46:{
1965
0
    Helper.applyShiftOfShiftedLogic(*State.MIs[0], MatchInfos.MDInfo22);
1966
0
    return;
1967
0
  }
1968
0
  case GICXXCustomAction_CombineApplyGICombiner47:{
1969
0
    Helper.applyCombineDivRem(*State.MIs[0], MatchInfos.MDInfo15);
1970
0
    return;
1971
0
  }
1972
0
  case GICXXCustomAction_CombineApplyGICombiner48:{
1973
0
    Helper.applyFunnelShiftToRotate(*State.MIs[0]);
1974
0
    return;
1975
0
  }
1976
0
  case GICXXCustomAction_CombineApplyGICombiner49:{
1977
0
    Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
1978
0
    return;
1979
0
  }
1980
0
  case GICXXCustomAction_CombineApplyGICombiner50:{
1981
0
    Helper.replaceInstWithConstant(*State.MIs[0], MatchInfos.MDInfo20);
1982
0
    return;
1983
0
  }
1984
0
  case GICXXCustomAction_CombineApplyGICombiner51:{
1985
0
    Helper.replaceInstWithFConstant(*State.MIs[0], MatchInfos.MDInfo23);
1986
0
    return;
1987
0
  }
1988
0
  case GICXXCustomAction_CombineApplyGICombiner52:{
1989
0
    Helper.applyUDivByConst(*State.MIs[0]);
1990
0
    return;
1991
0
  }
1992
0
  case GICXXCustomAction_CombineApplyGICombiner53:{
1993
0
    Helper.applySDivByConst(*State.MIs[0]);
1994
0
    return;
1995
0
  }
1996
0
  case GICXXCustomAction_CombineApplyGICombiner54:{
1997
0
    Helper.applyUMulHToLShr(*State.MIs[0]);
1998
0
    return;
1999
0
  }
2000
0
  case GICXXCustomAction_CombineApplyGICombiner55:{
2001
0
    Helper.applyFoldBinOpIntoSelect(*State.MIs[0], MatchInfos.MDInfo0);
2002
0
    return;
2003
0
  }
2004
0
  case GICXXCustomAction_CombineApplyGICombiner56:{
2005
0
    Helper.applyFsubToFneg(*State.MIs[0], MatchInfos.MDInfo3);
2006
0
    return;
2007
0
  }
2008
0
  case GICXXCustomAction_CombineApplyGICombiner57:{
2009
0
    Helper.applyCommuteBinOpOperands(*State.MIs[0]);
2010
0
    return;
2011
0
  }
2012
0
  case GICXXCustomAction_CombineApplyGICombiner58:{
2013
0
    applyFConstantToConstant(*State.MIs[0]);
2014
0
    return;
2015
0
  }
2016
0
  case GICXXCustomAction_CombineApplyGICombiner59:{
2017
0
    applyICmpRedundantTrunc(*State.MIs[0], MRI, B, Observer, MatchInfos.MDInfo3);
2018
0
    return;
2019
0
  }
2020
0
  case GICXXCustomAction_CombineApplyGICombiner60:{
2021
0
    applyFoldGlobalOffset(*State.MIs[0], MRI, B, Observer, MatchInfos.MDInfo24);
2022
0
    return;
2023
0
  }
2024
0
  case GICXXCustomAction_CombineApplyGICombiner61:{
2025
0
    Helper.applyShuffleToExtract(*State.MIs[0]);
2026
0
    return;
2027
0
  }
2028
0
  case GICXXCustomAction_CombineApplyGICombiner62:{
2029
0
    applyExtAddvToUdotAddv(*State.MIs[0], MRI, B, Observer, STI, MatchInfos.MDInfo25);
2030
0
    return;
2031
0
  }
2032
0
  case GICXXCustomAction_CombineApplyGICombiner63:{
2033
0
    applyExtUaddvToUaddlv(*State.MIs[0], MRI, B, Observer, MatchInfos.MDInfo1);
2034
0
    return;
2035
0
  }
2036
0
}
2037
0
  llvm_unreachable("Unknown Apply Action");
2038
0
}
2039
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
2040
0
#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((uint16_t)Val >> 8)
2041
0
#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((uint32_t)Val >> 8), uint8_t((uint32_t)Val >> 16), uint8_t((uint32_t)Val >> 24)
2042
0
#define GIMT_Encode8(Val) uint8_t(Val), uint8_t((uint64_t)Val >> 8), uint8_t((uint64_t)Val >> 16), uint8_t((uint64_t)Val >> 24),  uint8_t((uint64_t)Val >> 32), uint8_t((uint64_t)Val >> 40), uint8_t((uint64_t)Val >> 48), uint8_t((uint64_t)Val >> 56)
2043
#else
2044
#define GIMT_Encode2(Val) uint8_t((uint16_t)Val >> 8), uint8_t(Val)
2045
#define GIMT_Encode4(Val) uint8_t((uint32_t)Val >> 24), uint8_t((uint32_t)Val >> 16), uint8_t((uint32_t)Val >> 8), uint8_t(Val)
2046
#define GIMT_Encode8(Val) uint8_t((uint64_t)Val >> 56), uint8_t((uint64_t)Val >> 48), uint8_t((uint64_t)Val >> 40), uint8_t((uint64_t)Val >> 32),  uint8_t((uint64_t)Val >> 24), uint8_t((uint64_t)Val >> 16), uint8_t((uint64_t)Val >> 8), uint8_t(Val)
2047
#endif
2048
0
const uint8_t *AArch64PreLegalizerCombinerImpl::getMatchTable() const {
2049
0
  constexpr static uint8_t MatchTable0[] = {
2050
0
    GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(19), GIMT_Encode2(261), /*)*//*default:*//*Label 83*/ GIMT_Encode4(5359),
2051
0
    /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(978), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2052
0
    /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(995),
2053
0
    /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1205),
2054
0
    /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(1295),
2055
0
    /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(1457),
2056
0
    /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(1522),
2057
0
    /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(1603),
2058
0
    /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(1652), GIMT_Encode4(0), GIMT_Encode4(0),
2059
0
    /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(1733),
2060
0
    /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(1936),
2061
0
    /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(2116), GIMT_Encode4(0),
2062
0
    /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(2254), GIMT_Encode4(0),
2063
0
    /*TargetOpcode::G_GLOBAL_VALUE*//*Label 12*/ GIMT_Encode4(2271), GIMT_Encode4(0), GIMT_Encode4(0),
2064
0
    /*TargetOpcode::G_UNMERGE_VALUES*//*Label 13*/ GIMT_Encode4(2288), GIMT_Encode4(0),
2065
0
    /*TargetOpcode::G_MERGE_VALUES*//*Label 14*/ GIMT_Encode4(2369),
2066
0
    /*TargetOpcode::G_BUILD_VECTOR*//*Label 15*/ GIMT_Encode4(2386),
2067
0
    /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 16*/ GIMT_Encode4(2419), GIMT_Encode4(0),
2068
0
    /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(2436),
2069
0
    /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(2463),
2070
0
    /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(2480),
2071
0
    /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(2507), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2072
0
    /*TargetOpcode::G_LOAD*//*Label 21*/ GIMT_Encode4(2539),
2073
0
    /*TargetOpcode::G_SEXTLOAD*//*Label 22*/ GIMT_Encode4(2556),
2074
0
    /*TargetOpcode::G_ZEXTLOAD*//*Label 23*/ GIMT_Encode4(2573), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2075
0
    /*TargetOpcode::G_STORE*//*Label 24*/ GIMT_Encode4(2590), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2076
0
    /*TargetOpcode::G_ANYEXT*//*Label 25*/ GIMT_Encode4(2607),
2077
0
    /*TargetOpcode::G_TRUNC*//*Label 26*/ GIMT_Encode4(2656), GIMT_Encode4(0),
2078
0
    /*TargetOpcode::G_FCONSTANT*//*Label 27*/ GIMT_Encode4(2737), GIMT_Encode4(0), GIMT_Encode4(0),
2079
0
    /*TargetOpcode::G_SEXT*//*Label 28*/ GIMT_Encode4(2754),
2080
0
    /*TargetOpcode::G_SEXT_INREG*//*Label 29*/ GIMT_Encode4(2787),
2081
0
    /*TargetOpcode::G_ZEXT*//*Label 30*/ GIMT_Encode4(2852),
2082
0
    /*TargetOpcode::G_SHL*//*Label 31*/ GIMT_Encode4(2901),
2083
0
    /*TargetOpcode::G_LSHR*//*Label 32*/ GIMT_Encode4(3071),
2084
0
    /*TargetOpcode::G_ASHR*//*Label 33*/ GIMT_Encode4(3225),
2085
0
    /*TargetOpcode::G_FSHL*//*Label 34*/ GIMT_Encode4(3395),
2086
0
    /*TargetOpcode::G_FSHR*//*Label 35*/ GIMT_Encode4(3455),
2087
0
    /*TargetOpcode::G_ROTR*//*Label 36*/ GIMT_Encode4(3515),
2088
0
    /*TargetOpcode::G_ROTL*//*Label 37*/ GIMT_Encode4(3541),
2089
0
    /*TargetOpcode::G_ICMP*//*Label 38*/ GIMT_Encode4(3567), GIMT_Encode4(0),
2090
0
    /*TargetOpcode::G_SELECT*//*Label 39*/ GIMT_Encode4(3632),
2091
0
    /*TargetOpcode::G_UADDO*//*Label 40*/ GIMT_Encode4(3728),
2092
0
    /*TargetOpcode::G_UADDE*//*Label 41*/ GIMT_Encode4(3745), GIMT_Encode4(0),
2093
0
    /*TargetOpcode::G_USUBE*//*Label 42*/ GIMT_Encode4(3762),
2094
0
    /*TargetOpcode::G_SADDO*//*Label 43*/ GIMT_Encode4(3779),
2095
0
    /*TargetOpcode::G_SADDE*//*Label 44*/ GIMT_Encode4(3796), GIMT_Encode4(0),
2096
0
    /*TargetOpcode::G_SSUBE*//*Label 45*/ GIMT_Encode4(3813),
2097
0
    /*TargetOpcode::G_UMULO*//*Label 46*/ GIMT_Encode4(3830),
2098
0
    /*TargetOpcode::G_SMULO*//*Label 47*/ GIMT_Encode4(3863),
2099
0
    /*TargetOpcode::G_UMULH*//*Label 48*/ GIMT_Encode4(3896), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2100
0
    /*TargetOpcode::G_USHLSAT*//*Label 49*/ GIMT_Encode4(3913),
2101
0
    /*TargetOpcode::G_SSHLSAT*//*Label 50*/ GIMT_Encode4(3946), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2102
0
    /*TargetOpcode::G_FADD*//*Label 51*/ GIMT_Encode4(3979),
2103
0
    /*TargetOpcode::G_FSUB*//*Label 52*/ GIMT_Encode4(4133),
2104
0
    /*TargetOpcode::G_FMUL*//*Label 53*/ GIMT_Encode4(4262),
2105
0
    /*TargetOpcode::G_FMA*//*Label 54*/ GIMT_Encode4(4352),
2106
0
    /*TargetOpcode::G_FMAD*//*Label 55*/ GIMT_Encode4(4385),
2107
0
    /*TargetOpcode::G_FDIV*//*Label 56*/ GIMT_Encode4(4418),
2108
0
    /*TargetOpcode::G_FREM*//*Label 57*/ GIMT_Encode4(4467), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2109
0
    /*TargetOpcode::G_FLOG2*//*Label 58*/ GIMT_Encode4(4484), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2110
0
    /*TargetOpcode::G_FNEG*//*Label 59*/ GIMT_Encode4(4507), GIMT_Encode4(0),
2111
0
    /*TargetOpcode::G_FPTRUNC*//*Label 60*/ GIMT_Encode4(4561),
2112
0
    /*TargetOpcode::G_FPTOSI*//*Label 61*/ GIMT_Encode4(4610),
2113
0
    /*TargetOpcode::G_FPTOUI*//*Label 62*/ GIMT_Encode4(4627),
2114
0
    /*TargetOpcode::G_SITOFP*//*Label 63*/ GIMT_Encode4(4644),
2115
0
    /*TargetOpcode::G_UITOFP*//*Label 64*/ GIMT_Encode4(4677),
2116
0
    /*TargetOpcode::G_FABS*//*Label 65*/ GIMT_Encode4(4710), GIMT_Encode4(0), GIMT_Encode4(0),
2117
0
    /*TargetOpcode::G_FCANONICALIZE*//*Label 66*/ GIMT_Encode4(4797),
2118
0
    /*TargetOpcode::G_FMINNUM*//*Label 67*/ GIMT_Encode4(4829),
2119
0
    /*TargetOpcode::G_FMAXNUM*//*Label 68*/ GIMT_Encode4(4862), GIMT_Encode4(0), GIMT_Encode4(0),
2120
0
    /*TargetOpcode::G_FMINIMUM*//*Label 69*/ GIMT_Encode4(4895),
2121
0
    /*TargetOpcode::G_FMAXIMUM*//*Label 70*/ GIMT_Encode4(4928), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2122
0
    /*TargetOpcode::G_PTR_ADD*//*Label 71*/ GIMT_Encode4(4961), GIMT_Encode4(0),
2123
0
    /*TargetOpcode::G_SMIN*//*Label 72*/ GIMT_Encode4(5067),
2124
0
    /*TargetOpcode::G_SMAX*//*Label 73*/ GIMT_Encode4(5084),
2125
0
    /*TargetOpcode::G_UMIN*//*Label 74*/ GIMT_Encode4(5101),
2126
0
    /*TargetOpcode::G_UMAX*//*Label 75*/ GIMT_Encode4(5118),
2127
0
    /*TargetOpcode::G_ABS*//*Label 76*/ GIMT_Encode4(5135), GIMT_Encode4(0), GIMT_Encode4(0),
2128
0
    /*TargetOpcode::G_BR*//*Label 77*/ GIMT_Encode4(5152), GIMT_Encode4(0),
2129
0
    /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 78*/ GIMT_Encode4(5169),
2130
0
    /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 79*/ GIMT_Encode4(5202),
2131
0
    /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 80*/ GIMT_Encode4(5251), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2132
0
    /*TargetOpcode::G_FSQRT*//*Label 81*/ GIMT_Encode4(5300), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2133
0
    /*TargetOpcode::G_VECREDUCE_ADD*//*Label 82*/ GIMT_Encode4(5323),
2134
    // Label 0: @978
2135
0
    GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(994), // Rule ID 0 //
2136
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
2137
      // MIs[0] d
2138
      // No operand predicates
2139
      // MIs[0] s
2140
      // No operand predicates
2141
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
2142
      // Combiner Rule #0: copy_prop
2143
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner0),
2144
0
      GIR_Done,
2145
    // Label 84: @994
2146
0
    GIM_Reject,
2147
    // Label 1: @995
2148
0
    GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1011), // Rule ID 2 //
2149
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
2150
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
2151
      // Combiner Rule #2: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
2152
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
2153
0
      GIR_Done,
2154
    // Label 85: @1011
2155
0
    GIM_Try, /*On fail goto*//*Label 86*/ GIMT_Encode4(1027), // Rule ID 27 //
2156
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
2157
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
2158
      // Combiner Rule #17: propagate_undef_any_op; wip_match_opcode 'G_ADD'
2159
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
2160
0
      GIR_Done,
2161
    // Label 86: @1027
2162
0
    GIM_Try, /*On fail goto*//*Label 87*/ GIMT_Encode4(1043), // Rule ID 73 //
2163
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
2164
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner29),
2165
      // Combiner Rule #42: simplify_add_to_sub; wip_match_opcode 'G_ADD'
2166
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner20),
2167
0
      GIR_Done,
2168
    // Label 87: @1043
2169
0
    GIM_Try, /*On fail goto*//*Label 88*/ GIMT_Encode4(1059), // Rule ID 164 //
2170
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
2171
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner80),
2172
      // Combiner Rule #103: constant_fold_binop; wip_match_opcode 'G_ADD'
2173
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
2174
0
      GIR_Done,
2175
    // Label 88: @1059
2176
0
    GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(1075), // Rule ID 201 //
2177
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
2178
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
2179
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_ADD'
2180
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
2181
0
      GIR_Done,
2182
    // Label 89: @1075
2183
0
    GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(1091), // Rule ID 231 //
2184
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
2185
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner102),
2186
      // Combiner Rule #126: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
2187
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner57),
2188
0
      GIR_Done,
2189
    // Label 90: @1091
2190
0
    GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(1127), // Rule ID 64 //
2191
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
2192
      // MIs[0] dst
2193
      // No operand predicates
2194
      // MIs[0] __add_sub_reg_match_0.tmp
2195
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2196
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
2197
      // MIs[1] src
2198
      // No operand predicates
2199
      // MIs[1] __add_sub_reg_match_0.x
2200
      // No operand predicates
2201
      // MIs[0] __add_sub_reg_match_0.x
2202
0
      GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
2203
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2204
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
2205
      // Combiner Rule #34: add_sub_reg @ [__add_sub_reg_match_0[1]]
2206
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2207
0
      GIR_EraseFromParent, /*InsnID*/0,
2208
0
      GIR_Done,
2209
    // Label 91: @1127
2210
0
    GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(1163), // Rule ID 63 //
2211
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
2212
      // MIs[0] dst
2213
      // No operand predicates
2214
      // MIs[0] __add_sub_reg_match_0.x
2215
      // No operand predicates
2216
      // MIs[0] __add_sub_reg_match_0.tmp
2217
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2218
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
2219
      // MIs[1] src
2220
      // No operand predicates
2221
      // MIs[1] __add_sub_reg_match_0.x
2222
0
      GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2223
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2224
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
2225
      // Combiner Rule #34: add_sub_reg @ [__add_sub_reg_match_0[0]]
2226
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2227
0
      GIR_EraseFromParent, /*InsnID*/0,
2228
0
      GIR_Done,
2229
    // Label 92: @1163
2230
0
    GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(1188), // Rule ID 41 //
2231
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
2232
      // MIs[0] dst
2233
      // No operand predicates
2234
      // MIs[0] lhs
2235
      // No operand predicates
2236
      // MIs[0] Operand 2
2237
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2238
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2239
      // Combiner Rule #24: right_identity_zero @ [__right_identity_zero_match_0[1]]
2240
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2241
0
      GIR_EraseFromParent, /*InsnID*/0,
2242
0
      GIR_Done,
2243
    // Label 93: @1188
2244
0
    GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(1204), // Rule ID 81 //
2245
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
2246
      // MIs[0] root
2247
      // No operand predicates
2248
      // MIs[0] src1
2249
      // No operand predicates
2250
      // MIs[0] src2
2251
      // No operand predicates
2252
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner33),
2253
      // Combiner Rule #46: reassoc_comm_binops
2254
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
2255
0
      GIR_Done,
2256
    // Label 94: @1204
2257
0
    GIM_Reject,
2258
    // Label 2: @1205
2259
0
    GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(1221), // Rule ID 30 //
2260
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
2261
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
2262
      // Combiner Rule #17: propagate_undef_any_op; wip_match_opcode 'G_SUB'
2263
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
2264
0
      GIR_Done,
2265
    // Label 95: @1221
2266
0
    GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1237), // Rule ID 165 //
2267
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
2268
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner80),
2269
      // Combiner Rule #103: constant_fold_binop; wip_match_opcode 'G_SUB'
2270
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
2271
0
      GIR_Done,
2272
    // Label 96: @1237
2273
0
    GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1253), // Rule ID 202 //
2274
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
2275
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
2276
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_SUB'
2277
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
2278
0
      GIR_Done,
2279
    // Label 97: @1253
2280
0
    GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1269), // Rule ID 227 //
2281
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
2282
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner98),
2283
      // Combiner Rule #122: sub_add_reg; wip_match_opcode 'G_SUB'
2284
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
2285
0
      GIR_Done,
2286
    // Label 98: @1269
2287
0
    GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1294), // Rule ID 40 //
2288
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
2289
      // MIs[0] dst
2290
      // No operand predicates
2291
      // MIs[0] lhs
2292
      // No operand predicates
2293
      // MIs[0] Operand 2
2294
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2295
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2296
      // Combiner Rule #24: right_identity_zero @ [__right_identity_zero_match_0[0]]
2297
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2298
0
      GIR_EraseFromParent, /*InsnID*/0,
2299
0
      GIR_Done,
2300
    // Label 99: @1294
2301
0
    GIM_Reject,
2302
    // Label 3: @1295
2303
0
    GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1311), // Rule ID 18 //
2304
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
2305
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
2306
      // Combiner Rule #12: undef_to_int_zero; wip_match_opcode 'G_MUL'
2307
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner9),
2308
0
      GIR_Done,
2309
    // Label 100: @1311
2310
0
    GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1327), // Rule ID 166 //
2311
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
2312
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner80),
2313
      // Combiner Rule #103: constant_fold_binop; wip_match_opcode 'G_MUL'
2314
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
2315
0
      GIR_Done,
2316
    // Label 101: @1327
2317
0
    GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1343), // Rule ID 232 //
2318
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
2319
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner102),
2320
      // Combiner Rule #126: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
2321
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner57),
2322
0
      GIR_Done,
2323
    // Label 102: @1343
2324
0
    GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1390), // Rule ID 3 //
2325
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
2326
      // MIs[0] dst
2327
0
      GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/uint8_t(-1),
2328
      // MIs[0] x
2329
      // No operand predicates
2330
      // MIs[0] Operand 2
2331
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, uint8_t(-1),
2332
0
      GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/uint8_t(-1),
2333
0
      GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
2334
      // Combiner Rule #3: mul_by_neg_one
2335
0
      GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
2336
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
2337
0
      GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
2338
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // x
2339
0
      GIR_EraseFromParent, /*InsnID*/0,
2340
0
      GIR_Done,
2341
    // Label 103: @1390
2342
0
    GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1415), // Rule ID 56 //
2343
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
2344
      // MIs[0] dst
2345
      // No operand predicates
2346
      // MIs[0] lhs
2347
      // No operand predicates
2348
      // MIs[0] zero
2349
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2350
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
2351
      // Combiner Rule #27: binop_right_to_zero
2352
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
2353
0
      GIR_EraseFromParent, /*InsnID*/0,
2354
0
      GIR_Done,
2355
    // Label 104: @1415
2356
0
    GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1440), // Rule ID 61 //
2357
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
2358
      // MIs[0] dst
2359
      // No operand predicates
2360
      // MIs[0] x
2361
      // No operand predicates
2362
      // MIs[0] Operand 2
2363
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
2364
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2365
      // Combiner Rule #32: right_identity_one_int
2366
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2367
0
      GIR_EraseFromParent, /*InsnID*/0,
2368
0
      GIR_Done,
2369
    // Label 105: @1440
2370
0
    GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1456), // Rule ID 1 //
2371
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
2372
      // MIs[0] d
2373
      // No operand predicates
2374
      // MIs[0] op1
2375
      // No operand predicates
2376
      // MIs[0] op2
2377
      // No operand predicates
2378
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
2379
      // Combiner Rule #1: mul_to_shl
2380
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner1),
2381
0
      GIR_Done,
2382
    // Label 106: @1456
2383
0
    GIM_Reject,
2384
    // Label 4: @1457
2385
0
    GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1473), // Rule ID 52 //
2386
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
2387
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
2388
      // Combiner Rule #26: binop_left_to_zero; wip_match_opcode 'G_SDIV'
2389
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner14),
2390
0
      GIR_Done,
2391
    // Label 107: @1473
2392
0
    GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1489), // Rule ID 146 //
2393
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
2394
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner71),
2395
      // Combiner Rule #92: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
2396
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner47),
2397
0
      GIR_Done,
2398
    // Label 108: @1489
2399
0
    GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1505), // Rule ID 184 //
2400
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
2401
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner85),
2402
      // Combiner Rule #109: sdiv_by_const; wip_match_opcode 'G_SDIV'
2403
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner53),
2404
0
      GIR_Done,
2405
    // Label 109: @1505
2406
0
    GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1521), // Rule ID 207 //
2407
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
2408
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
2409
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_SDIV'
2410
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
2411
0
      GIR_Done,
2412
    // Label 110: @1521
2413
0
    GIM_Reject,
2414
    // Label 5: @1522
2415
0
    GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1538), // Rule ID 21 //
2416
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
2417
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
2418
      // Combiner Rule #14: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
2419
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner9),
2420
0
      GIR_Done,
2421
    // Label 111: @1538
2422
0
    GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1554), // Rule ID 53 //
2423
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
2424
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
2425
      // Combiner Rule #26: binop_left_to_zero; wip_match_opcode 'G_UDIV'
2426
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner14),
2427
0
      GIR_Done,
2428
    // Label 112: @1554
2429
0
    GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1570), // Rule ID 147 //
2430
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
2431
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner71),
2432
      // Combiner Rule #92: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
2433
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner47),
2434
0
      GIR_Done,
2435
    // Label 113: @1570
2436
0
    GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1586), // Rule ID 183 //
2437
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
2438
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner84),
2439
      // Combiner Rule #108: udiv_by_const; wip_match_opcode 'G_UDIV'
2440
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner52),
2441
0
      GIR_Done,
2442
    // Label 114: @1586
2443
0
    GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1602), // Rule ID 209 //
2444
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
2445
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
2446
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_UDIV'
2447
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
2448
0
      GIR_Done,
2449
    // Label 115: @1602
2450
0
    GIM_Reject,
2451
    // Label 6: @1603
2452
0
    GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1619), // Rule ID 54 //
2453
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
2454
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
2455
      // Combiner Rule #26: binop_left_to_zero; wip_match_opcode 'G_SREM'
2456
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner14),
2457
0
      GIR_Done,
2458
    // Label 116: @1619
2459
0
    GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1635), // Rule ID 148 //
2460
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
2461
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner71),
2462
      // Combiner Rule #92: div_rem_to_divrem; wip_match_opcode 'G_SREM'
2463
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner47),
2464
0
      GIR_Done,
2465
    // Label 117: @1635
2466
0
    GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1651), // Rule ID 208 //
2467
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
2468
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
2469
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_SREM'
2470
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
2471
0
      GIR_Done,
2472
    // Label 118: @1651
2473
0
    GIM_Reject,
2474
    // Label 7: @1652
2475
0
    GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1668), // Rule ID 22 //
2476
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
2477
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
2478
      // Combiner Rule #14: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
2479
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner9),
2480
0
      GIR_Done,
2481
    // Label 119: @1668
2482
0
    GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1684), // Rule ID 55 //
2483
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
2484
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
2485
      // Combiner Rule #26: binop_left_to_zero; wip_match_opcode 'G_UREM'
2486
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner14),
2487
0
      GIR_Done,
2488
    // Label 120: @1684
2489
0
    GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1700), // Rule ID 93 //
2490
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
2491
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner44),
2492
      // Combiner Rule #58: urem_pow2_to_mask; wip_match_opcode 'G_UREM'
2493
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner28),
2494
0
      GIR_Done,
2495
    // Label 121: @1700
2496
0
    GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1716), // Rule ID 149 //
2497
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
2498
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner71),
2499
      // Combiner Rule #92: div_rem_to_divrem; wip_match_opcode 'G_UREM'
2500
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner47),
2501
0
      GIR_Done,
2502
    // Label 122: @1716
2503
0
    GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1732), // Rule ID 210 //
2504
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
2505
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
2506
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_UREM'
2507
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
2508
0
      GIR_Done,
2509
    // Label 123: @1732
2510
0
    GIM_Reject,
2511
    // Label 8: @1733
2512
0
    GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1749), // Rule ID 13 //
2513
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
2514
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
2515
      // Combiner Rule #9: load_and_mask; wip_match_opcode 'G_AND'
2516
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
2517
0
      GIR_Done,
2518
    // Label 124: @1749
2519
0
    GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1765), // Rule ID 17 //
2520
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
2521
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
2522
      // Combiner Rule #12: undef_to_int_zero; wip_match_opcode 'G_AND'
2523
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner9),
2524
0
      GIR_Done,
2525
    // Label 125: @1765
2526
0
    GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1781), // Rule ID 74 //
2527
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
2528
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner30),
2529
      // Combiner Rule #43: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
2530
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner21),
2531
0
      GIR_Done,
2532
    // Label 126: @1781
2533
0
    GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1797), // Rule ID 86 //
2534
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
2535
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner38),
2536
      // Combiner Rule #51: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
2537
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
2538
0
      GIR_Done,
2539
    // Label 127: @1797
2540
0
    GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1813), // Rule ID 90 //
2541
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
2542
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner41),
2543
      // Combiner Rule #55: redundant_and; wip_match_opcode 'G_AND'
2544
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
2545
0
      GIR_Done,
2546
    // Label 128: @1813
2547
0
    GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1829), // Rule ID 118 //
2548
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
2549
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner60),
2550
      // Combiner Rule #81: overlapping_and; wip_match_opcode 'G_AND'
2551
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
2552
0
      GIR_Done,
2553
    // Label 129: @1829
2554
0
    GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1845), // Rule ID 159 //
2555
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
2556
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner77),
2557
      // Combiner Rule #100: bitfield_extract_from_and; wip_match_opcode 'G_AND'
2558
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
2559
0
      GIR_Done,
2560
    // Label 130: @1845
2561
0
    GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1861), // Rule ID 167 //
2562
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
2563
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner80),
2564
      // Combiner Rule #103: constant_fold_binop; wip_match_opcode 'G_AND'
2565
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
2566
0
      GIR_Done,
2567
    // Label 131: @1861
2568
0
    GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1877), // Rule ID 192 //
2569
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
2570
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner88),
2571
      // Combiner Rule #112: and_or_disjoint_mask; wip_match_opcode 'G_AND'
2572
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
2573
0
      GIR_Done,
2574
    // Label 132: @1877
2575
0
    GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1893), // Rule ID 204 //
2576
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
2577
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
2578
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_AND'
2579
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
2580
0
      GIR_Done,
2581
    // Label 133: @1893
2582
0
    GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1909), // Rule ID 233 //
2583
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
2584
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner102),
2585
      // Combiner Rule #126: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
2586
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner57),
2587
0
      GIR_Done,
2588
    // Label 134: @1909
2589
0
    GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1935), // Rule ID 50 //
2590
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
2591
      // MIs[0] dst
2592
      // No operand predicates
2593
      // MIs[0] src
2594
      // No operand predicates
2595
      // MIs[0] src
2596
0
      GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2597
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2598
      // Combiner Rule #25: binop_same_val @ [__binop_same_val_match_0[0]]
2599
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2600
0
      GIR_EraseFromParent, /*InsnID*/0,
2601
0
      GIR_Done,
2602
    // Label 135: @1935
2603
0
    GIM_Reject,
2604
    // Label 9: @1936
2605
0
    GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1952), // Rule ID 19 //
2606
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
2607
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
2608
      // Combiner Rule #13: undef_to_negative_one; wip_match_opcode 'G_OR'
2609
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner10),
2610
0
      GIR_Done,
2611
    // Label 136: @1952
2612
0
    GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(1968), // Rule ID 75 //
2613
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
2614
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner30),
2615
      // Combiner Rule #43: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
2616
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner21),
2617
0
      GIR_Done,
2618
    // Label 137: @1968
2619
0
    GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(1984), // Rule ID 92 //
2620
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
2621
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner43),
2622
      // Combiner Rule #57: redundant_or; wip_match_opcode 'G_OR'
2623
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
2624
0
      GIR_Done,
2625
    // Label 138: @1984
2626
0
    GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2000), // Rule ID 145 //
2627
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
2628
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner70),
2629
      // Combiner Rule #91: load_or_combine; wip_match_opcode 'G_OR'
2630
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
2631
0
      GIR_Done,
2632
    // Label 139: @2000
2633
0
    GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2016), // Rule ID 150 //
2634
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
2635
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner72),
2636
      // Combiner Rule #93: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
2637
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
2638
0
      GIR_Done,
2639
    // Label 140: @2016
2640
0
    GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2032), // Rule ID 168 //
2641
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
2642
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner80),
2643
      // Combiner Rule #103: constant_fold_binop; wip_match_opcode 'G_OR'
2644
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
2645
0
      GIR_Done,
2646
    // Label 141: @2032
2647
0
    GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2048), // Rule ID 205 //
2648
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
2649
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
2650
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_OR'
2651
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
2652
0
      GIR_Done,
2653
    // Label 142: @2048
2654
0
    GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2064), // Rule ID 234 //
2655
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
2656
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner102),
2657
      // Combiner Rule #126: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
2658
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner57),
2659
0
      GIR_Done,
2660
    // Label 143: @2064
2661
0
    GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2090), // Rule ID 51 //
2662
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
2663
      // MIs[0] dst
2664
      // No operand predicates
2665
      // MIs[0] src
2666
      // No operand predicates
2667
      // MIs[0] src
2668
0
      GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2669
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2670
      // Combiner Rule #25: binop_same_val @ [__binop_same_val_match_0[1]]
2671
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2672
0
      GIR_EraseFromParent, /*InsnID*/0,
2673
0
      GIR_Done,
2674
    // Label 144: @2090
2675
0
    GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2115), // Rule ID 42 //
2676
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
2677
      // MIs[0] dst
2678
      // No operand predicates
2679
      // MIs[0] lhs
2680
      // No operand predicates
2681
      // MIs[0] Operand 2
2682
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2683
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2684
      // Combiner Rule #24: right_identity_zero @ [__right_identity_zero_match_0[2]]
2685
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2686
0
      GIR_EraseFromParent, /*InsnID*/0,
2687
0
      GIR_Done,
2688
    // Label 145: @2115
2689
0
    GIM_Reject,
2690
    // Label 10: @2116
2691
0
    GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2132), // Rule ID 31 //
2692
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
2693
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
2694
      // Combiner Rule #17: propagate_undef_any_op; wip_match_opcode 'G_XOR'
2695
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
2696
0
      GIR_Done,
2697
    // Label 146: @2132
2698
0
    GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2148), // Rule ID 76 //
2699
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
2700
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner30),
2701
      // Combiner Rule #43: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
2702
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner21),
2703
0
      GIR_Done,
2704
    // Label 147: @2148
2705
0
    GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2164), // Rule ID 101 //
2706
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2707
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner50),
2708
      // Combiner Rule #64: not_cmp_fold; wip_match_opcode 'G_XOR'
2709
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner32),
2710
0
      GIR_Done,
2711
    // Label 148: @2164
2712
0
    GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2180), // Rule ID 133 //
2713
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
2714
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner66),
2715
      // Combiner Rule #87: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
2716
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner43),
2717
0
      GIR_Done,
2718
    // Label 149: @2180
2719
0
    GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2196), // Rule ID 169 //
2720
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
2721
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner80),
2722
      // Combiner Rule #103: constant_fold_binop; wip_match_opcode 'G_XOR'
2723
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
2724
0
      GIR_Done,
2725
    // Label 150: @2196
2726
0
    GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2212), // Rule ID 206 //
2727
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
2728
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
2729
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_XOR'
2730
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
2731
0
      GIR_Done,
2732
    // Label 151: @2212
2733
0
    GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2228), // Rule ID 235 //
2734
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
2735
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner102),
2736
      // Combiner Rule #126: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
2737
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner57),
2738
0
      GIR_Done,
2739
    // Label 152: @2228
2740
0
    GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2253), // Rule ID 43 //
2741
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
2742
      // MIs[0] dst
2743
      // No operand predicates
2744
      // MIs[0] lhs
2745
      // No operand predicates
2746
      // MIs[0] Operand 2
2747
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2748
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2749
      // Combiner Rule #24: right_identity_zero @ [__right_identity_zero_match_0[3]]
2750
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2751
0
      GIR_EraseFromParent, /*InsnID*/0,
2752
0
      GIR_Done,
2753
    // Label 153: @2253
2754
0
    GIM_Reject,
2755
    // Label 11: @2254
2756
0
    GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2270), // Rule ID 72 //
2757
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
2758
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
2759
      // Combiner Rule #41: extend_through_phis; wip_match_opcode 'G_PHI'
2760
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner19),
2761
0
      GIR_Done,
2762
    // Label 154: @2270
2763
0
    GIM_Reject,
2764
    // Label 12: @2271
2765
0
    GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2287), // Rule ID 240 //
2766
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
2767
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner106),
2768
      // Combiner Rule #130: fold_global_offset; wip_match_opcode 'G_GLOBAL_VALUE'
2769
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner60),
2770
0
      GIR_Done,
2771
    // Label 155: @2287
2772
0
    GIM_Reject,
2773
    // Label 13: @2288
2774
0
    GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2304), // Rule ID 36 //
2775
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
2776
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
2777
      // Combiner Rule #21: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
2778
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
2779
0
      GIR_Done,
2780
    // Label 156: @2304
2781
0
    GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2320), // Rule ID 103 //
2782
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
2783
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner52),
2784
      // Combiner Rule #66: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
2785
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner34),
2786
0
      GIR_Done,
2787
    // Label 157: @2320
2788
0
    GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2336), // Rule ID 104 //
2789
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
2790
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner53),
2791
      // Combiner Rule #67: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
2792
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner35),
2793
0
      GIR_Done,
2794
    // Label 158: @2336
2795
0
    GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2352), // Rule ID 105 //
2796
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
2797
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner54),
2798
      // Combiner Rule #68: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
2799
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner36),
2800
0
      GIR_Done,
2801
    // Label 159: @2352
2802
0
    GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2368), // Rule ID 106 //
2803
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
2804
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner55),
2805
      // Combiner Rule #69: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
2806
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner37),
2807
0
      GIR_Done,
2808
    // Label 160: @2368
2809
0
    GIM_Reject,
2810
    // Label 14: @2369
2811
0
    GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2385), // Rule ID 107 //
2812
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
2813
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner56),
2814
      // Combiner Rule #70: merge_unmerge; wip_match_opcode 'G_MERGE_VALUES'
2815
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
2816
0
      GIR_Done,
2817
    // Label 161: @2385
2818
0
    GIM_Reject,
2819
    // Label 15: @2386
2820
0
    GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2402), // Rule ID 9 //
2821
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
2822
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
2823
      // Combiner Rule #7: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
2824
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner5),
2825
0
      GIR_Done,
2826
    // Label 162: @2402
2827
0
    GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2418), // Rule ID 66 //
2828
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
2829
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
2830
      // Combiner Rule #35: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
2831
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
2832
0
      GIR_Done,
2833
    // Label 163: @2418
2834
0
    GIM_Reject,
2835
    // Label 16: @2419
2836
0
    GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2435), // Rule ID 65 //
2837
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
2838
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
2839
      // Combiner Rule #35: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
2840
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
2841
0
      GIR_Done,
2842
    // Label 164: @2435
2843
0
    GIM_Reject,
2844
    // Label 17: @2436
2845
0
    GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2462), // Rule ID 58 //
2846
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
2847
      // MIs[0] dst
2848
      // No operand predicates
2849
      // MIs[0] t
2850
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2851
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
2852
      // MIs[1] ptr
2853
      // No operand predicates
2854
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
2855
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
2856
      // Combiner Rule #29: i2p_to_p2i
2857
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16),
2858
0
      GIR_Done,
2859
    // Label 165: @2462
2860
0
    GIM_Reject,
2861
    // Label 18: @2463
2862
0
    GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2479), // Rule ID 57 //
2863
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
2864
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
2865
      // Combiner Rule #28: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
2866
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner15),
2867
0
      GIR_Done,
2868
    // Label 166: @2479
2869
0
    GIM_Reject,
2870
    // Label 19: @2480
2871
0
    GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2506), // Rule ID 69 //
2872
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
2873
      // MIs[0] dst
2874
      // No operand predicates
2875
      // MIs[0] src1
2876
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2877
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
2878
      // MIs[1] src0
2879
      // No operand predicates
2880
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26),
2881
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
2882
      // Combiner Rule #38: bitcast_bitcast_fold
2883
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner18),
2884
0
      GIR_Done,
2885
    // Label 167: @2506
2886
0
    GIM_Reject,
2887
    // Label 20: @2507
2888
0
    GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2538), // Rule ID 4 //
2889
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
2890
      // MIs[0] dst
2891
      // No operand predicates
2892
      // MIs[0] src
2893
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2894
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
2895
      // MIs[1] __idempotent_prop_match_0.x
2896
      // No operand predicates
2897
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2898
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
2899
      // Combiner Rule #4: idempotent_prop @ [__idempotent_prop_match_0[0]]
2900
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2901
0
      GIR_EraseFromParent, /*InsnID*/0,
2902
0
      GIR_Done,
2903
    // Label 168: @2538
2904
0
    GIM_Reject,
2905
    // Label 21: @2539
2906
0
    GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2555), // Rule ID 10 //
2907
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
2908
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
2909
      // Combiner Rule #8: extending_loads; wip_match_opcode 'G_LOAD'
2910
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner6),
2911
0
      GIR_Done,
2912
    // Label 169: @2555
2913
0
    GIM_Reject,
2914
    // Label 22: @2556
2915
0
    GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2572), // Rule ID 11 //
2916
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
2917
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
2918
      // Combiner Rule #8: extending_loads; wip_match_opcode 'G_SEXTLOAD'
2919
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner6),
2920
0
      GIR_Done,
2921
    // Label 170: @2572
2922
0
    GIM_Reject,
2923
    // Label 23: @2573
2924
0
    GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2589), // Rule ID 12 //
2925
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
2926
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
2927
      // Combiner Rule #8: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
2928
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner6),
2929
0
      GIR_Done,
2930
    // Label 171: @2589
2931
0
    GIM_Reject,
2932
    // Label 24: @2590
2933
0
    GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2606), // Rule ID 35 //
2934
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
2935
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
2936
      // Combiner Rule #20: erase_undef_store; wip_match_opcode 'G_STORE'
2937
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner12),
2938
0
      GIR_Done,
2939
    // Label 172: @2606
2940
0
    GIM_Reject,
2941
    // Label 25: @2607
2942
0
    GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2623), // Rule ID 59 //
2943
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
2944
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21),
2945
      // Combiner Rule #30: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
2946
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
2947
0
      GIR_Done,
2948
    // Label 173: @2623
2949
0
    GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2639), // Rule ID 98 //
2950
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
2951
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
2952
      // Combiner Rule #63: ext_ext_fold; wip_match_opcode 'G_ANYEXT'
2953
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner31),
2954
0
      GIR_Done,
2955
    // Label 174: @2639
2956
0
    GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2655), // Rule ID 181 //
2957
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
2958
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner83),
2959
      // Combiner Rule #106: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
2960
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
2961
0
      GIR_Done,
2962
    // Label 175: @2655
2963
0
    GIM_Reject,
2964
    // Label 26: @2656
2965
0
    GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2672), // Rule ID 32 //
2966
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
2967
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
2968
      // Combiner Rule #17: propagate_undef_any_op; wip_match_opcode 'G_TRUNC'
2969
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
2970
0
      GIR_Done,
2971
    // Label 176: @2672
2972
0
    GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(2688), // Rule ID 67 //
2973
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
2974
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
2975
      // Combiner Rule #36: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
2976
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
2977
0
      GIR_Done,
2978
    // Label 177: @2688
2979
0
    GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(2704), // Rule ID 68 //
2980
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
2981
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner25),
2982
      // Combiner Rule #37: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
2983
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
2984
0
      GIR_Done,
2985
    // Label 178: @2704
2986
0
    GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(2720), // Rule ID 108 //
2987
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
2988
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner57),
2989
      // Combiner Rule #71: trunc_ext_fold; wip_match_opcode 'G_TRUNC'
2990
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner38),
2991
0
      GIR_Done,
2992
    // Label 179: @2720
2993
0
    GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(2736), // Rule ID 109 //
2994
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
2995
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner58),
2996
      // Combiner Rule #72: trunc_shift; wip_match_opcode 'G_TRUNC'
2997
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner39),
2998
0
      GIR_Done,
2999
    // Label 180: @2736
3000
0
    GIM_Reject,
3001
    // Label 27: @2737
3002
0
    GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(2753), // Rule ID 238 //
3003
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
3004
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner104),
3005
      // Combiner Rule #128: fconstant_to_constant; wip_match_opcode 'G_FCONSTANT'
3006
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner58),
3007
0
      GIR_Done,
3008
    // Label 181: @2753
3009
0
    GIM_Reject,
3010
    // Label 28: @2754
3011
0
    GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(2770), // Rule ID 99 //
3012
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
3013
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
3014
      // Combiner Rule #63: ext_ext_fold; wip_match_opcode 'G_SEXT'
3015
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner31),
3016
0
      GIR_Done,
3017
    // Label 182: @2770
3018
0
    GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(2786), // Rule ID 180 //
3019
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3020
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner83),
3021
      // Combiner Rule #106: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
3022
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
3023
0
      GIR_Done,
3024
    // Label 183: @2786
3025
0
    GIM_Reject,
3026
    // Label 29: @2787
3027
0
    GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(2803), // Rule ID 84 //
3028
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
3029
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner36),
3030
      // Combiner Rule #49: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
3031
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25),
3032
0
      GIR_Done,
3033
    // Label 184: @2803
3034
0
    GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(2819), // Rule ID 91 //
3035
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
3036
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner42),
3037
      // Combiner Rule #56: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
3038
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner14),
3039
0
      GIR_Done,
3040
    // Label 185: @2819
3041
0
    GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(2835), // Rule ID 158 //
3042
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
3043
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner76),
3044
      // Combiner Rule #99: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
3045
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3046
0
      GIR_Done,
3047
    // Label 186: @2835
3048
0
    GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(2851), // Rule ID 97 //
3049
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
3050
      // MIs[0] dst
3051
      // No operand predicates
3052
      // MIs[0] src
3053
      // No operand predicates
3054
      // MIs[0] imm
3055
      // No operand predicates
3056
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
3057
      // Combiner Rule #62: sext_inreg_to_zext_inreg
3058
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner30),
3059
0
      GIR_Done,
3060
    // Label 187: @2851
3061
0
    GIM_Reject,
3062
    // Label 30: @2852
3063
0
    GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(2868), // Rule ID 94 //
3064
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
3065
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner45),
3066
      // Combiner Rule #59: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
3067
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
3068
0
      GIR_Done,
3069
    // Label 188: @2868
3070
0
    GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(2884), // Rule ID 100 //
3071
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
3072
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
3073
      // Combiner Rule #63: ext_ext_fold; wip_match_opcode 'G_ZEXT'
3074
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner31),
3075
0
      GIR_Done,
3076
    // Label 189: @2884
3077
0
    GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(2900), // Rule ID 179 //
3078
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3079
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner83),
3080
      // Combiner Rule #106: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
3081
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
3082
0
      GIR_Done,
3083
    // Label 190: @2900
3084
0
    GIM_Reject,
3085
    // Label 31: @2901
3086
0
    GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(2917), // Rule ID 20 //
3087
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
3088
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
3089
      // Combiner Rule #14: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
3090
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner9),
3091
0
      GIR_Done,
3092
    // Label 191: @2917
3093
0
    GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(2933), // Rule ID 23 //
3094
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
3095
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
3096
      // Combiner Rule #15: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
3097
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
3098
0
      GIR_Done,
3099
    // Label 192: @2933
3100
0
    GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(2949), // Rule ID 77 //
3101
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
3102
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
3103
      // Combiner Rule #44: shifts_too_big; wip_match_opcode 'G_SHL'
3104
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
3105
0
      GIR_Done,
3106
    // Label 193: @2949
3107
0
    GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(2965), // Rule ID 135 //
3108
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
3109
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner68),
3110
      // Combiner Rule #89: shift_immed_chain; wip_match_opcode 'G_SHL'
3111
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner45),
3112
0
      GIR_Done,
3113
    // Label 194: @2965
3114
0
    GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(2981), // Rule ID 140 //
3115
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
3116
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner69),
3117
      // Combiner Rule #90: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
3118
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner46),
3119
0
      GIR_Done,
3120
    // Label 195: @2981
3121
0
    GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(2997), // Rule ID 157 //
3122
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
3123
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner75),
3124
      // Combiner Rule #98: commute_shift; wip_match_opcode 'G_SHL'
3125
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3126
0
      GIR_Done,
3127
    // Label 196: @2997
3128
0
    GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3013), // Rule ID 170 //
3129
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
3130
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner80),
3131
      // Combiner Rule #103: constant_fold_binop; wip_match_opcode 'G_SHL'
3132
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
3133
0
      GIR_Done,
3134
    // Label 197: @3013
3135
0
    GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3029), // Rule ID 213 //
3136
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
3137
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
3138
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_SHL'
3139
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
3140
0
      GIR_Done,
3141
    // Label 198: @3029
3142
0
    GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3054), // Rule ID 44 //
3143
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
3144
      // MIs[0] dst
3145
      // No operand predicates
3146
      // MIs[0] lhs
3147
      // No operand predicates
3148
      // MIs[0] Operand 2
3149
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3150
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3151
      // Combiner Rule #24: right_identity_zero @ [__right_identity_zero_match_0[4]]
3152
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3153
0
      GIR_EraseFromParent, /*InsnID*/0,
3154
0
      GIR_Done,
3155
    // Label 199: @3054
3156
0
    GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3070), // Rule ID 85 //
3157
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
3158
      // MIs[0] dst
3159
      // No operand predicates
3160
      // MIs[0] src0
3161
      // No operand predicates
3162
      // MIs[0] src1
3163
      // No operand predicates
3164
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner37),
3165
      // Combiner Rule #50: reduce_shl_of_extend
3166
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner26),
3167
0
      GIR_Done,
3168
    // Label 200: @3070
3169
0
    GIM_Reject,
3170
    // Label 32: @3071
3171
0
    GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3087), // Rule ID 25 //
3172
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
3173
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
3174
      // Combiner Rule #15: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
3175
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
3176
0
      GIR_Done,
3177
    // Label 201: @3087
3178
0
    GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3103), // Rule ID 79 //
3179
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
3180
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
3181
      // Combiner Rule #44: shifts_too_big; wip_match_opcode 'G_LSHR'
3182
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
3183
0
      GIR_Done,
3184
    // Label 202: @3103
3185
0
    GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3119), // Rule ID 137 //
3186
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
3187
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner68),
3188
      // Combiner Rule #89: shift_immed_chain; wip_match_opcode 'G_LSHR'
3189
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner45),
3190
0
      GIR_Done,
3191
    // Label 203: @3119
3192
0
    GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3135), // Rule ID 142 //
3193
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
3194
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner69),
3195
      // Combiner Rule #90: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
3196
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner46),
3197
0
      GIR_Done,
3198
    // Label 204: @3135
3199
0
    GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3151), // Rule ID 161 //
3200
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
3201
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner78),
3202
      // Combiner Rule #101: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
3203
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3204
0
      GIR_Done,
3205
    // Label 205: @3151
3206
0
    GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3167), // Rule ID 163 //
3207
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
3208
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner79),
3209
      // Combiner Rule #102: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
3210
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3211
0
      GIR_Done,
3212
    // Label 206: @3167
3213
0
    GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3183), // Rule ID 171 //
3214
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
3215
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner80),
3216
      // Combiner Rule #103: constant_fold_binop; wip_match_opcode 'G_LSHR'
3217
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
3218
0
      GIR_Done,
3219
    // Label 207: @3183
3220
0
    GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3199), // Rule ID 211 //
3221
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
3222
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
3223
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_LSHR'
3224
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
3225
0
      GIR_Done,
3226
    // Label 208: @3199
3227
0
    GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3224), // Rule ID 46 //
3228
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
3229
      // MIs[0] dst
3230
      // No operand predicates
3231
      // MIs[0] lhs
3232
      // No operand predicates
3233
      // MIs[0] Operand 2
3234
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3235
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3236
      // Combiner Rule #24: right_identity_zero @ [__right_identity_zero_match_0[6]]
3237
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3238
0
      GIR_EraseFromParent, /*InsnID*/0,
3239
0
      GIR_Done,
3240
    // Label 209: @3224
3241
0
    GIM_Reject,
3242
    // Label 33: @3225
3243
0
    GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3241), // Rule ID 24 //
3244
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
3245
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
3246
      // Combiner Rule #15: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
3247
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
3248
0
      GIR_Done,
3249
    // Label 210: @3241
3250
0
    GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3257), // Rule ID 78 //
3251
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
3252
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
3253
      // Combiner Rule #44: shifts_too_big; wip_match_opcode 'G_ASHR'
3254
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
3255
0
      GIR_Done,
3256
    // Label 211: @3257
3257
0
    GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3273), // Rule ID 83 //
3258
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
3259
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner35),
3260
      // Combiner Rule #48: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
3261
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner24),
3262
0
      GIR_Done,
3263
    // Label 212: @3273
3264
0
    GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3289), // Rule ID 136 //
3265
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
3266
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner68),
3267
      // Combiner Rule #89: shift_immed_chain; wip_match_opcode 'G_ASHR'
3268
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner45),
3269
0
      GIR_Done,
3270
    // Label 213: @3289
3271
0
    GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3305), // Rule ID 141 //
3272
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
3273
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner69),
3274
      // Combiner Rule #90: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
3275
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner46),
3276
0
      GIR_Done,
3277
    // Label 214: @3305
3278
0
    GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3321), // Rule ID 160 //
3279
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
3280
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner78),
3281
      // Combiner Rule #101: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
3282
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3283
0
      GIR_Done,
3284
    // Label 215: @3321
3285
0
    GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3337), // Rule ID 162 //
3286
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
3287
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner79),
3288
      // Combiner Rule #102: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
3289
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3290
0
      GIR_Done,
3291
    // Label 216: @3337
3292
0
    GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3353), // Rule ID 172 //
3293
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
3294
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner80),
3295
      // Combiner Rule #103: constant_fold_binop; wip_match_opcode 'G_ASHR'
3296
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner50),
3297
0
      GIR_Done,
3298
    // Label 217: @3353
3299
0
    GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3369), // Rule ID 212 //
3300
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
3301
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
3302
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_ASHR'
3303
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
3304
0
      GIR_Done,
3305
    // Label 218: @3369
3306
0
    GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3394), // Rule ID 45 //
3307
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
3308
      // MIs[0] dst
3309
      // No operand predicates
3310
      // MIs[0] lhs
3311
      // No operand predicates
3312
      // MIs[0] Operand 2
3313
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3314
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3315
      // Combiner Rule #24: right_identity_zero @ [__right_identity_zero_match_0[5]]
3316
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3317
0
      GIR_EraseFromParent, /*InsnID*/0,
3318
0
      GIR_Done,
3319
    // Label 219: @3394
3320
0
    GIM_Reject,
3321
    // Label 34: @3395
3322
0
    GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3411), // Rule ID 151 //
3323
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
3324
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner73),
3325
      // Combiner Rule #94: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
3326
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner48),
3327
0
      GIR_Done,
3328
    // Label 220: @3411
3329
0
    GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3427), // Rule ID 155 //
3330
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
3331
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner74),
3332
      // Combiner Rule #97: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
3333
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner49),
3334
0
      GIR_Done,
3335
    // Label 221: @3427
3336
0
    GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3454), // Rule ID 154 //
3337
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
3338
      // MIs[0] x
3339
      // No operand predicates
3340
      // MIs[0] y
3341
      // No operand predicates
3342
      // MIs[0] z
3343
      // No operand predicates
3344
      // MIs[0] Operand 3
3345
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
3346
      // Combiner Rule #96: funnel_shift_left_zero
3347
0
      GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
3348
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // x
3349
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // y
3350
0
      GIR_EraseFromParent, /*InsnID*/0,
3351
0
      GIR_Done,
3352
    // Label 222: @3454
3353
0
    GIM_Reject,
3354
    // Label 35: @3455
3355
0
    GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(3471), // Rule ID 152 //
3356
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
3357
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner73),
3358
      // Combiner Rule #94: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
3359
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner48),
3360
0
      GIR_Done,
3361
    // Label 223: @3471
3362
0
    GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(3487), // Rule ID 156 //
3363
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
3364
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner74),
3365
      // Combiner Rule #97: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
3366
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner49),
3367
0
      GIR_Done,
3368
    // Label 224: @3487
3369
0
    GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(3514), // Rule ID 153 //
3370
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
3371
      // MIs[0] x
3372
      // No operand predicates
3373
      // MIs[0] y
3374
      // No operand predicates
3375
      // MIs[0] z
3376
      // No operand predicates
3377
      // MIs[0] Operand 3
3378
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
3379
      // Combiner Rule #95: funnel_shift_right_zero
3380
0
      GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
3381
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // x
3382
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // z
3383
0
      GIR_EraseFromParent, /*InsnID*/0,
3384
0
      GIR_Done,
3385
    // Label 225: @3514
3386
0
    GIM_Reject,
3387
    // Label 36: @3515
3388
0
    GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(3540), // Rule ID 49 //
3389
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
3390
      // MIs[0] dst
3391
      // No operand predicates
3392
      // MIs[0] lhs
3393
      // No operand predicates
3394
      // MIs[0] Operand 2
3395
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3396
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3397
      // Combiner Rule #24: right_identity_zero @ [__right_identity_zero_match_0[9]]
3398
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3399
0
      GIR_EraseFromParent, /*InsnID*/0,
3400
0
      GIR_Done,
3401
    // Label 226: @3540
3402
0
    GIM_Reject,
3403
    // Label 37: @3541
3404
0
    GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(3566), // Rule ID 48 //
3405
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
3406
      // MIs[0] dst
3407
      // No operand predicates
3408
      // MIs[0] lhs
3409
      // No operand predicates
3410
      // MIs[0] Operand 2
3411
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3412
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3413
      // Combiner Rule #24: right_identity_zero @ [__right_identity_zero_match_0[8]]
3414
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3415
0
      GIR_EraseFromParent, /*InsnID*/0,
3416
0
      GIR_Done,
3417
    // Label 227: @3566
3418
0
    GIM_Reject,
3419
    // Label 38: @3567
3420
0
    GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(3583), // Rule ID 95 //
3421
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
3422
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner46),
3423
      // Combiner Rule #60: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
3424
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner29),
3425
0
      GIR_Done,
3426
    // Label 228: @3583
3427
0
    GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(3599), // Rule ID 96 //
3428
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
3429
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner47),
3430
      // Combiner Rule #61: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
3431
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3432
0
      GIR_Done,
3433
    // Label 229: @3599
3434
0
    GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(3615), // Rule ID 229 //
3435
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
3436
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner100),
3437
      // Combiner Rule #124: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
3438
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3439
0
      GIR_Done,
3440
    // Label 230: @3615
3441
0
    GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(3631), // Rule ID 239 //
3442
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
3443
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner105),
3444
      // Combiner Rule #129: icmp_redundant_trunc; wip_match_opcode 'G_ICMP'
3445
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner59),
3446
0
      GIR_Done,
3447
    // Label 231: @3631
3448
0
    GIM_Reject,
3449
    // Label 39: @3632
3450
0
    GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(3648), // Rule ID 39 //
3451
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
3452
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
3453
      // Combiner Rule #23: select_same_val; wip_match_opcode 'G_SELECT'
3454
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner13),
3455
0
      GIR_Done,
3456
    // Label 232: @3648
3457
0
    GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(3664), // Rule ID 88 //
3458
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
3459
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
3460
      // Combiner Rule #53: select_constant_cmp; wip_match_opcode 'G_SELECT'
3461
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
3462
0
      GIR_Done,
3463
    // Label 233: @3664
3464
0
    GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(3680), // Rule ID 89 //
3465
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
3466
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40),
3467
      // Combiner Rule #54: match_selects; wip_match_opcode 'G_SELECT'
3468
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3469
0
      GIR_Done,
3470
    // Label 234: @3680
3471
0
    GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(3696), // Rule ID 228 //
3472
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
3473
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner99),
3474
      // Combiner Rule #123: select_to_minmax; wip_match_opcode 'G_SELECT'
3475
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3476
0
      GIR_Done,
3477
    // Label 235: @3696
3478
0
    GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(3727), // Rule ID 87 //
3479
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
3480
      // MIs[0] dst
3481
      // No operand predicates
3482
      // MIs[0] undef
3483
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3484
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3485
      // MIs[0] x
3486
      // No operand predicates
3487
      // MIs[0] y
3488
      // No operand predicates
3489
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
3490
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
3491
      // Combiner Rule #52: select_undef_cmp
3492
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
3493
0
      GIR_EraseFromParent, /*InsnID*/0,
3494
0
      GIR_Done,
3495
    // Label 236: @3727
3496
0
    GIM_Reject,
3497
    // Label 40: @3728
3498
0
    GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(3744), // Rule ID 123 //
3499
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
3500
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner63),
3501
      // Combiner Rule #84: addo_by_0; wip_match_opcode 'G_UADDO'
3502
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3503
0
      GIR_Done,
3504
    // Label 237: @3744
3505
0
    GIM_Reject,
3506
    // Label 41: @3745
3507
0
    GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(3761), // Rule ID 125 //
3508
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
3509
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner64),
3510
      // Combiner Rule #85: adde_to_addo; wip_match_opcode 'G_UADDE'
3511
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3512
0
      GIR_Done,
3513
    // Label 238: @3761
3514
0
    GIM_Reject,
3515
    // Label 42: @3762
3516
0
    GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(3778), // Rule ID 127 //
3517
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
3518
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner64),
3519
      // Combiner Rule #85: adde_to_addo; wip_match_opcode 'G_USUBE'
3520
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3521
0
      GIR_Done,
3522
    // Label 239: @3778
3523
0
    GIM_Reject,
3524
    // Label 43: @3779
3525
0
    GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(3795), // Rule ID 124 //
3526
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
3527
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner63),
3528
      // Combiner Rule #84: addo_by_0; wip_match_opcode 'G_SADDO'
3529
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3530
0
      GIR_Done,
3531
    // Label 240: @3795
3532
0
    GIM_Reject,
3533
    // Label 44: @3796
3534
0
    GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(3812), // Rule ID 126 //
3535
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
3536
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner64),
3537
      // Combiner Rule #85: adde_to_addo; wip_match_opcode 'G_SADDE'
3538
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3539
0
      GIR_Done,
3540
    // Label 241: @3812
3541
0
    GIM_Reject,
3542
    // Label 45: @3813
3543
0
    GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(3829), // Rule ID 128 //
3544
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
3545
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner64),
3546
      // Combiner Rule #85: adde_to_addo; wip_match_opcode 'G_SSUBE'
3547
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3548
0
      GIR_Done,
3549
    // Label 242: @3829
3550
0
    GIM_Reject,
3551
    // Label 46: @3830
3552
0
    GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(3846), // Rule ID 119 //
3553
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
3554
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner61),
3555
      // Combiner Rule #82: mulo_by_2; wip_match_opcode 'G_UMULO'
3556
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3557
0
      GIR_Done,
3558
    // Label 243: @3846
3559
0
    GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(3862), // Rule ID 121 //
3560
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
3561
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner62),
3562
      // Combiner Rule #83: mulo_by_0; wip_match_opcode 'G_UMULO'
3563
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3564
0
      GIR_Done,
3565
    // Label 244: @3862
3566
0
    GIM_Reject,
3567
    // Label 47: @3863
3568
0
    GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(3879), // Rule ID 120 //
3569
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
3570
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner61),
3571
      // Combiner Rule #82: mulo_by_2; wip_match_opcode 'G_SMULO'
3572
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3573
0
      GIR_Done,
3574
    // Label 245: @3879
3575
0
    GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(3895), // Rule ID 122 //
3576
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
3577
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner62),
3578
      // Combiner Rule #83: mulo_by_0; wip_match_opcode 'G_SMULO'
3579
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3580
0
      GIR_Done,
3581
    // Label 246: @3895
3582
0
    GIM_Reject,
3583
    // Label 48: @3896
3584
0
    GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(3912), // Rule ID 185 //
3585
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
3586
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner86),
3587
      // Combiner Rule #110: mulh_to_lshr; wip_match_opcode 'G_UMULH'
3588
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner54),
3589
0
      GIR_Done,
3590
    // Label 247: @3912
3591
0
    GIM_Reject,
3592
    // Label 49: @3913
3593
0
    GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(3929), // Rule ID 139 //
3594
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
3595
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner68),
3596
      // Combiner Rule #89: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
3597
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner45),
3598
0
      GIR_Done,
3599
    // Label 248: @3929
3600
0
    GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(3945), // Rule ID 143 //
3601
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
3602
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner69),
3603
      // Combiner Rule #90: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
3604
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner46),
3605
0
      GIR_Done,
3606
    // Label 249: @3945
3607
0
    GIM_Reject,
3608
    // Label 50: @3946
3609
0
    GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(3962), // Rule ID 138 //
3610
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
3611
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner68),
3612
      // Combiner Rule #89: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
3613
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner45),
3614
0
      GIR_Done,
3615
    // Label 250: @3962
3616
0
    GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(3978), // Rule ID 144 //
3617
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
3618
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner69),
3619
      // Combiner Rule #90: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
3620
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner46),
3621
0
      GIR_Done,
3622
    // Label 251: @3978
3623
0
    GIM_Reject,
3624
    // Label 51: @3979
3625
0
    GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(3995), // Rule ID 173 //
3626
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
3627
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner81),
3628
      // Combiner Rule #104: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
3629
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner51),
3630
0
      GIR_Done,
3631
    // Label 252: @3995
3632
0
    GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4011), // Rule ID 186 //
3633
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
3634
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner87),
3635
      // Combiner Rule #111: redundant_neg_operands; wip_match_opcode 'G_FADD'
3636
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3637
0
      GIR_Done,
3638
    // Label 253: @4011
3639
0
    GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4027), // Rule ID 193 //
3640
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
3641
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner89),
3642
      // Combiner Rule #113: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
3643
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3644
0
      GIR_Done,
3645
    // Label 254: @4027
3646
0
    GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4043), // Rule ID 194 //
3647
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
3648
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner90),
3649
      // Combiner Rule #114: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
3650
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3651
0
      GIR_Done,
3652
    // Label 255: @4043
3653
0
    GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4059), // Rule ID 195 //
3654
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
3655
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner91),
3656
      // Combiner Rule #115: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
3657
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3658
0
      GIR_Done,
3659
    // Label 256: @4059
3660
0
    GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4075), // Rule ID 196 //
3661
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
3662
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner92),
3663
      // Combiner Rule #116: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
3664
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3665
0
      GIR_Done,
3666
    // Label 257: @4075
3667
0
    GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4091), // Rule ID 219 //
3668
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
3669
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
3670
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_FADD'
3671
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
3672
0
      GIR_Done,
3673
    // Label 258: @4091
3674
0
    GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4107), // Rule ID 236 //
3675
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
3676
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner103),
3677
      // Combiner Rule #127: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
3678
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner57),
3679
0
      GIR_Done,
3680
    // Label 259: @4107
3681
0
    GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4132), // Rule ID 71 //
3682
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
3683
      // MIs[0] dst
3684
      // No operand predicates
3685
      // MIs[0] x
3686
      // No operand predicates
3687
      // MIs[0] y
3688
      // No operand predicates
3689
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
3690
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3691
      // Combiner Rule #40: right_identity_neg_zero_fp
3692
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3693
0
      GIR_EraseFromParent, /*InsnID*/0,
3694
0
      GIR_Done,
3695
    // Label 260: @4132
3696
0
    GIM_Reject,
3697
    // Label 52: @4133
3698
0
    GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4149), // Rule ID 174 //
3699
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
3700
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner81),
3701
      // Combiner Rule #104: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
3702
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner51),
3703
0
      GIR_Done,
3704
    // Label 261: @4149
3705
0
    GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4165), // Rule ID 187 //
3706
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
3707
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner87),
3708
      // Combiner Rule #111: redundant_neg_operands; wip_match_opcode 'G_FSUB'
3709
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3710
0
      GIR_Done,
3711
    // Label 262: @4165
3712
0
    GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4181), // Rule ID 197 //
3713
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
3714
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner93),
3715
      // Combiner Rule #117: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
3716
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3717
0
      GIR_Done,
3718
    // Label 263: @4181
3719
0
    GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4197), // Rule ID 198 //
3720
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
3721
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner94),
3722
      // Combiner Rule #118: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
3723
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3724
0
      GIR_Done,
3725
    // Label 264: @4197
3726
0
    GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4213), // Rule ID 199 //
3727
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
3728
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner95),
3729
      // Combiner Rule #119: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
3730
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3731
0
      GIR_Done,
3732
    // Label 265: @4213
3733
0
    GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4229), // Rule ID 200 //
3734
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
3735
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner96),
3736
      // Combiner Rule #120: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
3737
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
3738
0
      GIR_Done,
3739
    // Label 266: @4229
3740
0
    GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4245), // Rule ID 220 //
3741
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
3742
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
3743
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_FSUB'
3744
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
3745
0
      GIR_Done,
3746
    // Label 267: @4245
3747
0
    GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(4261), // Rule ID 230 //
3748
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
3749
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner101),
3750
      // Combiner Rule #125: fsub_to_fneg; wip_match_opcode 'G_FSUB'
3751
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner56),
3752
0
      GIR_Done,
3753
    // Label 268: @4261
3754
0
    GIM_Reject,
3755
    // Label 53: @4262
3756
0
    GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(4278), // Rule ID 175 //
3757
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
3758
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner81),
3759
      // Combiner Rule #104: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
3760
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner51),
3761
0
      GIR_Done,
3762
    // Label 269: @4278
3763
0
    GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(4294), // Rule ID 188 //
3764
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
3765
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner87),
3766
      // Combiner Rule #111: redundant_neg_operands; wip_match_opcode 'G_FMUL'
3767
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3768
0
      GIR_Done,
3769
    // Label 270: @4294
3770
0
    GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(4310), // Rule ID 218 //
3771
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
3772
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
3773
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_FMUL'
3774
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
3775
0
      GIR_Done,
3776
    // Label 271: @4310
3777
0
    GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4326), // Rule ID 237 //
3778
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
3779
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner103),
3780
      // Combiner Rule #127: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
3781
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner57),
3782
0
      GIR_Done,
3783
    // Label 272: @4326
3784
0
    GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(4351), // Rule ID 62 //
3785
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
3786
      // MIs[0] dst
3787
      // No operand predicates
3788
      // MIs[0] x
3789
      // No operand predicates
3790
      // MIs[0] y
3791
      // No operand predicates
3792
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
3793
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3794
      // Combiner Rule #33: right_identity_one_fp
3795
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3796
0
      GIR_EraseFromParent, /*InsnID*/0,
3797
0
      GIR_Done,
3798
    // Label 273: @4351
3799
0
    GIM_Reject,
3800
    // Label 54: @4352
3801
0
    GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(4368), // Rule ID 178 //
3802
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3803
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner82),
3804
      // Combiner Rule #105: constant_fold_fma; wip_match_opcode 'G_FMA'
3805
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner51),
3806
0
      GIR_Done,
3807
    // Label 274: @4368
3808
0
    GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(4384), // Rule ID 191 //
3809
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
3810
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner87),
3811
      // Combiner Rule #111: redundant_neg_operands; wip_match_opcode 'G_FMA'
3812
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3813
0
      GIR_Done,
3814
    // Label 275: @4384
3815
0
    GIM_Reject,
3816
    // Label 55: @4385
3817
0
    GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(4401), // Rule ID 177 //
3818
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3819
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner82),
3820
      // Combiner Rule #105: constant_fold_fma; wip_match_opcode 'G_FMAD'
3821
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner51),
3822
0
      GIR_Done,
3823
    // Label 276: @4401
3824
0
    GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(4417), // Rule ID 190 //
3825
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
3826
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner87),
3827
      // Combiner Rule #111: redundant_neg_operands; wip_match_opcode 'G_FMAD'
3828
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3829
0
      GIR_Done,
3830
    // Label 277: @4417
3831
0
    GIM_Reject,
3832
    // Label 56: @4418
3833
0
    GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(4434), // Rule ID 176 //
3834
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
3835
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner81),
3836
      // Combiner Rule #104: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
3837
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner51),
3838
0
      GIR_Done,
3839
    // Label 278: @4434
3840
0
    GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(4450), // Rule ID 189 //
3841
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
3842
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner87),
3843
      // Combiner Rule #111: redundant_neg_operands; wip_match_opcode 'G_FDIV'
3844
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
3845
0
      GIR_Done,
3846
    // Label 279: @4450
3847
0
    GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(4466), // Rule ID 221 //
3848
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
3849
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
3850
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_FDIV'
3851
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
3852
0
      GIR_Done,
3853
    // Label 280: @4466
3854
0
    GIM_Reject,
3855
    // Label 57: @4467
3856
0
    GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(4483), // Rule ID 222 //
3857
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
3858
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
3859
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_FREM'
3860
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
3861
0
      GIR_Done,
3862
    // Label 281: @4483
3863
0
    GIM_Reject,
3864
    // Label 58: @4484
3865
0
    GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(4506), // Rule ID 113 //
3866
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
3867
      // MIs[0] dst
3868
      // No operand predicates
3869
      // MIs[0] src0
3870
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3871
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3872
      // MIs[1] cst
3873
      // No operand predicates
3874
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
3875
      // Combiner Rule #76: constant_fold_flog2
3876
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner40),
3877
0
      GIR_Done,
3878
    // Label 282: @4506
3879
0
    GIM_Reject,
3880
    // Label 59: @4507
3881
0
    GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(4529), // Rule ID 110 //
3882
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
3883
      // MIs[0] dst
3884
      // No operand predicates
3885
      // MIs[0] src0
3886
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3887
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3888
      // MIs[1] cst
3889
      // No operand predicates
3890
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
3891
      // Combiner Rule #73: constant_fold_fneg
3892
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner40),
3893
0
      GIR_Done,
3894
    // Label 283: @4529
3895
0
    GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(4560), // Rule ID 60 //
3896
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
3897
      // MIs[0] dst
3898
      // No operand predicates
3899
      // MIs[0] t
3900
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3901
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
3902
      // MIs[1] src
3903
      // No operand predicates
3904
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3905
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
3906
      // Combiner Rule #31: fneg_fneg_fold
3907
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3908
0
      GIR_EraseFromParent, /*InsnID*/0,
3909
0
      GIR_Done,
3910
    // Label 284: @4560
3911
0
    GIM_Reject,
3912
    // Label 60: @4561
3913
0
    GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(4583), // Rule ID 114 //
3914
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
3915
      // MIs[0] dst
3916
      // No operand predicates
3917
      // MIs[0] src0
3918
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3919
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3920
      // MIs[1] cst
3921
      // No operand predicates
3922
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
3923
      // Combiner Rule #77: constant_fold_fptrunc
3924
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner40),
3925
0
      GIR_Done,
3926
    // Label 285: @4583
3927
0
    GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(4609), // Rule ID 70 //
3928
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
3929
      // MIs[0] dst
3930
      // No operand predicates
3931
      // MIs[0] src1
3932
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3933
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
3934
      // MIs[1] src0
3935
      // No operand predicates
3936
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26),
3937
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
3938
      // Combiner Rule #39: fptrunc_fpext_fold
3939
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner18),
3940
0
      GIR_Done,
3941
    // Label 286: @4609
3942
0
    GIM_Reject,
3943
    // Label 61: @4610
3944
0
    GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(4626), // Rule ID 28 //
3945
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
3946
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
3947
      // Combiner Rule #17: propagate_undef_any_op; wip_match_opcode 'G_FPTOSI'
3948
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
3949
0
      GIR_Done,
3950
    // Label 287: @4626
3951
0
    GIM_Reject,
3952
    // Label 62: @4627
3953
0
    GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(4643), // Rule ID 29 //
3954
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
3955
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
3956
      // Combiner Rule #17: propagate_undef_any_op; wip_match_opcode 'G_FPTOUI'
3957
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
3958
0
      GIR_Done,
3959
    // Label 288: @4643
3960
0
    GIM_Reject,
3961
    // Label 63: @4644
3962
0
    GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(4660), // Rule ID 16 //
3963
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
3964
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
3965
      // Combiner Rule #11: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
3966
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner8),
3967
0
      GIR_Done,
3968
    // Label 289: @4660
3969
0
    GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(4676), // Rule ID 115 //
3970
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
3971
      // MIs[0] dst
3972
      // No operand predicates
3973
      // MIs[0] Operand 1
3974
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
3975
      // Combiner Rule #78: itof_const_zero_fold_si
3976
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner41),
3977
0
      GIR_Done,
3978
    // Label 290: @4676
3979
0
    GIM_Reject,
3980
    // Label 64: @4677
3981
0
    GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(4693), // Rule ID 15 //
3982
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
3983
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
3984
      // Combiner Rule #11: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
3985
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner8),
3986
0
      GIR_Done,
3987
    // Label 291: @4693
3988
0
    GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(4709), // Rule ID 116 //
3989
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
3990
      // MIs[0] dst
3991
      // No operand predicates
3992
      // MIs[0] Operand 1
3993
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
3994
      // Combiner Rule #79: itof_const_zero_fold_ui
3995
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner41),
3996
0
      GIR_Done,
3997
    // Label 292: @4709
3998
0
    GIM_Reject,
3999
    // Label 65: @4710
4000
0
    GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(4741), // Rule ID 5 //
4001
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4002
      // MIs[0] dst
4003
      // No operand predicates
4004
      // MIs[0] src
4005
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4006
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
4007
      // MIs[1] __idempotent_prop_match_0.x
4008
      // No operand predicates
4009
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4010
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
4011
      // Combiner Rule #4: idempotent_prop @ [__idempotent_prop_match_0[1]]
4012
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4013
0
      GIR_EraseFromParent, /*InsnID*/0,
4014
0
      GIR_Done,
4015
    // Label 293: @4741
4016
0
    GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(4763), // Rule ID 111 //
4017
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
4018
      // MIs[0] dst
4019
      // No operand predicates
4020
      // MIs[0] src0
4021
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4022
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4023
      // MIs[1] cst
4024
      // No operand predicates
4025
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
4026
      // Combiner Rule #74: constant_fold_fabs
4027
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner40),
4028
0
      GIR_Done,
4029
    // Label 294: @4763
4030
0
    GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(4796), // Rule ID 182 //
4031
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
4032
      // MIs[0] dst
4033
      // No operand predicates
4034
      // MIs[0] tmp
4035
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4036
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
4037
      // MIs[1] x
4038
      // No operand predicates
4039
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
4040
      // Combiner Rule #107: fabs_fneg_fold
4041
0
      GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
4042
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
4043
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
4044
0
      GIR_EraseFromParent, /*InsnID*/0,
4045
0
      GIR_Done,
4046
    // Label 295: @4796
4047
0
    GIM_Reject,
4048
    // Label 66: @4797
4049
0
    GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(4828), // Rule ID 6 //
4050
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4051
      // MIs[0] dst
4052
      // No operand predicates
4053
      // MIs[0] src
4054
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4055
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
4056
      // MIs[1] __idempotent_prop_match_0.x
4057
      // No operand predicates
4058
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4059
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
4060
      // Combiner Rule #4: idempotent_prop @ [__idempotent_prop_match_0[2]]
4061
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4062
0
      GIR_EraseFromParent, /*InsnID*/0,
4063
0
      GIR_Done,
4064
    // Label 296: @4828
4065
0
    GIM_Reject,
4066
    // Label 67: @4829
4067
0
    GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(4845), // Rule ID 129 //
4068
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
4069
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner65),
4070
      // Combiner Rule #86: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
4071
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
4072
0
      GIR_Done,
4073
    // Label 297: @4845
4074
0
    GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(4861), // Rule ID 223 //
4075
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4076
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
4077
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
4078
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
4079
0
      GIR_Done,
4080
    // Label 298: @4861
4081
0
    GIM_Reject,
4082
    // Label 68: @4862
4083
0
    GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(4878), // Rule ID 130 //
4084
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
4085
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner65),
4086
      // Combiner Rule #86: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
4087
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
4088
0
      GIR_Done,
4089
    // Label 299: @4878
4090
0
    GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(4894), // Rule ID 224 //
4091
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4092
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
4093
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
4094
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
4095
0
      GIR_Done,
4096
    // Label 300: @4894
4097
0
    GIM_Reject,
4098
    // Label 69: @4895
4099
0
    GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(4911), // Rule ID 131 //
4100
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
4101
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner65),
4102
      // Combiner Rule #86: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
4103
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
4104
0
      GIR_Done,
4105
    // Label 301: @4911
4106
0
    GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(4927), // Rule ID 225 //
4107
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4108
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
4109
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
4110
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
4111
0
      GIR_Done,
4112
    // Label 302: @4927
4113
0
    GIM_Reject,
4114
    // Label 70: @4928
4115
0
    GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(4944), // Rule ID 132 //
4116
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
4117
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner65),
4118
      // Combiner Rule #86: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
4119
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
4120
0
      GIR_Done,
4121
    // Label 303: @4944
4122
0
    GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(4960), // Rule ID 226 //
4123
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4124
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
4125
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
4126
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
4127
0
      GIR_Done,
4128
    // Label 304: @4960
4129
0
    GIM_Reject,
4130
    // Label 71: @4961
4131
0
    GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(4977), // Rule ID 80 //
4132
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
4133
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner32),
4134
      // Combiner Rule #45: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
4135
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
4136
0
      GIR_Done,
4137
    // Label 305: @4977
4138
0
    GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(4993), // Rule ID 82 //
4139
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
4140
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner34),
4141
      // Combiner Rule #47: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
4142
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner23),
4143
0
      GIR_Done,
4144
    // Label 306: @4993
4145
0
    GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5009), // Rule ID 117 //
4146
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
4147
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner59),
4148
      // Combiner Rule #80: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
4149
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner42),
4150
0
      GIR_Done,
4151
    // Label 307: @5009
4152
0
    GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5025), // Rule ID 134 //
4153
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4154
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner67),
4155
      // Combiner Rule #88: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
4156
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner44),
4157
0
      GIR_Done,
4158
    // Label 308: @5025
4159
0
    GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5041), // Rule ID 203 //
4160
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4161
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
4162
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
4163
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
4164
0
      GIR_Done,
4165
    // Label 309: @5041
4166
0
    GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5066), // Rule ID 47 //
4167
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
4168
      // MIs[0] dst
4169
      // No operand predicates
4170
      // MIs[0] lhs
4171
      // No operand predicates
4172
      // MIs[0] Operand 2
4173
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4174
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4175
      // Combiner Rule #24: right_identity_zero @ [__right_identity_zero_match_0[7]]
4176
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4177
0
      GIR_EraseFromParent, /*InsnID*/0,
4178
0
      GIR_Done,
4179
    // Label 310: @5066
4180
0
    GIM_Reject,
4181
    // Label 72: @5067
4182
0
    GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5083), // Rule ID 214 //
4183
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4184
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
4185
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_SMIN'
4186
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
4187
0
      GIR_Done,
4188
    // Label 311: @5083
4189
0
    GIM_Reject,
4190
    // Label 73: @5084
4191
0
    GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5100), // Rule ID 215 //
4192
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4193
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
4194
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_SMAX'
4195
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
4196
0
      GIR_Done,
4197
    // Label 312: @5100
4198
0
    GIM_Reject,
4199
    // Label 74: @5101
4200
0
    GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5117), // Rule ID 216 //
4201
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4202
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
4203
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_UMIN'
4204
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
4205
0
      GIR_Done,
4206
    // Label 313: @5117
4207
0
    GIM_Reject,
4208
    // Label 75: @5118
4209
0
    GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(5134), // Rule ID 217 //
4210
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4211
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner97),
4212
      // Combiner Rule #121: fold_binop_into_select; wip_match_opcode 'G_UMAX'
4213
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner55),
4214
0
      GIR_Done,
4215
    // Label 314: @5134
4216
0
    GIM_Reject,
4217
    // Label 76: @5135
4218
0
    GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(5151), // Rule ID 26 //
4219
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
4220
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
4221
      // Combiner Rule #16: unary_undef_to_zero; wip_match_opcode 'G_ABS'
4222
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner9),
4223
0
      GIR_Done,
4224
    // Label 315: @5151
4225
0
    GIM_Reject,
4226
    // Label 77: @5152
4227
0
    GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(5168), // Rule ID 102 //
4228
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
4229
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner51),
4230
      // Combiner Rule #65: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
4231
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner33),
4232
0
      GIR_Done,
4233
    // Label 316: @5168
4234
0
    GIM_Reject,
4235
    // Label 78: @5169
4236
0
    GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(5185), // Rule ID 7 //
4237
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4238
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
4239
      // Combiner Rule #5: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
4240
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner3),
4241
0
      GIR_Done,
4242
    // Label 317: @5185
4243
0
    GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(5201), // Rule ID 37 //
4244
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
4245
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
4246
      // Combiner Rule #22: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
4247
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
4248
0
      GIR_Done,
4249
    // Label 318: @5201
4250
0
    GIM_Reject,
4251
    // Label 79: @5202
4252
0
    GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(5218), // Rule ID 8 //
4253
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4254
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
4255
      // Combiner Rule #6: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
4256
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner4),
4257
0
      GIR_Done,
4258
    // Label 319: @5218
4259
0
    GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(5234), // Rule ID 14 //
4260
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
4261
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
4262
      // Combiner Rule #10: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
4263
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
4264
0
      GIR_Done,
4265
    // Label 320: @5234
4266
0
    GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(5250), // Rule ID 38 //
4267
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
4268
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
4269
      // Combiner Rule #22: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
4270
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
4271
0
      GIR_Done,
4272
    // Label 321: @5250
4273
0
    GIM_Reject,
4274
    // Label 80: @5251
4275
0
    GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(5267), // Rule ID 33 //
4276
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4277
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
4278
      // Combiner Rule #18: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
4279
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
4280
0
      GIR_Done,
4281
    // Label 322: @5267
4282
0
    GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(5283), // Rule ID 34 //
4283
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4284
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
4285
      // Combiner Rule #19: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
4286
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
4287
0
      GIR_Done,
4288
    // Label 323: @5283
4289
0
    GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(5299), // Rule ID 241 //
4290
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
4291
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner107),
4292
      // Combiner Rule #131: shuffle_to_extract; wip_match_opcode 'G_SHUFFLE_VECTOR'
4293
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner61),
4294
0
      GIR_Done,
4295
    // Label 324: @5299
4296
0
    GIM_Reject,
4297
    // Label 81: @5300
4298
0
    GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(5322), // Rule ID 112 //
4299
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4300
      // MIs[0] dst
4301
      // No operand predicates
4302
      // MIs[0] src0
4303
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4304
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4305
      // MIs[1] cst
4306
      // No operand predicates
4307
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
4308
      // Combiner Rule #75: constant_fold_fsqrt
4309
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner40),
4310
0
      GIR_Done,
4311
    // Label 325: @5322
4312
0
    GIM_Reject,
4313
    // Label 82: @5323
4314
0
    GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(5342), // Rule ID 242 //
4315
0
      GIM_CheckFeatures, GIMT_Encode2(GIFBS_HasDotProd),
4316
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
4317
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner108),
4318
      // Combiner Rule #132: ext_addv_to_udot_addv; wip_match_opcode 'G_VECREDUCE_ADD'
4319
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner62),
4320
0
      GIR_Done,
4321
    // Label 326: @5342
4322
0
    GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(5358), // Rule ID 243 //
4323
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
4324
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner109),
4325
      // Combiner Rule #133: ext_uaddv_to_uaddlv; wip_match_opcode 'G_VECREDUCE_ADD'
4326
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner63),
4327
0
      GIR_Done,
4328
    // Label 327: @5358
4329
0
    GIM_Reject,
4330
    // Label 83: @5359
4331
0
    GIM_Reject,
4332
0
    }; // Size: 5360 bytes
4333
0
  return MatchTable0;
4334
0
}
4335
#undef GIMT_Encode2
4336
#undef GIMT_Encode4
4337
#undef GIMT_Encode8
4338
4339
#endif // ifdef GET_GICOMBINER_IMPL
4340
4341
#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
4342
AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
4343
AvailableFunctionFeatures()
4344
#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
4345
#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
4346
, State(0),
4347
ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
4348
#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
4349