Coverage Report

Created: 2024-01-17 10:31

/src/build/lib/Target/AArch64/AArch64GenPostLegalizeGICombiner.inc
Line
Count
Source (jump to first uncovered line)
1
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2
|*                                                                            *|
3
|* AArch64PostLegalizerCombinerImpl Combiner Match Table                      *|
4
|*                                                                            *|
5
|* Automatically generated file, do not edit!                                 *|
6
|*                                                                            *|
7
\*===----------------------------------------------------------------------===*/
8
9
#ifdef GET_GICOMBINER_DEPS
10
#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 AArch64PostLegalizerCombinerImplRuleConfig {
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:  // 3 strings to match.
37
0
    switch (RuleIdentifier[0]) {
38
0
    default: break;
39
0
    case 'c':  // 1 string to match.
40
0
      if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
41
0
        break;
42
0
      return 0;  // "copy_prop"
43
0
    case 'm':  // 1 string to match.
44
0
      if (memcmp(RuleIdentifier.data()+1, "ul_const", 8) != 0)
45
0
        break;
46
0
      return 11;  // "mul_const"
47
0
    case 'o':  // 1 string to match.
48
0
      if (memcmp(RuleIdentifier.data()+1, "r_to_bsp", 8) != 0)
49
0
        break;
50
0
      return 60;  // "or_to_bsp"
51
0
    }
52
0
    break;
53
0
  case 10:   // 2 strings to match.
54
0
    switch (RuleIdentifier[0]) {
55
0
    default: break;
56
0
    case 'i':  // 1 string to match.
57
0
      if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
58
0
        break;
59
0
      return 32;  // "i2p_to_p2i"
60
0
    case 'p':  // 1 string to match.
61
0
      if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
62
0
        break;
63
0
      return 31;  // "p2i_to_i2p"
64
0
    }
65
0
    break;
66
0
  case 11:   // 1 string to match.
67
0
    if (memcmp(RuleIdentifier.data()+0, "add_sub_reg", 11) != 0)
68
0
      break;
69
0
    return 37;  // "add_sub_reg"
70
0
  case 12:   // 1 string to match.
71
0
    if (memcmp(RuleIdentifier.data()+0, "redundant_or", 12) != 0)
72
0
      break;
73
0
    return 10;  // "redundant_or"
74
0
  case 13:   // 5 strings to match.
75
0
    switch (RuleIdentifier[0]) {
76
0
    default: break;
77
0
    case 'l':  // 1 string to match.
78
0
      if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
79
0
        break;
80
0
      return 2;  // "load_and_mask"
81
0
    case 'm':  // 2 strings to match.
82
0
      switch (RuleIdentifier[1]) {
83
0
      default: break;
84
0
      case 'a':  // 1 string to match.
85
0
        if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
86
0
          break;
87
0
        return 22;  // "match_selects"
88
0
      case 'e':  // 1 string to match.
89
0
        if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
90
0
          break;
91
0
        return 19;  // "merge_unmerge"
92
0
      }
93
0
      break;
94
0
    case 'r':  // 1 string to match.
95
0
      if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
96
0
        break;
97
0
      return 7;  // "redundant_and"
98
0
    case 'u':  // 1 string to match.
99
0
      if (memcmp(RuleIdentifier.data()+1, "nmerge_undef", 12) != 0)
100
0
        break;
101
0
      return 57;  // "unmerge_undef"
102
0
    }
103
0
    break;
104
0
  case 14:   // 2 strings to match.
105
0
    switch (RuleIdentifier[0]) {
106
0
    default: break;
107
0
    case 'b':  // 1 string to match.
108
0
      if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0)
109
0
        break;
110
0
      return 28;  // "binop_same_val"
111
0
    case 'f':  // 1 string to match.
112
0
      if (memcmp(RuleIdentifier.data()+1, "neg_fneg_fold", 13) != 0)
113
0
        break;
114
0
      return 34;  // "fneg_fneg_fold"
115
0
    }
116
0
    break;
117
0
  case 15:   // 3 strings to match.
118
0
    switch (RuleIdentifier[0]) {
119
0
    default: break;
120
0
    case 'e':  // 1 string to match.
121
0
      if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
122
0
        break;
123
0
      return 1;  // "extending_loads"
124
0
    case 'o':  // 1 string to match.
125
0
      if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
126
0
        break;
127
0
      return 45;  // "overlapping_and"
128
0
    case 's':  // 1 string to match.
129
0
      if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
130
0
        break;
131
0
      return 26;  // "select_same_val"
132
0
    }
133
0
    break;
134
0
  case 16:   // 3 strings to match.
135
0
    switch (RuleIdentifier[0]) {
136
0
    default: break;
137
0
    case 's':  // 2 strings to match.
138
0
      if (memcmp(RuleIdentifier.data()+1, "elect_", 6) != 0)
139
0
        break;
140
0
      switch (RuleIdentifier[7]) {
141
0
      default: break;
142
0
      case 't':  // 1 string to match.
143
0
        if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
144
0
          break;
145
0
        return 59;  // "select_to_minmax"
146
0
      case 'u':  // 1 string to match.
147
0
        if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
148
0
          break;
149
0
        return 20;  // "select_undef_cmp"
150
0
      }
151
0
      break;
152
0
    case 'u':  // 1 string to match.
153
0
      if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
154
0
        break;
155
0
      return 47;  // "undef_to_fp_zero"
156
0
    }
157
0
    break;
158
0
  case 17:   // 3 strings to match.
159
0
    switch (RuleIdentifier[0]) {
160
0
    default: break;
161
0
    case 'a':  // 1 string to match.
162
0
      if (memcmp(RuleIdentifier.data()+1, "nyext_trunc_fold", 16) != 0)
163
0
        break;
164
0
      return 33;  // "anyext_trunc_fold"
165
0
    case 'e':  // 1 string to match.
166
0
      if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
167
0
        break;
168
0
      return 56;  // "erase_undef_store"
169
0
    case 'u':  // 1 string to match.
170
0
      if (memcmp(RuleIdentifier.data()+1, "ndef_to_int_zero", 16) != 0)
171
0
        break;
172
0
      return 48;  // "undef_to_int_zero"
173
0
    }
174
0
    break;
175
0
  case 18:   // 3 strings to match.
176
0
    switch (RuleIdentifier[0]) {
177
0
    default: break;
178
0
    case 'b':  // 1 string to match.
179
0
      if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
180
0
        break;
181
0
      return 29;  // "binop_left_to_zero"
182
0
    case 'f':  // 2 strings to match.
183
0
      switch (RuleIdentifier[1]) {
184
0
      default: break;
185
0
      case 'o':  // 1 string to match.
186
0
        if (memcmp(RuleIdentifier.data()+2, "ld_merge_to_zext", 16) != 0)
187
0
          break;
188
0
        return 23;  // "fold_merge_to_zext"
189
0
      case 'p':  // 1 string to match.
190
0
        if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
191
0
          break;
192
0
        return 42;  // "fptrunc_fpext_fold"
193
0
      }
194
0
      break;
195
0
    }
196
0
    break;
197
0
  case 19:   // 8 strings to match.
198
0
    switch (RuleIdentifier[0]) {
199
0
    default: break;
200
0
    case 'b':  // 1 string to match.
201
0
      if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
202
0
        break;
203
0
      return 30;  // "binop_right_to_zero"
204
0
    case 'c':  // 1 string to match.
205
0
      if (memcmp(RuleIdentifier.data()+1, "onstant_fold_binop", 18) != 0)
206
0
        break;
207
0
      return 24;  // "constant_fold_binop"
208
0
    case 'p':  // 1 string to match.
209
0
      if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
210
0
        break;
211
0
      return 44;  // "ptr_add_immed_chain"
212
0
    case 'r':  // 2 strings to match.
213
0
      switch (RuleIdentifier[1]) {
214
0
      default: break;
215
0
      case 'i':  // 1 string to match.
216
0
        if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
217
0
          break;
218
0
        return 27;  // "right_identity_zero"
219
0
      case 'o':  // 1 string to match.
220
0
        if (memcmp(RuleIdentifier.data()+2, "tate_out_of_range", 17) != 0)
221
0
          break;
222
0
        return 17;  // "rotate_out_of_range"
223
0
      }
224
0
      break;
225
0
    case 's':  // 2 strings to match.
226
0
      if (RuleIdentifier[1] != 'e')
227
0
        break;
228
0
      switch (RuleIdentifier[2]) {
229
0
      default: break;
230
0
      case 'l':  // 1 string to match.
231
0
        if (memcmp(RuleIdentifier.data()+3, "ect_constant_cmp", 16) != 0)
232
0
          break;
233
0
        return 21;  // "select_constant_cmp"
234
0
      case 'x':  // 1 string to match.
235
0
        if (memcmp(RuleIdentifier.data()+3, "t_trunc_sextload", 16) != 0)
236
0
          break;
237
0
        return 4;  // "sext_trunc_sextload"
238
0
      }
239
0
      break;
240
0
    case 'u':  // 1 string to match.
241
0
      if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
242
0
        break;
243
0
      return 52;  // "unary_undef_to_zero"
244
0
    }
245
0
    break;
246
0
  case 20:   // 3 strings to match.
247
0
    switch (RuleIdentifier[0]) {
248
0
    default: break;
249
0
    case 'b':  // 1 string to match.
250
0
      if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
251
0
        break;
252
0
      return 41;  // "bitcast_bitcast_fold"
253
0
    case 'r':  // 1 string to match.
254
0
      if (memcmp(RuleIdentifier.data()+1, "edundant_sext_inreg", 19) != 0)
255
0
        break;
256
0
      return 12;  // "redundant_sext_inreg"
257
0
    case 's':  // 1 string to match.
258
0
      if (memcmp(RuleIdentifier.data()+1, "plit_store_zero_128", 19) != 0)
259
0
        break;
260
0
      return 46;  // "split_store_zero_128"
261
0
    }
262
0
    break;
263
0
  case 21:   // 3 strings to match.
264
0
    switch (RuleIdentifier[0]) {
265
0
    default: break;
266
0
    case 'm':  // 1 string to match.
267
0
      if (memcmp(RuleIdentifier.data()+1, "utate_anyext_to_zext", 20) != 0)
268
0
        break;
269
0
      return 5;  // "mutate_anyext_to_zext"
270
0
    case 'r':  // 1 string to match.
271
0
      if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
272
0
        break;
273
0
      return 36;  // "right_identity_one_fp"
274
0
    case 'u':  // 1 string to match.
275
0
      if (memcmp(RuleIdentifier.data()+1, "ndef_to_negative_one", 20) != 0)
276
0
        break;
277
0
      return 49;  // "undef_to_negative_one"
278
0
    }
279
0
    break;
280
0
  case 22:   // 4 strings to match.
281
0
    switch (RuleIdentifier[0]) {
282
0
    default: break;
283
0
    case 'c':  // 1 string to match.
284
0
      if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fp_binop", 21) != 0)
285
0
        break;
286
0
      return 25;  // "constant_fold_fp_binop"
287
0
    case 'p':  // 1 string to match.
288
0
      if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
289
0
        break;
290
0
      return 53;  // "propagate_undef_any_op"
291
0
    case 'r':  // 1 string to match.
292
0
      if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
293
0
        break;
294
0
      return 35;  // "right_identity_one_int"
295
0
    case 't':  // 1 string to match.
296
0
      if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
297
0
        break;
298
0
      return 39;  // "trunc_buildvector_fold"
299
0
    }
