Coverage Report

Created: 2024-01-17 10:31

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