300
0
    break;
301
0
  case 23:   // 1 string to match.
302
0
    if (memcmp(RuleIdentifier.data()+0, "propagate_undef_all_ops", 23) != 0)
303
0
      break;
304
0
    return 54;  // "propagate_undef_all_ops"
305
0
  case 24:   // 2 strings to match.
306
0
    switch (RuleIdentifier[0]) {
307
0
    default: break;
308
0
    case 'b':  // 1 string to match.
309
0
      if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
310
0
        break;
311
0
      return 50;  // "binop_left_undef_to_zero"
312
0
    case 'x':  // 1 string to match.
313
0
      if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
314
0
        break;
315
0
      return 8;  // "xor_of_and_with_same_reg"
316
0
    }
317
0
    break;
318
0
  case 25:   // 3 strings to match.
319
0
    if (RuleIdentifier[0] != 'b')
320
0
      break;
321
0
    switch (RuleIdentifier[1]) {
322
0
    default: break;
323
0
    case 'i':  // 2 strings to match.
324
0
      if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
325
0
        break;
326
0
      switch (RuleIdentifier[22]) {
327
0
      default: break;
328
0
      case 'a':  // 1 string to match.
329
0
        if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
330
0
          break;
331
0
        return 14;  // "bitfield_extract_from_and"
332
0
      case 's':  // 1 string to match.
333
0
        if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
334
0
          break;
335
0
        return 15;  // "bitfield_extract_from_shr"
336
0
      }
337
0
      break;
338
0
    case 'u':  // 1 string to match.
339
0
      if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
340
0
        break;
341
0
      return 38;  // "buildvector_identity_fold"
342
0
    }
343
0
    break;
344
0
  case 26:   // 4 strings to match.
345
0
    switch (RuleIdentifier[0]) {
346
0
    default: break;
347
0
    case 'b':  // 1 string to match.
348
0
      if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
349
0
        break;
350
0
      return 51;  // "binop_right_undef_to_undef"
351
0
    case 'c':  // 1 string to match.
352
0
      if (memcmp(RuleIdentifier.data()+1, "ombine_indexed_load_store", 25) != 0)
353
0
        break;
354
0
      return 3;  // "combine_indexed_load_store"
355
0
    case 'e':  // 1 string to match.
356
0
      if (memcmp(RuleIdentifier.data()+1, "xtractvecelt_pairwise_add", 25) != 0)
357
0
        break;
358
0
      return 9;  // "extractvecelt_pairwise_add"
359
0
    case 'r':  // 1 string to match.
360
0
      if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
361
0
        break;
362
0
      return 43;  // "right_identity_neg_zero_fp"
363
0
    }
364
0
    break;
365
0
  case 27:   // 1 string to match.
366
0
    if (memcmp(RuleIdentifier.data()+0, "trunc_lshr_buildvector_fold", 27) != 0)
367
0
      break;
368
0
    return 40;  // "trunc_lshr_buildvector_fold"
369
0
  case 28:   // 1 string to match.
370
0
    if (memcmp(RuleIdentifier.data()+0, "propagate_undef_shuffle_mask", 28) != 0)
371
0
      break;
372
0
    return 55;  // "propagate_undef_shuffle_mask"
373
0
  case 29:   // 2 strings to match.
374
0
    switch (RuleIdentifier[0]) {
375
0
    default: break;
376
0
    case 'b':  // 1 string to match.
377
0
      if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
378
0
        break;
379
0
      return 16;  // "bitfield_extract_from_shr_and"
380
0
    case 'i':  // 1 string to match.
381
0
      if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
382
0
        break;
383
0
      return 18;  // "icmp_to_true_false_known_bits"
384
0
    }
385
0
    break;
386
0
  case 32:   // 1 string to match.
387
0
    if (memcmp(RuleIdentifier.data()+0, "bitfield_extract_from_sext_inreg", 32) != 0)
388
0
      break;
389
0
    return 13;  // "bitfield_extract_from_sext_inreg"
390
0
  case 36:   // 1 string to match.
391
0
    if (memcmp(RuleIdentifier.data()+0, "insert_extract_vec_elt_out_of_bounds", 36) != 0)
392
0
      break;
393
0
    return 58;  // "insert_extract_vec_elt_out_of_bounds"
394
0
  case 37:   // 1 string to match.
395
0
    if (memcmp(RuleIdentifier.data()+0, "hoist_logic_op_with_same_opcode_hands", 37) != 0)
396
0
      break;
397
0
    return 6;  // "hoist_logic_op_with_same_opcode_hands"
398
0
  }
399
0
#endif // ifndef NDEBUG
400
401
0
  return std::nullopt;
402
0
}
403
0
static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
404
0
  std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
405
0
  if (!RangePair.second.empty()) {
406
0
    const auto First = getRuleIdxForIdentifier(RangePair.first);
407
0
    const auto Last = getRuleIdxForIdentifier(RangePair.second);
408
0
    if (!First || !Last)
409
0
      return std::nullopt;
410
0
    if (First >= Last)
411
0
      report_fatal_error("Beginning of range should be before end of range");
412
0
    return {{*First, *Last + 1}};
413
0
  }
414
0
  if (RangePair.first == "*") {
415
0
    return {{0, 61}};
416
0
  }
417
0
  const auto I = getRuleIdxForIdentifier(RangePair.first);
418
0
  if (!I)
419
0
    return std::nullopt;
420
0
  return {{*I, *I + 1}};
421
0
}
422
423
0
bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
424
0
  auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
425
0
  if (!MaybeRange)
426
0
    return false;
427
0
  for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
428
0
    DisabledRules.reset(I);
429
0
  return true;
430
0
}
431
432
0
bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
433
0
  auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
434
0
  if (!MaybeRange)
435
0
    return false;
436
0
  for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
437
0
    DisabledRules.set(I);
438
0
  return true;
439
0
}
440
441
static std::vector<std::string> AArch64PostLegalizerCombinerOption;
442
static cl::list<std::string> AArch64PostLegalizerCombinerDisableOption(
443
    "aarch64postlegalizercombiner-disable-rule",
444
    cl::desc("Disable one or more combiner rules temporarily in the AArch64PostLegalizerCombiner pass"),
445
    cl::CommaSeparated,
446
    cl::Hidden,
447
    cl::cat(GICombinerOptionCategory),
448
0
    cl::callback([](const std::string &Str) {
449
0
      AArch64PostLegalizerCombinerOption.push_back(Str);
450
0
    }));
451
static cl::list<std::string> AArch64PostLegalizerCombinerOnlyEnableOption(
452
    "aarch64postlegalizercombiner-only-enable-rule",
453
    cl::desc("Disable all rules in the AArch64PostLegalizerCombiner pass then re-enable the specified ones"),
454
    cl::Hidden,
455
    cl::cat(GICombinerOptionCategory),
456
0
    cl::callback([](const std::string &CommaSeparatedArg) {
457
0
      StringRef Str = CommaSeparatedArg;
458
0
      AArch64PostLegalizerCombinerOption.push_back("*");
459
0
      do {
460
0
        auto X = Str.split(",");
461
0
        AArch64PostLegalizerCombinerOption.push_back(("!" + X.first).str());
462
0
        Str = X.second;
463
0
      } while (!Str.empty());
464
0
    }));
465
466
467
0
bool AArch64PostLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
468
0
    return  !DisabledRules.test(RuleID);
469
0
}
470
0
bool AArch64PostLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
471
0
  for (StringRef Identifier : AArch64PostLegalizerCombinerOption) {
472
0
    bool Enabled = Identifier.consume_front("!");
473
0
    if (Enabled && !setRuleEnabled(Identifier))
474
0
      return false;
475
0
    if (!Enabled && !setRuleDisabled(Identifier))
476
0
      return false;
477
0
  }
478
0
  return true;
479
0
}
480
481
#endif // ifdef GET_GICOMBINER_TYPES
482
483
#ifdef GET_GICOMBINER_TYPES
484
const unsigned MAX_SUBTARGET_PREDICATES = 0;
485
using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
486
#endif // ifdef GET_GICOMBINER_TYPES
487
488
#ifdef GET_GICOMBINER_CLASS_MEMBERS
489
PredicateBitset AvailableModuleFeatures;
490
mutable PredicateBitset AvailableFunctionFeatures;
491
0
PredicateBitset getAvailableFeatures() const {
492
0
  return AvailableModuleFeatures | AvailableFunctionFeatures;
493
0
}
494
PredicateBitset
495
computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
496
PredicateBitset
497
computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
498
                                 const MachineFunction *MF) const;
499
void setupGeneratedPerFunctionState(MachineFunction &MF) override;
500
#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
501
#ifdef GET_GICOMBINER_CLASS_MEMBERS
502
  mutable MatcherState State;
503
  typedef ComplexRendererFns(AArch64PostLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
504
  typedef void(AArch64PostLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
505
  const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
506
  static AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
507
  static AArch64PostLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
508
  bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
509
  bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
510
  bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
511
  const uint8_t *getMatchTable() const override;
512
  bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
513
  bool testSimplePredicate(unsigned PredicateID) const override;
514
  void runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
515
  struct MatchInfosTy {
516
    std::tuple<unsigned, LLT, Register> MDInfo6;
517
    unsigned MDInfo9;
518
    ConstantFP* MDInfo11;
519
    InstructionStepsMatchInfo MDInfo3;
520
    IndexedLoadStoreMatchInfo MDInfo2;
521
    std::function<void(MachineIRBuilder&, Register)> MDInfo7;
522
    PreferredTuple MDInfo0;
523
    std::tuple<Register, Register, Register> MDInfo13;
524
    Register MDInfo4;
525
    std::function<void(MachineIRBuilder &)> MDInfo1;
526
    int64_t MDInfo8;
527
    APInt MDInfo10;
528
    std::pair<Register, Register> MDInfo5;
529
    PtrAddChain MDInfo12;
530
  };
531
  mutable MatchInfosTy MatchInfos;
532
533
#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
534
535
#ifdef GET_GICOMBINER_IMPL
536
// LLT Objects.
537
enum {
538
  GILLT_s1,
539
};
540
const static size_t NumTypeObjects = 1;
541
const static LLT TypeObjects[] = {
542
  LLT::scalar(1),
543
};
544
545
// Bits for subtarget features that participate in instruction matching.
546
enum SubtargetFeatureBits : uint8_t {
547
};
548
549
PredicateBitset AArch64PostLegalizerCombinerImpl::
550
0
computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
551
0
  PredicateBitset Features;
552
0
  return Features;
553
0
}
554
555
0
void AArch64PostLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
556
0
  AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
557
0
}
558
PredicateBitset AArch64PostLegalizerCombinerImpl::
559
0
computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
560
0
  PredicateBitset Features;
561
0
  return Features;
562
0
}
563
564
// Feature bitsets.
565
enum {
566
  GIFBS_Invalid,
567
};
568
constexpr static PredicateBitset FeatureBitsets[] {
569
  {}, // GIFBS_Invalid
570
};
571
572
// ComplexPattern predicates.
573
enum {
574
  GICP_Invalid,
575
};
576
// See constructor for table contents
577
578
AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn
579
AArch64PostLegalizerCombinerImpl::ComplexPredicateFns[] = {
580
  nullptr, // GICP_Invalid
581
};
582
583
enum {
584
  GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
585
  GICXXPred_MI_Predicate_GICombiner1,
586
  GICXXPred_MI_Predicate_GICombiner2,
587
  GICXXPred_MI_Predicate_GICombiner3,
588
  GICXXPred_MI_Predicate_GICombiner4,
589
  GICXXPred_MI_Predicate_GICombiner5,
590
  GICXXPred_MI_Predicate_GICombiner6,
591
  GICXXPred_MI_Predicate_GICombiner7,
592
  GICXXPred_MI_Predicate_GICombiner8,
593
  GICXXPred_MI_Predicate_GICombiner9,
594
  GICXXPred_MI_Predicate_GICombiner10,
595
  GICXXPred_MI_Predicate_GICombiner11,
596
  GICXXPred_MI_Predicate_GICombiner12,
597
  GICXXPred_MI_Predicate_GICombiner13,
598
  GICXXPred_MI_Predicate_GICombiner14,
599
  GICXXPred_MI_Predicate_GICombiner15,
600
  GICXXPred_MI_Predicate_GICombiner16,
601
  GICXXPred_MI_Predicate_GICombiner17,
602
  GICXXPred_MI_Predicate_GICombiner18,
603
  GICXXPred_MI_Predicate_GICombiner19,
604
  GICXXPred_MI_Predicate_GICombiner20,
605
  GICXXPred_MI_Predicate_GICombiner21,
606
  GICXXPred_MI_Predicate_GICombiner22,
607
  GICXXPred_MI_Predicate_GICombiner23,
608
  GICXXPred_MI_Predicate_GICombiner24,
609
  GICXXPred_MI_Predicate_GICombiner25,
610
  GICXXPred_MI_Predicate_GICombiner26,
611
  GICXXPred_MI_Predicate_GICombiner27,
612
  GICXXPred_MI_Predicate_GICombiner28,
613
  GICXXPred_MI_Predicate_GICombiner29,
614
  GICXXPred_MI_Predicate_GICombiner30,
615
  GICXXPred_MI_Predicate_GICombiner31,
616
  GICXXPred_MI_Predicate_GICombiner32,
617
  GICXXPred_MI_Predicate_GICombiner33,
618
  GICXXPred_MI_Predicate_GICombiner34,
619
  GICXXPred_MI_Predicate_GICombiner35,
620
  GICXXPred_MI_Predicate_GICombiner36,
621
  GICXXPred_MI_Predicate_GICombiner37,
622
  GICXXPred_MI_Predicate_GICombiner38,
623
  GICXXPred_MI_Predicate_GICombiner39,
624
  GICXXPred_MI_Predicate_GICombiner40,
625
  GICXXPred_MI_Predicate_GICombiner41,
626
  GICXXPred_MI_Predicate_GICombiner42,
627
  GICXXPred_MI_Predicate_GICombiner43,
628
  GICXXPred_MI_Predicate_GICombiner44,
629
  GICXXPred_MI_Predicate_GICombiner45,
630
  GICXXPred_MI_Predicate_GICombiner46,
631
  GICXXPred_MI_Predicate_GICombiner47,
632
  GICXXPred_MI_Predicate_GICombiner48,
633
};
634
0
bool AArch64PostLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
635
0
  switch (PredicateID) {
636
0
  case GICXXPred_MI_Predicate_GICombiner0: {
637
0
    return Helper.matchCombineCopy(*State.MIs[0]);
638
0
  }
639
0
  case GICXXPred_MI_Predicate_GICombiner1: {
640
0
    return Helper.matchCombineExtendingLoads(*State.MIs[0], MatchInfos.MDInfo0);
641
0
  }
642
0
  case GICXXPred_MI_Predicate_GICombiner2: {
643
0
    return Helper.matchCombineLoadWithAndMask(*State.MIs[0], MatchInfos.MDInfo1);
644
0
  }
645
0
  case GICXXPred_MI_Predicate_GICombiner3: {
646
0
    return Helper.matchCombineIndexedLoadStore(*State.MIs[0], MatchInfos.MDInfo2);
647
0
  }
648
0
  case GICXXPred_MI_Predicate_GICombiner4: {
649
0
    return Helper.matchSextTruncSextLoad(*State.MIs[0]);
650
0
  }
651
0
  case GICXXPred_MI_Predicate_GICombiner5: {
652
0
    return matchMutateAnyExtToZExt(*State.MIs[0], MRI);
653
0
  }
654
0
  case GICXXPred_MI_Predicate_GICombiner6: {
655
0
    return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], MatchInfos.MDInfo3);
656
0
  }
657
0
  case GICXXPred_MI_Predicate_GICombiner7: {
658
0
    return Helper.matchRedundantAnd(*State.MIs[0], MatchInfos.MDInfo4);
659
0
  }
660
0
  case GICXXPred_MI_Predicate_GICombiner8: {
661
0
    return Helper.matchXorOfAndWithSameReg(*State.MIs[0], MatchInfos.MDInfo5);
662
0
  }
663
0
  case GICXXPred_MI_Predicate_GICombiner9: {
664
0
    return matchExtractVecEltPairwiseAdd(*State.MIs[0], MRI, MatchInfos.MDInfo6);
665
0
  }
666
0
  case GICXXPred_MI_Predicate_GICombiner10: {
667
0
    return Helper.matchRedundantOr(*State.MIs[0], MatchInfos.MDInfo4);
668
0
  }
669
0
  case GICXXPred_MI_Predicate_GICombiner11: {
670
0
    return matchAArch64MulConstCombine(*State.MIs[0], MRI, MatchInfos.MDInfo7);
671
0
  }
672
0
  case GICXXPred_MI_Predicate_GICombiner12: {
673
0
    return Helper.matchRedundantSExtInReg(*State.MIs[0]);
674
0
  }
675
0
  case GICXXPred_MI_Predicate_GICombiner13: {
676
0
    return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], MatchInfos.MDInfo1);
677
0
  }
678
0
  case GICXXPred_MI_Predicate_GICombiner14: {
679
0
    return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], MatchInfos.MDInfo1);
680
0
  }
681
0
  case GICXXPred_MI_Predicate_GICombiner15: {
682
0
    return Helper.matchBitfieldExtractFromShr(*State.MIs[0], MatchInfos.MDInfo1);
683
0
  }
684
0
  case GICXXPred_MI_Predicate_GICombiner16: {
685
0
    return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], MatchInfos.MDInfo1);
686
0
  }
687
0
  case GICXXPred_MI_Predicate_GICombiner17: {
688
0
    return Helper.matchRotateOutOfRange(*State.MIs[0]);
689
0
  }
690
0
  case GICXXPred_MI_Predicate_GICombiner18: {
691
0
    return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], MatchInfos.MDInfo8);
692
0
  }
693
0
  case GICXXPred_MI_Predicate_GICombiner19: {
694
0
    return Helper.matchCombineMergeUnmerge(*State.MIs[0], MatchInfos.MDInfo4);
695
0
  }
696
0
  case GICXXPred_MI_Predicate_GICombiner20: {
697
0
    return Helper.matchConstantSelectCmp(*State.MIs[0], MatchInfos.MDInfo9);
698
0
  }
699
0
  case GICXXPred_MI_Predicate_GICombiner21: {
700
0
    return Helper.matchSelect(*State.MIs[0], MatchInfos.MDInfo1);
701
0
  }
702
0
  case GICXXPred_MI_Predicate_GICombiner22: {
703
0
    return matchFoldMergeToZext(*State.MIs[0], MRI);
704
0
  }
705
0
  case GICXXPred_MI_Predicate_GICombiner23: {
706
0
    return Helper.matchConstantFoldBinOp(*State.MIs[0], MatchInfos.MDInfo10);
707
0
  }
708
0
  case GICXXPred_MI_Predicate_GICombiner24: {
709
0
    return Helper.matchConstantFoldFPBinOp(*State.MIs[0], MatchInfos.MDInfo11);
710
0
  }
711
0
  case GICXXPred_MI_Predicate_GICombiner25: {
712
0
    return Helper.matchSelectSameVal(*State.MIs[0]);
713
0
  }
714
0
  case GICXXPred_MI_Predicate_GICombiner26: {
715
0
    return Helper.matchOperandIsZero(*State.MIs[0], 1);
716
0
  }
717
0
  case GICXXPred_MI_Predicate_GICombiner27: {
718
0
    return Helper.matchCombineI2PToP2I(*State.MIs[0], MatchInfos.MDInfo4);
719
0
  }
720
0
  case GICXXPred_MI_Predicate_GICombiner28: {
721
0
    MatchInfos.MDInfo4 = State.MIs[1]->getOperand(1).getReg(); return true;
722
0
    llvm_unreachable("GICombiner28 should have returned");
723
0
  }
724
0
  case GICXXPred_MI_Predicate_GICombiner29: {
725
0
    return Helper.matchCombineAnyExtTrunc(*State.MIs[0], MatchInfos.MDInfo4);
726
0
  }
727
0
  case GICXXPred_MI_Predicate_GICombiner30: {
728
0
    return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
729
0
  }
730
0
  case GICXXPred_MI_Predicate_GICombiner31: {
731
0
    return Helper.matchBuildVectorIdentityFold(*State.MIs[0], MatchInfos.MDInfo4);
732
0
  }
733
0
  case GICXXPred_MI_Predicate_GICombiner32: {
734
0
    return Helper.matchTruncBuildVectorFold(*State.MIs[0], MatchInfos.MDInfo4);
735
0
  }
736
0
  case GICXXPred_MI_Predicate_GICombiner33: {
737
0
    return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], MatchInfos.MDInfo4);
738
0
  }
739
0
  case GICXXPred_MI_Predicate_GICombiner34: {
740
0
    return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());
741
0
  }
742
0
  case GICXXPred_MI_Predicate_GICombiner35: {
743
0
    return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
744
0
  }
745
0
  case GICXXPred_MI_Predicate_GICombiner36: {
746
0
    return Helper.matchPtrAddImmedChain(*State.MIs[0], MatchInfos.MDInfo12);
747
0
  }
748
0
  case GICXXPred_MI_Predicate_GICombiner37: {
749
0
    return Helper.matchOverlappingAnd(*State.MIs[0], MatchInfos.MDInfo1);
750
0
  }
751
0
  case GICXXPred_MI_Predicate_GICombiner38: {
752
0
    return matchSplitStoreZero128(*State.MIs[0], MRI);
753
0
  }
754
0
  case GICXXPred_MI_Predicate_GICombiner39: {
755
0
    return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);
756
0
  }
757
0
  case GICXXPred_MI_Predicate_GICombiner40: {
758
0
    return Helper.matchOperandIsUndef(*State.MIs[0], 1);
759
0
  }
760
0
  case GICXXPred_MI_Predicate_GICombiner41: {
761
0
    return Helper.matchOperandIsUndef(*State.MIs[0], 2);
762
0
  }
763
0
  case GICXXPred_MI_Predicate_GICombiner42: {
764
0
    return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);
765
0
  }
766
0
  case GICXXPred_MI_Predicate_GICombiner43: {
767
0
    return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);
768
0
  }
769
0
  case GICXXPred_MI_Predicate_GICombiner44: {
770
0
    return Helper.matchUndefStore(*State.MIs[0]);
771
0
  }
772
0
  case GICXXPred_MI_Predicate_GICombiner45: {
773
0
    return Helper.matchCombineUnmergeUndef(*State.MIs[0], MatchInfos.MDInfo1);
774
0
  }
775
0
  case GICXXPred_MI_Predicate_GICombiner46: {
776
0
    return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);
777
0
  }
778
0
  case GICXXPred_MI_Predicate_GICombiner47: {
779
0
    return Helper.matchSimplifySelectToMinMax(*State.MIs[0], MatchInfos.MDInfo1);
780
0
  }
781
0
  case GICXXPred_MI_Predicate_GICombiner48: {
782
0
    return matchOrToBSP(*State.MIs[0], MRI, MatchInfos.MDInfo13);
783
0
  }
784
0
  }
785
0
  llvm_unreachable("Unknown predicate");
786
0
  return false;
787
0
}
788
0
bool AArch64PostLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
789
0
  llvm_unreachable("Unknown predicate");
790
0
  return false;
791
0
}
792
0
bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
793
0
  llvm_unreachable("Unknown predicate");
794
0
  return false;
795
0
}
796
0
bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
797
0
  llvm_unreachable("Unknown predicate");
798
0
  return false;
799
0
}
800
enum {
801
  GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
802
  GICXXPred_Simple_IsRule1Enabled,
803
  GICXXPred_Simple_IsRule2Enabled,
804
  GICXXPred_Simple_IsRule3Enabled,
805
  GICXXPred_Simple_IsRule4Enabled,
806
  GICXXPred_Simple_IsRule5Enabled,
807
  GICXXPred_Simple_IsRule6Enabled,
808
  GICXXPred_Simple_IsRule7Enabled,
809
  GICXXPred_Simple_IsRule8Enabled,
810
  GICXXPred_Simple_IsRule9Enabled,
811
  GICXXPred_Simple_IsRule10Enabled,
812
  GICXXPred_Simple_IsRule11Enabled,
813
  GICXXPred_Simple_IsRule12Enabled,
814
  GICXXPred_Simple_IsRule13Enabled,
815
  GICXXPred_Simple_IsRule14Enabled,
816
  GICXXPred_Simple_IsRule15Enabled,
817
  GICXXPred_Simple_IsRule16Enabled,
818
  GICXXPred_Simple_IsRule17Enabled,
819
  GICXXPred_Simple_IsRule18Enabled,
820
  GICXXPred_Simple_IsRule19Enabled,
821
  GICXXPred_Simple_IsRule20Enabled,
822
  GICXXPred_Simple_IsRule21Enabled,
823
  GICXXPred_Simple_IsRule22Enabled,
824
  GICXXPred_Simple_IsRule23Enabled,
825
  GICXXPred_Simple_IsRule24Enabled,
826
  GICXXPred_Simple_IsRule25Enabled,
827
  GICXXPred_Simple_IsRule26Enabled,
828
  GICXXPred_Simple_IsRule27Enabled,
829
  GICXXPred_Simple_IsRule28Enabled,
830
  GICXXPred_Simple_IsRule29Enabled,
831
  GICXXPred_Simple_IsRule30Enabled,
832
  GICXXPred_Simple_IsRule31Enabled,
833
  GICXXPred_Simple_IsRule32Enabled,
834
  GICXXPred_Simple_IsRule33Enabled,
835
  GICXXPred_Simple_IsRule34Enabled,
836
  GICXXPred_Simple_IsRule35Enabled,
837
  GICXXPred_Simple_IsRule36Enabled,
838
  GICXXPred_Simple_IsRule37Enabled,
839
  GICXXPred_Simple_IsRule38Enabled,
840
  GICXXPred_Simple_IsRule39Enabled,
841
  GICXXPred_Simple_IsRule40Enabled,
842
  GICXXPred_Simple_IsRule41Enabled,
843
  GICXXPred_Simple_IsRule42Enabled,
844
  GICXXPred_Simple_IsRule43Enabled,
845
  GICXXPred_Simple_IsRule44Enabled,
846
  GICXXPred_Simple_IsRule45Enabled,
847
  GICXXPred_Simple_IsRule46Enabled,
848
  GICXXPred_Simple_IsRule47Enabled,
849
  GICXXPred_Simple_IsRule48Enabled,
850
  GICXXPred_Simple_IsRule49Enabled,
851
  GICXXPred_Simple_IsRule50Enabled,
852
  GICXXPred_Simple_IsRule51Enabled,
853
  GICXXPred_Simple_IsRule52Enabled,
854
  GICXXPred_Simple_IsRule53Enabled,
855
  GICXXPred_Simple_IsRule54Enabled,
856
  GICXXPred_Simple_IsRule55Enabled,
857
  GICXXPred_Simple_IsRule56Enabled,
858
  GICXXPred_Simple_IsRule57Enabled,
859
  GICXXPred_Simple_IsRule58Enabled,
860
  GICXXPred_Simple_IsRule59Enabled,
861
  GICXXPred_Simple_IsRule60Enabled,
862
};
863
864
0
bool AArch64PostLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
865
0
    return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
866
0
}
867
// Custom renderers.
868
enum {
869
  GICR_Invalid,
870
};
871
AArch64PostLegalizerCombinerImpl::CustomRendererFn
872
AArch64PostLegalizerCombinerImpl::CustomRenderers[] = {
873
  nullptr, // GICR_Invalid
874
};
875
876
0
bool AArch64PostLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
877
0
  const TargetSubtargetInfo &ST = MF.getSubtarget();
878
0
  const PredicateBitset AvailableFeatures = getAvailableFeatures();
879
0
  B.setInstrAndDebugLoc(I);
880
0
  State.MIs.clear();
881
0
  State.MIs.push_back(&I);
882
0
  MatchInfos = MatchInfosTy();
883
884
0
  if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
885
0
    return true;
886
0
  }
887
888
0
  return false;
889
0
}
890
891
enum {
892
  GICXXCustomAction_CombineApplyGICombiner0 = GICXXCustomAction_Invalid + 1,
893
  GICXXCustomAction_CombineApplyGICombiner1,
894
  GICXXCustomAction_CombineApplyGICombiner2,
895
  GICXXCustomAction_CombineApplyGICombiner3,
896
  GICXXCustomAction_CombineApplyGICombiner4,
897
  GICXXCustomAction_CombineApplyGICombiner5,
898
  GICXXCustomAction_CombineApplyGICombiner6,
899
  GICXXCustomAction_CombineApplyGICombiner7,
900
  GICXXCustomAction_CombineApplyGICombiner8,
901
  GICXXCustomAction_CombineApplyGICombiner9,
902
  GICXXCustomAction_CombineApplyGICombiner10,
903
  GICXXCustomAction_CombineApplyGICombiner11,
904
  GICXXCustomAction_CombineApplyGICombiner12,
905
  GICXXCustomAction_CombineApplyGICombiner13,
906
  GICXXCustomAction_CombineApplyGICombiner14,
907
  GICXXCustomAction_CombineApplyGICombiner15,
908
  GICXXCustomAction_CombineApplyGICombiner16,
909
  GICXXCustomAction_CombineApplyGICombiner17,
910
  GICXXCustomAction_CombineApplyGICombiner18,
911
  GICXXCustomAction_CombineApplyGICombiner19,
912
  GICXXCustomAction_CombineApplyGICombiner20,
913
  GICXXCustomAction_CombineApplyGICombiner21,
914
  GICXXCustomAction_CombineApplyGICombiner22,
915
  GICXXCustomAction_CombineApplyGICombiner23,
916
  GICXXCustomAction_CombineApplyGICombiner24,
917
  GICXXCustomAction_CombineApplyGICombiner25,
918
  GICXXCustomAction_CombineApplyGICombiner26,
919
  GICXXCustomAction_CombineApplyGICombiner27,
920
  GICXXCustomAction_CombineApplyGICombiner28,
921
  GICXXCustomAction_CombineApplyGICombiner29,
922
};
923
0
void AArch64PostLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
924
0
  switch(ApplyID) {
925
0
  case GICXXCustomAction_CombineApplyGICombiner0:{
926
0
    Helper.applyCombineCopy(*State.MIs[0]);
927
0
    return;
928
0
  }
929
0
  case GICXXCustomAction_CombineApplyGICombiner1:{
930
0
    Helper.applyCombineExtendingLoads(*State.MIs[0], MatchInfos.MDInfo0);
931
0
    return;
932
0
  }
933
0
  case GICXXCustomAction_CombineApplyGICombiner2:{
934
0
    Helper.applyBuildFn(*State.MIs[0], MatchInfos.MDInfo1);
935
0
    return;
936
0
  }
937
0
  case GICXXCustomAction_CombineApplyGICombiner3:{
938
0
    Helper.applyCombineIndexedLoadStore(*State.MIs[0], MatchInfos.MDInfo2);
939
0
    return;
940
0
  }
941
0
  case GICXXCustomAction_CombineApplyGICombiner4:{
942
0
    Helper.applySextTruncSextLoad(*State.MIs[0]);
943
0
    return;
944
0
  }
945
0
  case GICXXCustomAction_CombineApplyGICombiner5:{
946
0
    applyMutateAnyExtToZExt(*State.MIs[0], MRI, B, Observer);
947
0
    return;
948
0
  }
949
0
  case GICXXCustomAction_CombineApplyGICombiner6:{
950
0
    Helper.applyBuildInstructionSteps(*State.MIs[0], MatchInfos.MDInfo3);
951
0
    return;
952
0
  }
953
0
  case GICXXCustomAction_CombineApplyGICombiner7:{
954
0
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], MatchInfos.MDInfo4);
955
0
    return;
956
0
  }
957
0
  case GICXXCustomAction_CombineApplyGICombiner8:{
958
0
    Helper.applyXorOfAndWithSameReg(*State.MIs[0], MatchInfos.MDInfo5);
959
0
    return;
960
0
  }
961
0
  case GICXXCustomAction_CombineApplyGICombiner9:{
962
0
    applyExtractVecEltPairwiseAdd(*State.MIs[0], MRI, B, MatchInfos.MDInfo6);
963
0
    return;
964
0
  }
965
0
  case GICXXCustomAction_CombineApplyGICombiner10:{
966
0
    applyAArch64MulConstCombine(*State.MIs[0], MRI, B, MatchInfos.MDInfo7);
967
0
    return;
968
0
  }
969
0
  case GICXXCustomAction_CombineApplyGICombiner11:{
970
0
    Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
971
0
    return;
972
0
  }
973
0
  case GICXXCustomAction_CombineApplyGICombiner12:{
974
0
    Helper.applyRotateOutOfRange(*State.MIs[0]);
975
0
    return;
976
0
  }
977
0
  case GICXXCustomAction_CombineApplyGICombiner13:{
978
0
    Helper.replaceInstWithConstant(*State.MIs[0], MatchInfos.MDInfo8);
979
0
    return;
980
0
  }
981
0
  case GICXXCustomAction_CombineApplyGICombiner14:{
982
0
    Helper.replaceSingleDefInstWithOperand(*State.MIs[0], MatchInfos.MDInfo9);
983
0
    return;
984
0
  }
985
0
  case GICXXCustomAction_CombineApplyGICombiner15:{
986
0
    applyFoldMergeToZext(*State.MIs[0], MRI, B, Observer);
987
0
    return;
988
0
  }
989
0
  case GICXXCustomAction_CombineApplyGICombiner16:{
990
0
    Helper.replaceInstWithConstant(*State.MIs[0], MatchInfos.MDInfo10);
991
0
    return;
992
0
  }
993
0
  case GICXXCustomAction_CombineApplyGICombiner17:{
994
0
    Helper.replaceInstWithFConstant(*State.MIs[0], MatchInfos.MDInfo11);
995
0
    return;
996
0
  }
997
0
  case GICXXCustomAction_CombineApplyGICombiner18:{
998
0
    Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
999
0
    return;
1000
0
  }
1001
0
  case GICXXCustomAction_CombineApplyGICombiner19:{
1002
0
    Helper.applyCombineI2PToP2I(*State.MIs[0], MatchInfos.MDInfo4);
1003
0
    return;
1004
0
  }
1005
0
  case GICXXCustomAction_CombineApplyGICombiner20:{
1006
0
    Helper.applyCombineP2IToI2P(*State.MIs[0], MatchInfos.MDInfo4);
1007
0
    return;
1008
0
  }
1009
0
  case GICXXCustomAction_CombineApplyGICombiner21:{
1010
0
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
1011
0
    return;
1012
0
  }
1013
0
  case GICXXCustomAction_CombineApplyGICombiner22:{
1014
0
    Helper.applyPtrAddImmedChain(*State.MIs[0], MatchInfos.MDInfo12);
1015
0
    return;
1016
0
  }
1017
0
  case GICXXCustomAction_CombineApplyGICombiner23:{
1018
0
    applySplitStoreZero128(*State.MIs[0], MRI, B, Observer);
1019
0
    return;
1020
0
  }
1021
0
  case GICXXCustomAction_CombineApplyGICombiner24:{
1022
0
    Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
1023
0
    return;
1024
0
  }
1025
0
  case GICXXCustomAction_CombineApplyGICombiner25:{
1026
0
    Helper.replaceInstWithConstant(*State.MIs[0], 0);
1027
0
    return;
1028
0
  }
1029
0
  case GICXXCustomAction_CombineApplyGICombiner26:{
1030
0
    Helper.replaceInstWithConstant(*State.MIs[0], -1);
1031
0
    return;
1032
0
  }
1033
0
  case GICXXCustomAction_CombineApplyGICombiner27:{
1034
0
    Helper.replaceInstWithUndef(*State.MIs[0]);
1035
0
    return;
1036
0
  }
1037
0
  case GICXXCustomAction_CombineApplyGICombiner28:{
1038
0
    Helper.eraseInst(*State.MIs[0]);
1039
0
    return;
1040
0
  }
1041
0
  case GICXXCustomAction_CombineApplyGICombiner29:{
1042
0
    applyOrToBSP(*State.MIs[0], MRI, B, MatchInfos.MDInfo13);
1043
0
    return;
1044
0
  }
1045
0
}
1046
0
  llvm_unreachable("Unknown Apply Action");
1047
0
}
1048
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
1049
0
#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((uint16_t)Val >> 8)
1050
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)
1051
#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)
1052
#else
1053
#define GIMT_Encode2(Val) uint8_t((uint16_t)Val >> 8), uint8_t(Val)
1054
#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)
1055
#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)
1056
#endif
1057
0
const uint8_t *AArch64PostLegalizerCombinerImpl::getMatchTable() const {
1058
0
  constexpr static uint8_t MatchTable0[] = {
1059
0
    GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(19), GIMT_Encode2(217), /*)*//*default:*//*Label 47*/ GIMT_Encode4(2839),
1060
0
    /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(802), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1061
0
    /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(819),
1062
0
    /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(949),
1063
0
    /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(1007),
1064
0
    /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(1106),
1065
0
    /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(1123),
1066
0
    /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(1156),
1067
0
    /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(1173), GIMT_Encode4(0), GIMT_Encode4(0),
1068
0
    /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(1206),
1069
0
    /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(1345),
1070
0
    /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(1477), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1071
0
    /*TargetOpcode::G_UNMERGE_VALUES*//*Label 11*/ GIMT_Encode4(1567), GIMT_Encode4(0),
1072
0
    /*TargetOpcode::G_MERGE_VALUES*//*Label 12*/ GIMT_Encode4(1584),
1073
0
    /*TargetOpcode::G_BUILD_VECTOR*//*Label 13*/ GIMT_Encode4(1617),
1074
0
    /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 14*/ GIMT_Encode4(1634), GIMT_Encode4(0),
1075
0
    /*TargetOpcode::G_PTRTOINT*//*Label 15*/ GIMT_Encode4(1651),
1076
0
    /*TargetOpcode::G_INTTOPTR*//*Label 16*/ GIMT_Encode4(1678),
1077
0
    /*TargetOpcode::G_BITCAST*//*Label 17*/ GIMT_Encode4(1695), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1078
0
    /*TargetOpcode::G_LOAD*//*Label 18*/ GIMT_Encode4(1722),
1079
0
    /*TargetOpcode::G_SEXTLOAD*//*Label 19*/ GIMT_Encode4(1755),
1080
0
    /*TargetOpcode::G_ZEXTLOAD*//*Label 20*/ GIMT_Encode4(1788), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1081
0
    /*TargetOpcode::G_STORE*//*Label 21*/ GIMT_Encode4(1821), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1082
0
    /*TargetOpcode::G_ANYEXT*//*Label 22*/ GIMT_Encode4(1870),
1083
0
    /*TargetOpcode::G_TRUNC*//*Label 23*/ GIMT_Encode4(1903), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1084
0
    /*TargetOpcode::G_SEXT_INREG*//*Label 24*/ GIMT_Encode4(1952), GIMT_Encode4(0),
1085
0
    /*TargetOpcode::G_SHL*//*Label 25*/ GIMT_Encode4(2001),
1086
0
    /*TargetOpcode::G_LSHR*//*Label 26*/ GIMT_Encode4(2075),
1087
0
    /*TargetOpcode::G_ASHR*//*Label 27*/ GIMT_Encode4(2165), GIMT_Encode4(0), GIMT_Encode4(0),
1088
0
    /*TargetOpcode::G_ROTR*//*Label 28*/ GIMT_Encode4(2255),
1089
0
    /*TargetOpcode::G_ROTL*//*Label 29*/ GIMT_Encode4(2297),
1090
0
    /*TargetOpcode::G_ICMP*//*Label 30*/ GIMT_Encode4(2339), GIMT_Encode4(0),
1091
0
    /*TargetOpcode::G_SELECT*//*Label 31*/ GIMT_Encode4(2356), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1092
0
    /*TargetOpcode::G_FADD*//*Label 32*/ GIMT_Encode4(2452),
1093
0
    /*TargetOpcode::G_FSUB*//*Label 33*/ GIMT_Encode4(2494),
1094
0
    /*TargetOpcode::G_FMUL*//*Label 34*/ GIMT_Encode4(2511), GIMT_Encode4(0), GIMT_Encode4(0),
1095
0
    /*TargetOpcode::G_FDIV*//*Label 35*/ GIMT_Encode4(2553), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1096
0
    /*TargetOpcode::G_FNEG*//*Label 36*/ GIMT_Encode4(2570), GIMT_Encode4(0),
1097
0
    /*TargetOpcode::G_FPTRUNC*//*Label 37*/ GIMT_Encode4(2602),
1098
0
    /*TargetOpcode::G_FPTOSI*//*Label 38*/ GIMT_Encode4(2629),
1099
0
    /*TargetOpcode::G_FPTOUI*//*Label 39*/ GIMT_Encode4(2646),
1100
0
    /*TargetOpcode::G_SITOFP*//*Label 40*/ GIMT_Encode4(2663),
1101
0
    /*TargetOpcode::G_UITOFP*//*Label 41*/ GIMT_Encode4(2680), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1102
0
    /*TargetOpcode::G_PTR_ADD*//*Label 42*/ GIMT_Encode4(2697), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1103
0
    /*TargetOpcode::G_ABS*//*Label 43*/ GIMT_Encode4(2739), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1104
0
    /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 44*/ GIMT_Encode4(2756),
1105
0
    /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 45*/ GIMT_Encode4(2773),
1106
0
    /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 46*/ GIMT_Encode4(2806),
1107
    // Label 0: @802
1108
0
    GIM_Try, /*On fail goto*//*Label 48*/ GIMT_Encode4(818), // Rule ID 0 //
1109
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
1110
      // MIs[0] d
1111
      // No operand predicates
1112
      // MIs[0] s
1113
      // No operand predicates
1114
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
1115
      // Combiner Rule #0: copy_prop
1116
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner0),
1117
0
      GIR_Done,
1118
    // Label 48: @818
1119
0
    GIM_Reject,
1120
    // Label 1: @819
1121
0
    GIM_Try, /*On fail goto*//*Label 49*/ GIMT_Encode4(835), // Rule ID 34 //
1122
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1123
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
1124
      // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_ADD'
1125
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16),
1126
0
      GIR_Done,
1127
    // Label 49: @835
1128
0
    GIM_Try, /*On fail goto*//*Label 50*/ GIMT_Encode4(851), // Rule ID 95 //
1129
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
1130
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
1131
      // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_ADD'
1132
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
1133
0
      GIR_Done,
1134
    // Label 50: @851
1135
0
    GIM_Try, /*On fail goto*//*Label 51*/ GIMT_Encode4(887), // Rule ID 72 //
1136
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
1137
      // MIs[0] dst
1138
      // No operand predicates
1139
      // MIs[0] __add_sub_reg_match_0.tmp
1140
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1141
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
1142
      // MIs[1] src
1143
      // No operand predicates
1144
      // MIs[1] __add_sub_reg_match_0.x
1145
      // No operand predicates
1146
      // MIs[0] __add_sub_reg_match_0.x
1147
0
      GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
1148
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1149
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
1150
      // Combiner Rule #37: add_sub_reg @ [__add_sub_reg_match_0[1]]
1151
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1152
0
      GIR_EraseFromParent, /*InsnID*/0,
1153
0
      GIR_Done,
1154
    // Label 51: @887
1155
0
    GIM_Try, /*On fail goto*//*Label 52*/ GIMT_Encode4(923), // Rule ID 71 //
1156
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
1157
      // MIs[0] dst
1158
      // No operand predicates
1159
      // MIs[0] __add_sub_reg_match_0.x
1160
      // No operand predicates
1161
      // MIs[0] __add_sub_reg_match_0.tmp
1162
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
1163
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
1164
      // MIs[1] src
1165
      // No operand predicates
1166
      // MIs[1] __add_sub_reg_match_0.x
1167
0
      GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1168
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1169
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
1170
      // Combiner Rule #37: add_sub_reg @ [__add_sub_reg_match_0[0]]
1171
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1172
0
      GIR_EraseFromParent, /*InsnID*/0,
1173
0
      GIR_Done,
1174
    // Label 52: @923
1175
0
    GIM_Try, /*On fail goto*//*Label 53*/ GIMT_Encode4(948), // Rule ID 49 //
1176
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1177
      // MIs[0] dst
1178
      // No operand predicates
1179
      // MIs[0] lhs
1180
      // No operand predicates
1181
      // MIs[0] Operand 2
1182
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1183
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1184
      // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[1]]
1185
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1186
0
      GIR_EraseFromParent, /*InsnID*/0,
1187
0
      GIR_Done,
1188
    // Label 53: @948
1189
0
    GIM_Reject,
1190
    // Label 2: @949
1191
0
    GIM_Try, /*On fail goto*//*Label 54*/ GIMT_Encode4(965), // Rule ID 35 //
1192
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1193
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
1194
      // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_SUB'
1195
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16),
1196
0
      GIR_Done,
1197
    // Label 54: @965
1198
0
    GIM_Try, /*On fail goto*//*Label 55*/ GIMT_Encode4(981), // Rule ID 98 //
1199
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
1200
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
1201
      // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_SUB'
1202
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
1203
0
      GIR_Done,
1204
    // Label 55: @981
1205
0
    GIM_Try, /*On fail goto*//*Label 56*/ GIMT_Encode4(1006), // Rule ID 48 //
1206
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1207
      // MIs[0] dst
1208
      // No operand predicates
1209
      // MIs[0] lhs
1210
      // No operand predicates
1211
      // MIs[0] Operand 2
1212
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1213
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1214
      // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[0]]
1215
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1216
0
      GIR_EraseFromParent, /*InsnID*/0,
1217
0
      GIR_Done,
1218
    // Label 56: @1006
1219
0
    GIM_Reject,
1220
    // Label 3: @1007
1221
0
    GIM_Try, /*On fail goto*//*Label 57*/ GIMT_Encode4(1023), // Rule ID 18 //
1222
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
1223
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
1224
      // Combiner Rule #11: mul_const; wip_match_opcode 'G_MUL'
1225
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner10),
1226
0
      GIR_Done,
1227
    // Label 57: @1023
1228
0
    GIM_Try, /*On fail goto*//*Label 58*/ GIMT_Encode4(1039), // Rule ID 36 //
1229
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1230
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
1231
      // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_MUL'
1232
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16),
1233
0
      GIR_Done,
1234
    // Label 58: @1039
1235
0
    GIM_Try, /*On fail goto*//*Label 59*/ GIMT_Encode4(1055), // Rule ID 86 //
1236
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
1237
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
1238
      // Combiner Rule #48: undef_to_int_zero; wip_match_opcode 'G_MUL'
1239
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25),
1240
0
      GIR_Done,
1241
    // Label 59: @1055
1242
0
    GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(1080), // Rule ID 64 //
1243
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
1244
      // MIs[0] dst
1245
      // No operand predicates
1246
      // MIs[0] lhs
1247
      // No operand predicates
1248
      // MIs[0] zero
1249
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1250
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1251
      // Combiner Rule #30: binop_right_to_zero
1252
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1253
0
      GIR_EraseFromParent, /*InsnID*/0,
1254
0
      GIR_Done,
1255
    // Label 60: @1080
1256
0
    GIM_Try, /*On fail goto*//*Label 61*/ GIMT_Encode4(1105), // Rule ID 69 //
1257
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
1258
      // MIs[0] dst
1259
      // No operand predicates
1260
      // MIs[0] x
1261
      // No operand predicates
1262
      // MIs[0] Operand 2
1263
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
1264
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1265
      // Combiner Rule #35: right_identity_one_int
1266
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1267
0
      GIR_EraseFromParent, /*InsnID*/0,
1268
0
      GIR_Done,
1269
    // Label 61: @1105
1270
0
    GIM_Reject,
1271
    // Label 4: @1106
1272
0
    GIM_Try, /*On fail goto*//*Label 62*/ GIMT_Encode4(1122), // Rule ID 60 //
1273
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
1274
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26),
1275
      // Combiner Rule #29: binop_left_to_zero; wip_match_opcode 'G_SDIV'
1276
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
1277
0
      GIR_Done,
1278
    // Label 62: @1122
1279
0
    GIM_Reject,
1280
    // Label 5: @1123
1281
0
    GIM_Try, /*On fail goto*//*Label 63*/ GIMT_Encode4(1139), // Rule ID 61 //
1282
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
1283
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26),
1284
      // Combiner Rule #29: binop_left_to_zero; wip_match_opcode 'G_UDIV'
1285
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
1286
0
      GIR_Done,
1287
    // Label 63: @1139
1288
0
    GIM_Try, /*On fail goto*//*Label 64*/ GIMT_Encode4(1155), // Rule ID 89 //
1289
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
1290
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40),
1291
      // Combiner Rule #50: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
1292
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25),
1293
0
      GIR_Done,
1294
    // Label 64: @1155
1295
0
    GIM_Reject,
1296
    // Label 6: @1156
1297
0
    GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(1172), // Rule ID 62 //
1298
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
1299
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26),
1300
      // Combiner Rule #29: binop_left_to_zero; wip_match_opcode 'G_SREM'
1301
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
1302
0
      GIR_Done,
1303
    // Label 65: @1172
1304
0
    GIM_Reject,
1305
    // Label 7: @1173
1306
0
    GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1189), // Rule ID 63 //
1307
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
1308
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26),
1309
      // Combiner Rule #29: binop_left_to_zero; wip_match_opcode 'G_UREM'
1310
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
1311
0
      GIR_Done,
1312
    // Label 66: @1189
1313
0
    GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1205), // Rule ID 90 //
1314
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
1315
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40),
1316
      // Combiner Rule #50: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
1317
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25),
1318
0
      GIR_Done,
1319
    // Label 67: @1205
1320
0
    GIM_Reject,
1321
    // Label 8: @1206
1322
0
    GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(1222), // Rule ID 4 //
1323
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
1324
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
1325
      // Combiner Rule #2: load_and_mask; wip_match_opcode 'G_AND'
1326
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1327
0
      GIR_Done,
1328
    // Label 68: @1222
1329
0
    GIM_Try, /*On fail goto*//*Label 69*/ GIMT_Encode4(1238), // Rule ID 11 //
1330
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1331
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
1332
      // Combiner Rule #6: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
1333
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner6),
1334
0
      GIR_Done,
1335
    // Label 69: @1238
1336
0
    GIM_Try, /*On fail goto*//*Label 70*/ GIMT_Encode4(1254), // Rule ID 14 //
1337
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
1338
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
1339
      // Combiner Rule #7: redundant_and; wip_match_opcode 'G_AND'
1340
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
1341
0
      GIR_Done,
1342
    // Label 70: @1254
1343
0
    GIM_Try, /*On fail goto*//*Label 71*/ GIMT_Encode4(1270), // Rule ID 21 //
1344
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
1345
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
1346
      // Combiner Rule #14: bitfield_extract_from_and; wip_match_opcode 'G_AND'
1347
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1348
0
      GIR_Done,
1349
    // Label 71: @1270
1350
0
    GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1286), // Rule ID 37 //
1351
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1352
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
1353
      // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_AND'
1354
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16),
1355
0
      GIR_Done,
1356
    // Label 72: @1286
1357
0
    GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(1302), // Rule ID 81 //
1358
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
1359
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner37),
1360
      // Combiner Rule #45: overlapping_and; wip_match_opcode 'G_AND'
1361
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1362
0
      GIR_Done,
1363
    // Label 73: @1302
1364
0
    GIM_Try, /*On fail goto*//*Label 74*/ GIMT_Encode4(1318), // Rule ID 85 //
1365
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
1366
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
1367
      // Combiner Rule #48: undef_to_int_zero; wip_match_opcode 'G_AND'
1368
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25),
1369
0
      GIR_Done,
1370
    // Label 74: @1318
1371
0
    GIM_Try, /*On fail goto*//*Label 75*/ GIMT_Encode4(1344), // Rule ID 58 //
1372
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
1373
      // MIs[0] dst
1374
      // No operand predicates
1375
      // MIs[0] src
1376
      // No operand predicates
1377
      // MIs[0] src
1378
0
      GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1379
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1380
      // Combiner Rule #28: binop_same_val @ [__binop_same_val_match_0[0]]
1381
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1382
0
      GIR_EraseFromParent, /*InsnID*/0,
1383
0
      GIR_Done,
1384
    // Label 75: @1344
1385
0
    GIM_Reject,
1386
    // Label 9: @1345
1387
0
    GIM_Try, /*On fail goto*//*Label 76*/ GIMT_Encode4(1361), // Rule ID 12 //
1388
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1389
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
1390
      // Combiner Rule #6: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
1391
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner6),
1392
0
      GIR_Done,
1393
    // Label 76: @1361
1394
0
    GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1377), // Rule ID 17 //
1395
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1396
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
1397
      // Combiner Rule #10: redundant_or; wip_match_opcode 'G_OR'
1398
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
1399
0
      GIR_Done,
1400
    // Label 77: @1377
1401
0
    GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(1393), // Rule ID 38 //
1402
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1403
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
1404
      // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_OR'
1405
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16),
1406
0
      GIR_Done,
1407
    // Label 78: @1393
1408
0
    GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(1409), // Rule ID 87 //
1409
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
1410
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
1411
      // Combiner Rule #49: undef_to_negative_one; wip_match_opcode 'G_OR'
1412
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner26),
1413
0
      GIR_Done,
1414
    // Label 79: @1409
1415
0
    GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(1425), // Rule ID 108 //
1416
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
1417
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
1418
      // Combiner Rule #60: or_to_bsp; wip_match_opcode 'G_OR'
1419
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner29),
1420
0
      GIR_Done,
1421
    // Label 80: @1425
1422
0
    GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1451), // Rule ID 59 //
1423
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
1424
      // MIs[0] dst
1425
      // No operand predicates
1426
      // MIs[0] src
1427
      // No operand predicates
1428
      // MIs[0] src
1429
0
      GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1430
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1431
      // Combiner Rule #28: binop_same_val @ [__binop_same_val_match_0[1]]
1432
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1433
0
      GIR_EraseFromParent, /*InsnID*/0,
1434
0
      GIR_Done,
1435
    // Label 81: @1451
1436
0
    GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1476), // Rule ID 50 //
1437
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1438
      // MIs[0] dst
1439
      // No operand predicates
1440
      // MIs[0] lhs
1441
      // No operand predicates
1442
      // MIs[0] Operand 2
1443
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1444
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1445
      // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[2]]
1446
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1447
0
      GIR_EraseFromParent, /*InsnID*/0,
1448
0
      GIR_Done,
1449
    // Label 82: @1476
1450
0
    GIM_Reject,
1451
    // Label 10: @1477
1452
0
    GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1493), // Rule ID 13 //
1453
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1454
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
1455
      // Combiner Rule #6: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
1456
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner6),
1457
0
      GIR_Done,
1458
    // Label 83: @1493
1459
0
    GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(1509), // Rule ID 15 //
1460
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
1461
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
1462
      // Combiner Rule #8: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
1463
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner8),
1464
0
      GIR_Done,
1465
    // Label 84: @1509
1466
0
    GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1525), // Rule ID 39 //
1467
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1468
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
1469
      // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_XOR'
1470
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16),
1471
0
      GIR_Done,
1472
    // Label 85: @1525
1473
0
    GIM_Try, /*On fail goto*//*Label 86*/ GIMT_Encode4(1541), // Rule ID 99 //
1474
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
1475
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
1476
      // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_XOR'
1477
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
1478
0
      GIR_Done,
1479
    // Label 86: @1541
1480
0
    GIM_Try, /*On fail goto*//*Label 87*/ GIMT_Encode4(1566), // Rule ID 51 //
1481
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1482
      // MIs[0] dst
1483
      // No operand predicates
1484
      // MIs[0] lhs
1485
      // No operand predicates
1486
      // MIs[0] Operand 2
1487
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1488
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1489
      // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[3]]
1490
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1491
0
      GIR_EraseFromParent, /*InsnID*/0,
1492
0
      GIR_Done,
1493
    // Label 87: @1566
1494
0
    GIM_Reject,
1495
    // Label 11: @1567
1496
0
    GIM_Try, /*On fail goto*//*Label 88*/ GIMT_Encode4(1583), // Rule ID 104 //
1497
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
1498
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner45),
1499
      // Combiner Rule #57: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
1500
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1501
0
      GIR_Done,
1502
    // Label 88: @1583
1503
0
    GIM_Reject,
1504
    // Label 12: @1584
1505
0
    GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(1600), // Rule ID 29 //
1506
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
1507
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
1508
      // Combiner Rule #19: merge_unmerge; wip_match_opcode 'G_MERGE_VALUES'
1509
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
1510
0
      GIR_Done,
1511
    // Label 89: @1600
1512
0
    GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(1616), // Rule ID 33 //
1513
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
1514
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
1515
      // Combiner Rule #23: fold_merge_to_zext; wip_match_opcode 'G_MERGE_VALUES'
1516
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner15),
1517
0
      GIR_Done,
1518
    // Label 90: @1616
1519
0
    GIM_Reject,
1520
    // Label 13: @1617
1521
0
    GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(1633), // Rule ID 74 //
1522
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
1523
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
1524
      // Combiner Rule #38: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
1525
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
1526
0
      GIR_Done,
1527
    // Label 91: @1633
1528
0
    GIM_Reject,
1529
    // Label 14: @1634
1530
0
    GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(1650), // Rule ID 73 //
1531
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
1532
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
1533
      // Combiner Rule #38: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
1534
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
1535
0
      GIR_Done,
1536
    // Label 92: @1650
1537
0
    GIM_Reject,
1538
    // Label 15: @1651
1539
0
    GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(1677), // Rule ID 66 //
1540
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
1541
      // MIs[0] dst
1542
      // No operand predicates
1543
      // MIs[0] t
1544
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1545
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
1546
      // MIs[1] ptr
1547
      // No operand predicates
1548
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
1549
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
1550
      // Combiner Rule #32: i2p_to_p2i
1551
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner20),
1552
0
      GIR_Done,
1553
    // Label 93: @1677
1554
0
    GIM_Reject,
1555
    // Label 16: @1678
1556
0
    GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(1694), // Rule ID 65 //
1557
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
1558
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
1559
      // Combiner Rule #31: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
1560
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner19),
1561
0
      GIR_Done,
1562
    // Label 94: @1694
1563
0
    GIM_Reject,
1564
    // Label 17: @1695
1565
0
    GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(1721), // Rule ID 77 //
1566
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
1567
      // MIs[0] dst
1568
      // No operand predicates
1569
      // MIs[0] src1
1570
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1571
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
1572
      // MIs[1] src0
1573
      // No operand predicates
1574
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner34),
1575
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
1576
      // Combiner Rule #41: bitcast_bitcast_fold
1577
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner21),
1578
0
      GIR_Done,
1579
    // Label 95: @1721
1580
0
    GIM_Reject,
1581
    // Label 18: @1722
1582
0
    GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1738), // Rule ID 1 //
1583
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1584
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1585
      // Combiner Rule #1: extending_loads; wip_match_opcode 'G_LOAD'
1586
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner1),
1587
0
      GIR_Done,
1588
    // Label 96: @1738
1589
0
    GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1754), // Rule ID 5 //
1590
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1591
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
1592
      // Combiner Rule #3: combine_indexed_load_store; wip_match_opcode 'G_LOAD'
1593
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner3),
1594
0
      GIR_Done,
1595
    // Label 97: @1754
1596
0
    GIM_Reject,
1597
    // Label 19: @1755
1598
0
    GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1771), // Rule ID 2 //
1599
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1600
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1601
      // Combiner Rule #1: extending_loads; wip_match_opcode 'G_SEXTLOAD'
1602
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner1),
1603
0
      GIR_Done,
1604
    // Label 98: @1771
1605
0
    GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1787), // Rule ID 6 //
1606
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1607
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
1608
      // Combiner Rule #3: combine_indexed_load_store; wip_match_opcode 'G_SEXTLOAD'
1609
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner3),
1610
0
      GIR_Done,
1611
    // Label 99: @1787
1612
0
    GIM_Reject,
1613
    // Label 20: @1788
1614
0
    GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1804), // Rule ID 3 //
1615
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1616
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1617
      // Combiner Rule #1: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
1618
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner1),
1619
0
      GIR_Done,
1620
    // Label 100: @1804
1621
0
    GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1820), // Rule ID 7 //
1622
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1623
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
1624
      // Combiner Rule #3: combine_indexed_load_store; wip_match_opcode 'G_ZEXTLOAD'
1625
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner3),
1626
0
      GIR_Done,
1627
    // Label 101: @1820
1628
0
    GIM_Reject,
1629
    // Label 21: @1821
1630
0
    GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1837), // Rule ID 8 //
1631
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1632
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
1633
      // Combiner Rule #3: combine_indexed_load_store; wip_match_opcode 'G_STORE'
1634
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner3),
1635
0
      GIR_Done,
1636
    // Label 102: @1837
1637
0
    GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1853), // Rule ID 82 //
1638
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
1639
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner38),
1640
      // Combiner Rule #46: split_store_zero_128; wip_match_opcode 'G_STORE'
1641
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner23),
1642
0
      GIR_Done,
1643
    // Label 103: @1853
1644
0
    GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1869), // Rule ID 103 //
1645
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
1646
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner44),
1647
      // Combiner Rule #56: erase_undef_store; wip_match_opcode 'G_STORE'
1648
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner28),
1649
0
      GIR_Done,
1650
    // Label 104: @1869
1651
0
    GIM_Reject,
1652
    // Label 22: @1870
1653
0
    GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1886), // Rule ID 10 //
1654
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1655
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
1656
      // Combiner Rule #5: mutate_anyext_to_zext; wip_match_opcode 'G_ANYEXT'
1657
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner5),
1658
0
      GIR_Done,
1659
    // Label 105: @1886
1660
0
    GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1902), // Rule ID 67 //
1661
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
1662
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner29),
1663
      // Combiner Rule #33: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
1664
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
1665
0
      GIR_Done,
1666
    // Label 106: @1902
1667
0
    GIM_Reject,
1668
    // Label 23: @1903
1669
0
    GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1919), // Rule ID 75 //
1670
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
1671
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner32),
1672
      // Combiner Rule #39: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
1673
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
1674
0
      GIR_Done,
1675
    // Label 107: @1919
1676
0
    GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1935), // Rule ID 76 //
1677
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
1678
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner33),
1679
      // Combiner Rule #40: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
1680
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner7),
1681
0
      GIR_Done,
1682
    // Label 108: @1935
1683
0
    GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1951), // Rule ID 100 //
1684
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
1685
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
1686
      // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_TRUNC'
1687
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
1688
0
      GIR_Done,
1689
    // Label 109: @1951
1690
0
    GIM_Reject,
1691
    // Label 24: @1952
1692
0
    GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1968), // Rule ID 9 //
1693
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
1694
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
1695
      // Combiner Rule #4: sext_trunc_sextload; wip_match_opcode 'G_SEXT_INREG'
1696
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner4),
1697
0
      GIR_Done,
1698
    // Label 110: @1968
1699
0
    GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1984), // Rule ID 19 //
1700
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1701
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
1702
      // Combiner Rule #12: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
1703
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner11),
1704
0
      GIR_Done,
1705
    // Label 111: @1984
1706
0
    GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(2000), // Rule ID 20 //
1707
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
1708
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
1709
      // Combiner Rule #13: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
1710
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1711
0
      GIR_Done,
1712
    // Label 112: @2000
1713
0
    GIM_Reject,
1714
    // Label 25: @2001
1715
0
    GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(2017), // Rule ID 40 //
1716
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1717
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
1718
      // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_SHL'
1719
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16),
1720
0
      GIR_Done,
1721
    // Label 113: @2017
1722
0
    GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(2033), // Rule ID 88 //
1723
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
1724
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40),
1725
      // Combiner Rule #50: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
1726
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25),
1727
0
      GIR_Done,
1728
    // Label 114: @2033
1729
0
    GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(2049), // Rule ID 91 //
1730
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
1731
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner41),
1732
      // Combiner Rule #51: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
1733
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
1734
0
      GIR_Done,
1735
    // Label 115: @2049
1736
0
    GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(2074), // Rule ID 52 //
1737
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1738
      // MIs[0] dst
1739
      // No operand predicates
1740
      // MIs[0] lhs
1741
      // No operand predicates
1742
      // MIs[0] Operand 2
1743
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1744
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1745
      // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[4]]
1746
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1747
0
      GIR_EraseFromParent, /*InsnID*/0,
1748
0
      GIR_Done,
1749
    // Label 116: @2074
1750
0
    GIM_Reject,
1751
    // Label 26: @2075
1752
0
    GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(2091), // Rule ID 23 //
1753
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
1754
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
1755
      // Combiner Rule #15: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
1756
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1757
0
      GIR_Done,
1758
    // Label 117: @2091
1759
0
    GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(2107), // Rule ID 25 //
1760
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
1761
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
1762
      // Combiner Rule #16: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
1763
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1764
0
      GIR_Done,
1765
    // Label 118: @2107
1766
0
    GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(2123), // Rule ID 41 //
1767
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1768
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
1769
      // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_LSHR'
1770
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16),
1771
0
      GIR_Done,
1772
    // Label 119: @2123
1773
0
    GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(2139), // Rule ID 93 //
1774
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
1775
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner41),
1776
      // Combiner Rule #51: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
1777
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
1778
0
      GIR_Done,
1779
    // Label 120: @2139
1780
0
    GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(2164), // Rule ID 54 //
1781
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1782
      // MIs[0] dst
1783
      // No operand predicates
1784
      // MIs[0] lhs
1785
      // No operand predicates
1786
      // MIs[0] Operand 2
1787
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1788
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1789
      // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[6]]
1790
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1791
0
      GIR_EraseFromParent, /*InsnID*/0,
1792
0
      GIR_Done,
1793
    // Label 121: @2164
1794
0
    GIM_Reject,
1795
    // Label 27: @2165
1796
0
    GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(2181), // Rule ID 22 //
1797
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
1798
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
1799
      // Combiner Rule #15: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
1800
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1801
0
      GIR_Done,
1802
    // Label 122: @2181
1803
0
    GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(2197), // Rule ID 24 //
1804
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
1805
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
1806
      // Combiner Rule #16: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
1807
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1808
0
      GIR_Done,
1809
    // Label 123: @2197
1810
0
    GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(2213), // Rule ID 42 //
1811
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1812
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
1813
      // Combiner Rule #24: constant_fold_binop; wip_match_opcode 'G_ASHR'
1814
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner16),
1815
0
      GIR_Done,
1816
    // Label 124: @2213
1817
0
    GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(2229), // Rule ID 92 //
1818
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
1819
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner41),
1820
      // Combiner Rule #51: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
1821
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
1822
0
      GIR_Done,
1823
    // Label 125: @2229
1824
0
    GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(2254), // Rule ID 53 //
1825
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1826
      // MIs[0] dst
1827
      // No operand predicates
1828
      // MIs[0] lhs
1829
      // No operand predicates
1830
      // MIs[0] Operand 2
1831
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1832
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1833
      // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[5]]
1834
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1835
0
      GIR_EraseFromParent, /*InsnID*/0,
1836
0
      GIR_Done,
1837
    // Label 126: @2254
1838
0
    GIM_Reject,
1839
    // Label 28: @2255
1840
0
    GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(2271), // Rule ID 26 //
1841
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1842
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
1843
      // Combiner Rule #17: rotate_out_of_range; wip_match_opcode 'G_ROTR'
1844
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner12),
1845
0
      GIR_Done,
1846
    // Label 127: @2271
1847
0
    GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(2296), // Rule ID 57 //
1848
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1849
      // MIs[0] dst
1850
      // No operand predicates
1851
      // MIs[0] lhs
1852
      // No operand predicates
1853
      // MIs[0] Operand 2
1854
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1855
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1856
      // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[9]]
1857
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1858
0
      GIR_EraseFromParent, /*InsnID*/0,
1859
0
      GIR_Done,
1860
    // Label 128: @2296
1861
0
    GIM_Reject,
1862
    // Label 29: @2297
1863
0
    GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(2313), // Rule ID 27 //
1864
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1865
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
1866
      // Combiner Rule #17: rotate_out_of_range; wip_match_opcode 'G_ROTL'
1867
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner12),
1868
0
      GIR_Done,
1869
    // Label 129: @2313
1870
0
    GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(2338), // Rule ID 56 //
1871
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1872
      // MIs[0] dst
1873
      // No operand predicates
1874
      // MIs[0] lhs
1875
      // No operand predicates
1876
      // MIs[0] Operand 2
1877
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1878
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1879
      // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[8]]
1880
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1881
0
      GIR_EraseFromParent, /*InsnID*/0,
1882
0
      GIR_Done,
1883
    // Label 130: @2338
1884
0
    GIM_Reject,
1885
    // Label 30: @2339
1886
0
    GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(2355), // Rule ID 28 //
1887
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
1888
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
1889
      // Combiner Rule #18: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
1890
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner13),
1891
0
      GIR_Done,
1892
    // Label 131: @2355
1893
0
    GIM_Reject,
1894
    // Label 31: @2356
1895
0
    GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(2372), // Rule ID 31 //
1896
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
1897
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
1898
      // Combiner Rule #21: select_constant_cmp; wip_match_opcode 'G_SELECT'
1899
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner14),
1900
0
      GIR_Done,
1901
    // Label 132: @2372
1902
0
    GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(2388), // Rule ID 32 //
1903
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
1904
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21),
1905
      // Combiner Rule #22: match_selects; wip_match_opcode 'G_SELECT'
1906
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1907
0
      GIR_Done,
1908
    // Label 133: @2388
1909
0
    GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(2404), // Rule ID 47 //
1910
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1911
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner25),
1912
      // Combiner Rule #26: select_same_val; wip_match_opcode 'G_SELECT'
1913
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner18),
1914
0
      GIR_Done,
1915
    // Label 134: @2404
1916
0
    GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2420), // Rule ID 107 //
1917
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
1918
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner47),
1919
      // Combiner Rule #59: select_to_minmax; wip_match_opcode 'G_SELECT'
1920
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner2),
1921
0
      GIR_Done,
1922
    // Label 135: @2420
1923
0
    GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2451), // Rule ID 30 //
1924
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
1925
      // MIs[0] dst
1926
      // No operand predicates
1927
      // MIs[0] undef
1928
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1929
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
1930
      // MIs[0] x
1931
      // No operand predicates
1932
      // MIs[0] y
1933
      // No operand predicates
1934
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
1935
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
1936
      // Combiner Rule #20: select_undef_cmp
1937
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
1938
0
      GIR_EraseFromParent, /*InsnID*/0,
1939
0
      GIR_Done,
1940
    // Label 136: @2451
1941
0
    GIM_Reject,
1942
    // Label 32: @2452
1943
0
    GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2468), // Rule ID 43 //
1944
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1945
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
1946
      // Combiner Rule #25: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
1947
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
1948
0
      GIR_Done,
1949
    // Label 137: @2468
1950
0
    GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2493), // Rule ID 79 //
1951
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
1952
      // MIs[0] dst
1953
      // No operand predicates
1954
      // MIs[0] x
1955
      // No operand predicates
1956
      // MIs[0] y
1957
      // No operand predicates
1958
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner35),
1959
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1960
      // Combiner Rule #43: right_identity_neg_zero_fp
1961
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1962
0
      GIR_EraseFromParent, /*InsnID*/0,
1963
0
      GIR_Done,
1964
    // Label 138: @2493
1965
0
    GIM_Reject,
1966
    // Label 33: @2494
1967
0
    GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2510), // Rule ID 44 //
1968
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1969
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
1970
      // Combiner Rule #25: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
1971
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
1972
0
      GIR_Done,
1973
    // Label 139: @2510
1974
0
    GIM_Reject,
1975
    // Label 34: @2511
1976
0
    GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2527), // Rule ID 45 //
1977
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1978
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
1979
      // Combiner Rule #25: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
1980
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
1981
0
      GIR_Done,
1982
    // Label 140: @2527
1983
0
    GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2552), // Rule ID 70 //
1984
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
1985
      // MIs[0] dst
1986
      // No operand predicates
1987
      // MIs[0] x
1988
      // No operand predicates
1989
      // MIs[0] y
1990
      // No operand predicates
1991
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner30),
1992
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1993
      // Combiner Rule #36: right_identity_one_fp
1994
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1995
0
      GIR_EraseFromParent, /*InsnID*/0,
1996
0
      GIR_Done,
1997
    // Label 141: @2552
1998
0
    GIM_Reject,
1999
    // Label 35: @2553
2000
0
    GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2569), // Rule ID 46 //
2001
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
2002
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
2003
      // Combiner Rule #25: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
2004
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner17),
2005
0
      GIR_Done,
2006
    // Label 142: @2569
2007
0
    GIM_Reject,
2008
    // Label 36: @2570
2009
0
    GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2601), // Rule ID 68 //
2010
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
2011
      // MIs[0] dst
2012
      // No operand predicates
2013
      // MIs[0] t
2014
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2015
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
2016
      // MIs[1] src
2017
      // No operand predicates
2018
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2019
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
2020
      // Combiner Rule #34: fneg_fneg_fold
2021
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2022
0
      GIR_EraseFromParent, /*InsnID*/0,
2023
0
      GIR_Done,
2024
    // Label 143: @2601
2025
0
    GIM_Reject,
2026
    // Label 37: @2602
2027
0
    GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2628), // Rule ID 78 //
2028
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
2029
      // MIs[0] dst
2030
      // No operand predicates
2031
      // MIs[0] src1
2032
0
      GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2033
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
2034
      // MIs[1] src0
2035
      // No operand predicates
2036
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner34),
2037
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
2038
      // Combiner Rule #42: fptrunc_fpext_fold
2039
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner21),
2040
0
      GIR_Done,
2041
    // Label 144: @2628
2042
0
    GIM_Reject,
2043
    // Label 38: @2629
2044
0
    GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2645), // Rule ID 96 //
2045
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
2046
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
2047
      // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_FPTOSI'
2048
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
2049
0
      GIR_Done,
2050
    // Label 145: @2645
2051
0
    GIM_Reject,
2052
    // Label 39: @2646
2053
0
    GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2662), // Rule ID 97 //
2054
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
2055
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
2056
      // Combiner Rule #53: propagate_undef_any_op; wip_match_opcode 'G_FPTOUI'
2057
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
2058
0
      GIR_Done,
2059
    // Label 146: @2662
2060
0
    GIM_Reject,
2061
    // Label 40: @2663
2062
0
    GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2679), // Rule ID 84 //
2063
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
2064
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
2065
      // Combiner Rule #47: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
2066
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner24),
2067
0
      GIR_Done,
2068
    // Label 147: @2679
2069
0
    GIM_Reject,
2070
    // Label 41: @2680
2071
0
    GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2696), // Rule ID 83 //
2072
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
2073
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
2074
      // Combiner Rule #47: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
2075
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner24),
2076
0
      GIR_Done,
2077
    // Label 148: @2696
2078
0
    GIM_Reject,
2079
    // Label 42: @2697
2080
0
    GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2713), // Rule ID 80 //
2081
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
2082
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner36),
2083
      // Combiner Rule #44: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
2084
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner22),
2085
0
      GIR_Done,
2086
    // Label 149: @2713
2087
0
    GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2738), // Rule ID 55 //
2088
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
2089
      // MIs[0] dst
2090
      // No operand predicates
2091
      // MIs[0] lhs
2092
      // No operand predicates
2093
      // MIs[0] Operand 2
2094
0
      GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2095
0
      GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2096
      // Combiner Rule #27: right_identity_zero @ [__right_identity_zero_match_0[7]]
2097
0
      GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2098
0
      GIR_EraseFromParent, /*InsnID*/0,
2099
0
      GIR_Done,
2100
    // Label 150: @2738
2101
0
    GIM_Reject,
2102
    // Label 43: @2739
2103
0
    GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2755), // Rule ID 94 //
2104
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
2105
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40),
2106
      // Combiner Rule #52: unary_undef_to_zero; wip_match_opcode 'G_ABS'
2107
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner25),
2108
0
      GIR_Done,
2109
    // Label 151: @2755
2110
0
    GIM_Reject,
2111
    // Label 44: @2756
2112
0
    GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2772), // Rule ID 105 //
2113
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
2114
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner46),
2115
      // Combiner Rule #58: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
2116
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
2117
0
      GIR_Done,
2118
    // Label 152: @2772
2119
0
    GIM_Reject,
2120
    // Label 45: @2773
2121
0
    GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2789), // Rule ID 16 //
2122
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
2123
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
2124
      // Combiner Rule #9: extractvecelt_pairwise_add; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
2125
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner9),
2126
0
      GIR_Done,
2127
    // Label 153: @2789
2128
0
    GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2805), // Rule ID 106 //
2129
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
2130
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner46),
2131
      // Combiner Rule #58: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
2132
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
2133
0
      GIR_Done,
2134
    // Label 154: @2805
2135
0
    GIM_Reject,
2136
    // Label 46: @2806
2137
0
    GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2822), // Rule ID 101 //
2138
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
2139
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner42),
2140
      // Combiner Rule #54: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
2141
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
2142
0
      GIR_Done,
2143
    // Label 155: @2822
2144
0
    GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2838), // Rule ID 102 //
2145
0
      GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
2146
0
      GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner43),
2147
      // Combiner Rule #55: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
2148
0
      GIR_CustomAction, GIMT_Encode2(GICXXCustomAction_CombineApplyGICombiner27),
2149
0
      GIR_Done,
2150
    // Label 156: @2838
2151
0
    GIM_Reject,
2152
    // Label 47: @2839
2153
0
    GIM_Reject,
2154
0
    }; // Size: 2840 bytes
2155
0
  return MatchTable0;
2156
0
}
2157
#undef GIMT_Encode2
2158
#undef GIMT_Encode4
2159
#undef GIMT_Encode8
2160
2161
#endif // ifdef GET_GICOMBINER_IMPL
2162
2163
#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
2164
AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
2165
AvailableFunctionFeatures()
2166
#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
2167
#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
2168
, State(0),
2169
ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
2170
#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
2171