/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* AArch64PostLegalizerCombinerImpl Combiner Match Table                      *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

#ifdef GET_GICOMBINER_DEPS
#include "llvm/ADT/SparseBitVector.h"
namespace llvm {
extern cl::OptionCategory GICombinerOptionCategory;
} // end namespace llvm
#endif // ifdef GET_GICOMBINER_DEPS

#ifdef GET_GICOMBINER_TYPES
struct AArch64PostLegalizerCombinerImplRuleConfig {
  SparseBitVector<> DisabledRules;

  bool isRuleEnabled(unsigned RuleID) const;
  bool parseCommandLineOption();
  bool setRuleEnabled(StringRef RuleIdentifier);
  bool setRuleDisabled(StringRef RuleIdentifier);
};

static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
  uint64_t I;
  // getAtInteger(...) returns false on success
  bool Parsed = !RuleIdentifier.getAsInteger(0, I);
  if (Parsed)
    return I;

#ifndef NDEBUG
  switch (RuleIdentifier.size()) {
  default: break;
  case 9:	 // 3 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'c':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
        break;
      return 0;	 // "copy_prop"
    case 'm':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ul_const", 8) != 0)
        break;
      return 32;	 // "mul_const"
    case 'o':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "r_to_bsp", 8) != 0)
        break;
      return 95;	 // "or_to_bsp"
    }
    break;
  case 10:	 // 2 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'i':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
        break;
      return 65;	 // "i2p_to_p2i"
    case 'p':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
        break;
      return 64;	 // "p2i_to_i2p"
    }
    break;
  case 11:	 // 6 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'a':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
        break;
      return 70;	 // "add_sub_reg"
    case 'm':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
        break;
      return 40;	 // "match_addos"
    case 't':	 // 3 strings to match.
      if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
        break;
      switch (RuleIdentifier[6]) {
      default: break;
      case 's':	 // 2 strings to match.
        if (memcmp(RuleIdentifier.data()+7, "sat", 3) != 0)
          break;
        switch (RuleIdentifier[10]) {
        default: break;
        case 's':	 // 1 string to match.
          return 105;	 // "trunc_ssats"
        case 'u':	 // 1 string to match.
          return 106;	 // "trunc_ssatu"
        }
        break;
      case 'u':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
          break;
        return 107;	 // "trunc_usatu"
      }
      break;
    case 'u':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
        break;
      return 50;	 // "unmerge_cst"
    }
    break;
  case 12:	 // 4 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'e':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "xtmultomull", 11) != 0)
        break;
      return 104;	 // "extmultomull"
    case 'r':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
        break;
      return 31;	 // "redundant_or"
    case 's':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ext_of_sext", 11) != 0)
        break;
      return 6;	 // "sext_of_sext"
    case 'z':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
        break;
      return 4;	 // "zext_of_zext"
    }
    break;
  case 13:	 // 6 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'l':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
        break;
      return 24;	 // "load_and_mask"
    case 'm':	 // 2 strings to match.
      switch (RuleIdentifier[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
          break;
        return 45;	 // "match_selects"
      case 'e':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
          break;
        return 49;	 // "merge_unmerge"
      }
      break;
    case 'r':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
        break;
      return 28;	 // "redundant_and"
    case 'u':	 // 2 strings to match.
      if (memcmp(RuleIdentifier.data()+1, "nmerge_", 7) != 0)
        break;
      switch (RuleIdentifier[8]) {
      default: break;
      case 'm':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
          break;
        return 48;	 // "unmerge_merge"
      case 'u':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
          break;
        return 51;	 // "unmerge_undef"
      }
      break;
    }
    break;
  case 14:	 // 6 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'a':	 // 2 strings to match.
      if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
        break;
      switch (RuleIdentifier[10]) {
      default: break;
      case 's':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
          break;
        return 10;	 // "anyext_of_sext"
      case 'z':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
          break;
        return 9;	 // "anyext_of_zext"
      }
      break;
    case 'b':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0)
        break;
      return 61;	 // "binop_same_val"
    case 'f':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "neg_fneg_fold", 13) != 0)
        break;
      return 67;	 // "fneg_fneg_fold"
    case 's':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
        break;
      return 7;	 // "sext_of_anyext"
    case 'z':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
        break;
      return 5;	 // "zext_of_anyext"
    }
    break;
  case 15:	 // 3 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'e':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
        break;
      return 23;	 // "extending_loads"
    case 'o':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
        break;
      return 80;	 // "overlapping_and"
    case 's':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
        break;
      return 59;	 // "select_same_val"
    }
    break;
  case 16:	 // 7 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'a':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
        break;
      return 8;	 // "anyext_of_anyext"
    case 'c':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ombine_mul_cmlt", 15) != 0)
        break;
      return 102;	 // "combine_mul_cmlt"
    case 's':	 // 2 strings to match.
      if (memcmp(RuleIdentifier.data()+1, "elect_", 6) != 0)
        break;
      switch (RuleIdentifier[7]) {
      default: break;
      case 't':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
          break;
        return 94;	 // "select_to_minmax"
      case 'u':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
          break;
        return 42;	 // "select_undef_cmp"
      }
      break;
    case 't':	 // 2 strings to match.
      if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
        break;
      switch (RuleIdentifier[12]) {
      default: break;
      case 's':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
          break;
        return 2;	 // "truncate_of_sext"
      case 'z':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
          break;
        return 1;	 // "truncate_of_zext"
      }
      break;
    case 'u':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
        break;
      return 82;	 // "undef_to_fp_zero"
    }
    break;
  case 17:	 // 4 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'a':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "nyext_trunc_fold", 16) != 0)
        break;
      return 66;	 // "anyext_trunc_fold"
    case 'e':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
        break;
      return 92;	 // "erase_undef_store"
    case 's':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "elect_to_iminmax", 16) != 0)
        break;
      return 44;	 // "select_to_iminmax"
    case 'u':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ndef_to_int_zero", 16) != 0)
        break;
      return 83;	 // "undef_to_int_zero"
    }
    break;
  case 18:	 // 6 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
        break;
      return 62;	 // "binop_left_to_zero"
    case 'c':	 // 2 strings to match.
      if (memcmp(RuleIdentifier.data()+1, "onstant_fold_f", 14) != 0)
        break;
      switch (RuleIdentifier[15]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
          break;
        return 13;	 // "constant_fold_fabs"
      case 'n':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
          break;
        return 12;	 // "constant_fold_fneg"
      }
      break;
    case 'f':	 // 2 strings to match.
      switch (RuleIdentifier[1]) {
      default: break;
      case 'o':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+2, "ld_merge_to_zext", 16) != 0)
          break;
        return 46;	 // "fold_merge_to_zext"
      case 'p':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
          break;
        return 75;	 // "fptrunc_fpext_fold"
      }
      break;
    case 't':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
        break;
      return 3;	 // "truncate_of_anyext"
    }
    break;
  case 19:	 // 13 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
        break;
      return 63;	 // "binop_right_to_zero"
    case 'c':	 // 4 strings to match.
      if (memcmp(RuleIdentifier.data()+1, "onstant_fold_", 13) != 0)
        break;
      switch (RuleIdentifier[14]) {
      default: break;
      case 'b':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
          break;
        return 57;	 // "constant_fold_binop"
      case 'f':	 // 3 strings to match.
        switch (RuleIdentifier[15]) {
        default: break;
        case 'l':	 // 1 string to match.
          if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
            break;
          return 15;	 // "constant_fold_flog2"
        case 'p':	 // 1 string to match.
          if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
            break;
          return 17;	 // "constant_fold_fpext"
        case 's':	 // 1 string to match.
          if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
            break;
          return 14;	 // "constant_fold_fsqrt"
        }
        break;
      }
      break;
    case 'i':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
        break;
      return 21;	 // "integer_of_truncate"
    case 'm':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
        break;
      return 55;	 // "merge_of_x_and_zero"
    case 'p':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
        break;
      return 79;	 // "ptr_add_immed_chain"
    case 'r':	 // 2 strings to match.
      switch (RuleIdentifier[1]) {
      default: break;
      case 'i':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
          break;
        return 60;	 // "right_identity_zero"
      case 'o':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+2, "tate_out_of_range", 17) != 0)
          break;
        return 38;	 // "rotate_out_of_range"
      }
      break;
    case 's':	 // 2 strings to match.
      if (RuleIdentifier[1] != 'e')
        break;
      switch (RuleIdentifier[2]) {
      default: break;
      case 'l':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+3, "ect_constant_cmp", 16) != 0)
          break;
        return 43;	 // "select_constant_cmp"
      case 'x':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+3, "t_trunc_sextload", 16) != 0)
          break;
        return 26;	 // "sext_trunc_sextload"
      }
      break;
    case 'u':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
        break;
      return 87;	 // "unary_undef_to_zero"
    }
    break;
  case 20:	 // 6 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
        break;
      return 74;	 // "bitcast_bitcast_fold"
    case 'm':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
        break;
      return 54;	 // "merge_of_x_and_undef"
    case 'r':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "edundant_sext_inreg", 19) != 0)
        break;
      return 33;	 // "redundant_sext_inreg"
    case 's':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "plit_store_zero_128", 19) != 0)
        break;
      return 81;	 // "split_store_zero_128"
    case 'u':	 // 2 strings to match.
      if (RuleIdentifier[1] != 'n')
        break;
      switch (RuleIdentifier[2]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
          break;
        return 88;	 // "unary_undef_to_undef"
      case 'm':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
          break;
        return 53;	 // "unmerge_zext_to_zext"
      }
      break;
    }
    break;
  case 21:	 // 8 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'c':	 // 3 strings to match.
      if (RuleIdentifier[1] != 'o')
        break;
      switch (RuleIdentifier[2]) {
      default: break;
      case 'm':	 // 2 strings to match.
        if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
          break;
        switch (RuleIdentifier[8]) {
        default: break;
        case 'b':	 // 1 string to match.
          if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
            break;
          return 56;	 // "combine_build_unmerge"
        case 'c':	 // 1 string to match.
          if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
            break;
          return 96;	 // "combine_concat_vector"
        }
        break;
      case 'n':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+3, "stant_fold_fptrunc", 18) != 0)
          break;
        return 16;	 // "constant_fold_fptrunc"
      }
      break;
    case 'l':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
        break;
      return 109;	 // "lshr_of_trunc_of_lshr"
    case 'm':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "utate_anyext_to_zext", 20) != 0)
        break;
      return 22;	 // "mutate_anyext_to_zext"
    case 'r':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
        break;
      return 69;	 // "right_identity_one_fp"
    case 'u':	 // 2 strings to match.
      if (RuleIdentifier[1] != 'n')
        break;
      switch (RuleIdentifier[2]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
          break;
        return 84;	 // "undef_to_negative_one"
      case 'm':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
          break;
        return 52;	 // "unmerge_dead_to_trunc"
      }
      break;
    }
    break;
  case 22:	 // 5 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'c':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fp_binop", 21) != 0)
        break;
      return 58;	 // "constant_fold_fp_binop"
    case 'm':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
        break;
      return 41;	 // "match_subo_no_overflow"
    case 'p':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
        break;
      return 89;	 // "propagate_undef_any_op"
    case 'r':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
        break;
      return 68;	 // "right_identity_one_int"
    case 't':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
        break;
      return 72;	 // "trunc_buildvector_fold"
    }
    break;
  case 23:	 // 5 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
        break;
      return 20;	 // "buildvector_of_truncate"
    case 'i':	 // 2 strings to match.
      if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
        break;
      switch (RuleIdentifier[21]) {
      default: break;
      case 's':	 // 1 string to match.
        if (RuleIdentifier[22] != 'i')
          break;
        return 18;	 // "itof_const_zero_fold_si"
      case 'u':	 // 1 string to match.
        if (RuleIdentifier[22] != 'i')
          break;
        return 19;	 // "itof_const_zero_fold_ui"
      }
      break;
    case 'p':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
        break;
      return 90;	 // "propagate_undef_all_ops"
    case 't':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
        break;
      return 108;	 // "truncusatu_to_fptouisat"
    }
    break;
  case 24:	 // 3 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
        break;
      return 85;	 // "binop_left_undef_to_zero"
    case 's':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ext_inreg_of_sext_inreg", 23) != 0)
        break;
      return 11;	 // "sext_inreg_of_sext_inreg"
    case 'x':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
        break;
      return 29;	 // "xor_of_and_with_same_reg"
    }
    break;
  case 25:	 // 5 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'b':	 // 3 strings to match.
      switch (RuleIdentifier[1]) {
      default: break;
      case 'i':	 // 2 strings to match.
        if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
          break;
        switch (RuleIdentifier[22]) {
        default: break;
        case 'a':	 // 1 string to match.
          if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
            break;
          return 35;	 // "bitfield_extract_from_and"
        case 's':	 // 1 string to match.
          if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
            break;
          return 36;	 // "bitfield_extract_from_shr"
        }
        break;
      case 'u':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
          break;
        return 71;	 // "buildvector_identity_fold"
      }
      break;
    case 'e':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
        break;
      return 99;	 // "extract_vec_elt_build_vec"
    case 'r':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
        break;
      return 78;	 // "right_identity_neg_one_fp"
    }
    break;
  case 26:	 // 5 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
        break;
      return 86;	 // "binop_right_undef_to_undef"
    case 'c':	 // 2 strings to match.
      if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
        break;
      switch (RuleIdentifier[3]) {
      default: break;
      case 'b':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+4, "ine_indexed_load_store", 22) != 0)
          break;
        return 25;	 // "combine_indexed_load_store"
      case 'm':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+4, "ute_fp_constant_to_rhs", 22) != 0)
          break;
        return 98;	 // "commute_fp_constant_to_rhs"
      }
      break;
    case 'e':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "xtractvecelt_pairwise_add", 25) != 0)
        break;
      return 30;	 // "extractvecelt_pairwise_add"
    case 'r':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
        break;
      return 76;	 // "right_identity_neg_zero_fp"
    }
    break;
  case 27:	 // 4 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'c':	 // 2 strings to match.
      if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
        break;
      switch (RuleIdentifier[3]) {
      default: break;
      case 'b':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
          break;
        return 103;	 // "combine_use_vector_truncate"
      case 'm':	 // 1 string to match.
        if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
          break;
        return 97;	 // "commute_int_constant_to_rhs"
      }
      break;
    case 't':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
        break;
      return 73;	 // "trunc_lshr_buildvector_fold"
    case 'u':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
        break;
      return 47;	 // "unmerge_anyext_build_vector"
    }
    break;
  case 28:	 // 1 string to match.
    if (memcmp(RuleIdentifier.data()+0, "propagate_undef_shuffle_mask", 28) != 0)
      break;
    return 91;	 // "propagate_undef_shuffle_mask"
  case 29:	 // 2 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'b':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
        break;
      return 37;	 // "bitfield_extract_from_shr_and"
    case 'i':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
        break;
      return 39;	 // "icmp_to_true_false_known_bits"
    }
    break;
  case 30:	 // 1 string to match.
    if (memcmp(RuleIdentifier.data()+0, "right_identity_neg_zero_fp_nsz", 30) != 0)
      break;
    return 77;	 // "right_identity_neg_zero_fp_nsz"
  case 32:	 // 1 string to match.
    if (memcmp(RuleIdentifier.data()+0, "bitfield_extract_from_sext_inreg", 32) != 0)
      break;
    return 34;	 // "bitfield_extract_from_sext_inreg"
  case 34:	 // 1 string to match.
    if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
      break;
    return 100;	 // "extract_all_elts_from_build_vector"
  case 36:	 // 1 string to match.
    if (memcmp(RuleIdentifier.data()+0, "insert_extract_vec_elt_out_of_bounds", 36) != 0)
      break;
    return 93;	 // "insert_extract_vec_elt_out_of_bounds"
  case 37:	 // 1 string to match.
    if (memcmp(RuleIdentifier.data()+0, "hoist_logic_op_with_same_opcode_hands", 37) != 0)
      break;
    return 27;	 // "hoist_logic_op_with_same_opcode_hands"
  case 46:	 // 2 strings to match.
    switch (RuleIdentifier[0]) {
    default: break;
    case 'f':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift_constants_are_legal", 45) != 0)
        break;
      return 110;	 // "funnel_shift_from_or_shift_constants_are_legal"
    case 'p':	 // 1 string to match.
      if (memcmp(RuleIdentifier.data()+1, "ush_freeze_to_prevent_poison_from_propagating", 45) != 0)
        break;
      return 101;	 // "push_freeze_to_prevent_poison_from_propagating"
    }
    break;
  }
#endif // ifndef NDEBUG

  return std::nullopt;
}
static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
  std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
  if (!RangePair.second.empty()) {
    const auto First = getRuleIdxForIdentifier(RangePair.first);
    const auto Last = getRuleIdxForIdentifier(RangePair.second);
    if (!First || !Last)
      return std::nullopt;
    if (First >= Last)
      report_fatal_error("Beginning of range should be before end of range");
    return {{*First, *Last + 1}};
  }
  if (RangePair.first == "*") {
    return {{0, 111}};
  }
  const auto I = getRuleIdxForIdentifier(RangePair.first);
  if (!I)
    return std::nullopt;
  return {{*I, *I + 1}};
}

bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
  auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
  if (!MaybeRange)
    return false;
  for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
    DisabledRules.reset(I);
  return true;
}

bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
  auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
  if (!MaybeRange)
    return false;
  for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
    DisabledRules.set(I);
  return true;
}

static std::vector<std::string> AArch64PostLegalizerCombinerOption;
static cl::list<std::string> AArch64PostLegalizerCombinerDisableOption(
    "aarch64postlegalizercombiner-disable-rule",
    cl::desc("Disable one or more combiner rules temporarily in the AArch64PostLegalizerCombiner pass"),
    cl::CommaSeparated,
    cl::Hidden,
    cl::cat(GICombinerOptionCategory),
    cl::callback([](const std::string &Str) {
      AArch64PostLegalizerCombinerOption.push_back(Str);
    }));
static cl::list<std::string> AArch64PostLegalizerCombinerOnlyEnableOption(
    "aarch64postlegalizercombiner-only-enable-rule",
    cl::desc("Disable all rules in the AArch64PostLegalizerCombiner pass then re-enable the specified ones"),
    cl::Hidden,
    cl::cat(GICombinerOptionCategory),
    cl::callback([](const std::string &CommaSeparatedArg) {
      StringRef Str = CommaSeparatedArg;
      AArch64PostLegalizerCombinerOption.push_back("*");
      do {
        auto X = Str.split(",");
        AArch64PostLegalizerCombinerOption.push_back(("!" + X.first).str());
        Str = X.second;
      } while (!Str.empty());
    }));


bool AArch64PostLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
    return  !DisabledRules.test(RuleID);
}
bool AArch64PostLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
  for (StringRef Identifier : AArch64PostLegalizerCombinerOption) {
    bool Enabled = Identifier.consume_front("!");
    if (Enabled && !setRuleEnabled(Identifier))
      return false;
    if (!Enabled && !setRuleDisabled(Identifier))
      return false;
  }
  return true;
}

#endif // ifdef GET_GICOMBINER_TYPES

#ifdef GET_GICOMBINER_TYPES
const unsigned MAX_SUBTARGET_PREDICATES = 0;
using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
#endif // ifdef GET_GICOMBINER_TYPES

#ifdef GET_GICOMBINER_CLASS_MEMBERS
PredicateBitset AvailableModuleFeatures;
mutable PredicateBitset AvailableFunctionFeatures;
PredicateBitset getAvailableFeatures() const {
  return AvailableModuleFeatures | AvailableFunctionFeatures;
}
PredicateBitset
computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
PredicateBitset
computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
                                 const MachineFunction *MF) const;
void setupGeneratedPerFunctionState(MachineFunction &MF) override;
#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
#ifdef GET_GICOMBINER_CLASS_MEMBERS
  mutable MatcherState State;
  typedef ComplexRendererFns(AArch64PostLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
  typedef void(AArch64PostLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
  const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
  static AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
  static AArch64PostLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
  bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
  bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
  bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
  const uint8_t *getMatchTable() const override;
  bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
  bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
  bool testSimplePredicate(unsigned PredicateID) const override;
  bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS

#ifdef GET_GICOMBINER_IMPL
// LLT Objects.
enum {
  GILLT_s1,
};
const static size_t NumTypeObjects = 1;
const static LLT TypeObjects[] = {
  LLT::scalar(1),
};

// Bits for subtarget features that participate in instruction matching.
enum SubtargetFeatureBits : uint8_t {
};

PredicateBitset AArch64PostLegalizerCombinerImpl::
computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
  PredicateBitset Features{};
  return Features;
}

void AArch64PostLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
  AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
}
PredicateBitset AArch64PostLegalizerCombinerImpl::
computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
  PredicateBitset Features{};
  return Features;
}

// Feature bitsets.
enum {
  GIFBS_Invalid,
};
constexpr static PredicateBitset FeatureBitsets[] {
  {}, // GIFBS_Invalid
};

// ComplexPattern predicates.
enum {
  GICP_Invalid,
};
// See constructor for table contents

AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn
AArch64PostLegalizerCombinerImpl::ComplexPredicateFns[] = {
  nullptr, // GICP_Invalid
};

enum {
  GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
  GICXXPred_MI_Predicate_GICombiner1,
  GICXXPred_MI_Predicate_GICombiner2,
  GICXXPred_MI_Predicate_GICombiner3,
  GICXXPred_MI_Predicate_GICombiner4,
  GICXXPred_MI_Predicate_GICombiner5,
};
bool AArch64PostLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
  switch (PredicateID) {
  case GICXXPred_MI_Predicate_GICombiner0: {
    return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
  }
  case GICXXPred_MI_Predicate_GICombiner1: {
    return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
  }
  case GICXXPred_MI_Predicate_GICombiner2: {
    return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
  }
  case GICXXPred_MI_Predicate_GICombiner3: {
    return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
  }
  case GICXXPred_MI_Predicate_GICombiner4: {
    return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
  }
  case GICXXPred_MI_Predicate_GICombiner5: {
    return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
  }
  }
  llvm_unreachable("Unknown predicate");
  return false;
}
bool AArch64PostLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
  llvm_unreachable("Unknown predicate");
  return false;
}
bool AArch64PostLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
  llvm_unreachable("Unknown predicate");
  return false;
}
bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
  llvm_unreachable("Unknown predicate");
  return false;
}
bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
  llvm_unreachable("Unknown predicate");
  return false;
}
enum {
  GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
  GICXXPred_Simple_IsRule1Enabled,
  GICXXPred_Simple_IsRule2Enabled,
  GICXXPred_Simple_IsRule3Enabled,
  GICXXPred_Simple_IsRule4Enabled,
  GICXXPred_Simple_IsRule5Enabled,
  GICXXPred_Simple_IsRule6Enabled,
  GICXXPred_Simple_IsRule7Enabled,
  GICXXPred_Simple_IsRule8Enabled,
  GICXXPred_Simple_IsRule9Enabled,
  GICXXPred_Simple_IsRule10Enabled,
  GICXXPred_Simple_IsRule11Enabled,
  GICXXPred_Simple_IsRule12Enabled,
  GICXXPred_Simple_IsRule13Enabled,
  GICXXPred_Simple_IsRule14Enabled,
  GICXXPred_Simple_IsRule15Enabled,
  GICXXPred_Simple_IsRule16Enabled,
  GICXXPred_Simple_IsRule17Enabled,
  GICXXPred_Simple_IsRule18Enabled,
  GICXXPred_Simple_IsRule19Enabled,
  GICXXPred_Simple_IsRule20Enabled,
  GICXXPred_Simple_IsRule21Enabled,
  GICXXPred_Simple_IsRule22Enabled,
  GICXXPred_Simple_IsRule23Enabled,
  GICXXPred_Simple_IsRule24Enabled,
  GICXXPred_Simple_IsRule25Enabled,
  GICXXPred_Simple_IsRule26Enabled,
  GICXXPred_Simple_IsRule27Enabled,
  GICXXPred_Simple_IsRule28Enabled,
  GICXXPred_Simple_IsRule29Enabled,
  GICXXPred_Simple_IsRule30Enabled,
  GICXXPred_Simple_IsRule31Enabled,
  GICXXPred_Simple_IsRule32Enabled,
  GICXXPred_Simple_IsRule33Enabled,
  GICXXPred_Simple_IsRule34Enabled,
  GICXXPred_Simple_IsRule35Enabled,
  GICXXPred_Simple_IsRule36Enabled,
  GICXXPred_Simple_IsRule37Enabled,
  GICXXPred_Simple_IsRule38Enabled,
  GICXXPred_Simple_IsRule39Enabled,
  GICXXPred_Simple_IsRule40Enabled,
  GICXXPred_Simple_IsRule41Enabled,
  GICXXPred_Simple_IsRule42Enabled,
  GICXXPred_Simple_IsRule43Enabled,
  GICXXPred_Simple_IsRule44Enabled,
  GICXXPred_Simple_IsRule45Enabled,
  GICXXPred_Simple_IsRule46Enabled,
  GICXXPred_Simple_IsRule47Enabled,
  GICXXPred_Simple_IsRule48Enabled,
  GICXXPred_Simple_IsRule49Enabled,
  GICXXPred_Simple_IsRule50Enabled,
  GICXXPred_Simple_IsRule51Enabled,
  GICXXPred_Simple_IsRule52Enabled,
  GICXXPred_Simple_IsRule53Enabled,
  GICXXPred_Simple_IsRule54Enabled,
  GICXXPred_Simple_IsRule55Enabled,
  GICXXPred_Simple_IsRule56Enabled,
  GICXXPred_Simple_IsRule57Enabled,
  GICXXPred_Simple_IsRule58Enabled,
  GICXXPred_Simple_IsRule59Enabled,
  GICXXPred_Simple_IsRule60Enabled,
  GICXXPred_Simple_IsRule61Enabled,
  GICXXPred_Simple_IsRule62Enabled,
  GICXXPred_Simple_IsRule63Enabled,
  GICXXPred_Simple_IsRule64Enabled,
  GICXXPred_Simple_IsRule65Enabled,
  GICXXPred_Simple_IsRule66Enabled,
  GICXXPred_Simple_IsRule67Enabled,
  GICXXPred_Simple_IsRule68Enabled,
  GICXXPred_Simple_IsRule69Enabled,
  GICXXPred_Simple_IsRule70Enabled,
  GICXXPred_Simple_IsRule71Enabled,
  GICXXPred_Simple_IsRule72Enabled,
  GICXXPred_Simple_IsRule73Enabled,
  GICXXPred_Simple_IsRule74Enabled,
  GICXXPred_Simple_IsRule75Enabled,
  GICXXPred_Simple_IsRule76Enabled,
  GICXXPred_Simple_IsRule77Enabled,
  GICXXPred_Simple_IsRule78Enabled,
  GICXXPred_Simple_IsRule79Enabled,
  GICXXPred_Simple_IsRule80Enabled,
  GICXXPred_Simple_IsRule81Enabled,
  GICXXPred_Simple_IsRule82Enabled,
  GICXXPred_Simple_IsRule83Enabled,
  GICXXPred_Simple_IsRule84Enabled,
  GICXXPred_Simple_IsRule85Enabled,
  GICXXPred_Simple_IsRule86Enabled,
  GICXXPred_Simple_IsRule87Enabled,
  GICXXPred_Simple_IsRule88Enabled,
  GICXXPred_Simple_IsRule89Enabled,
  GICXXPred_Simple_IsRule90Enabled,
  GICXXPred_Simple_IsRule91Enabled,
  GICXXPred_Simple_IsRule92Enabled,
  GICXXPred_Simple_IsRule93Enabled,
  GICXXPred_Simple_IsRule94Enabled,
  GICXXPred_Simple_IsRule95Enabled,
  GICXXPred_Simple_IsRule96Enabled,
  GICXXPred_Simple_IsRule97Enabled,
  GICXXPred_Simple_IsRule98Enabled,
  GICXXPred_Simple_IsRule99Enabled,
  GICXXPred_Simple_IsRule100Enabled,
  GICXXPred_Simple_IsRule101Enabled,
  GICXXPred_Simple_IsRule102Enabled,
  GICXXPred_Simple_IsRule103Enabled,
  GICXXPred_Simple_IsRule104Enabled,
  GICXXPred_Simple_IsRule105Enabled,
  GICXXPred_Simple_IsRule106Enabled,
  GICXXPred_Simple_IsRule107Enabled,
  GICXXPred_Simple_IsRule108Enabled,
  GICXXPred_Simple_IsRule109Enabled,
  GICXXPred_Simple_IsRule110Enabled,
};

bool AArch64PostLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
    return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
}
// Custom renderers.
enum {
  GICR_Invalid,
};
AArch64PostLegalizerCombinerImpl::CustomRendererFn
AArch64PostLegalizerCombinerImpl::CustomRenderers[] = {
  nullptr, // GICR_Invalid
};

bool AArch64PostLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
  const TargetSubtargetInfo &ST = MF.getSubtarget();
  const PredicateBitset AvailableFeatures = getAvailableFeatures();
  B.setInstrAndDebugLoc(I);
  State.MIs.clear();
  State.MIs.push_back(&I);
  if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
    return true;
  }

  return false;
}

enum {
  GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
  GICXXCustomAction_GICombiner1,
  GICXXCustomAction_GICombiner2,
  GICXXCustomAction_GICombiner3,
  GICXXCustomAction_GICombiner4,
  GICXXCustomAction_GICombiner5,
  GICXXCustomAction_GICombiner6,
  GICXXCustomAction_GICombiner7,
  GICXXCustomAction_GICombiner8,
  GICXXCustomAction_GICombiner9,
  GICXXCustomAction_GICombiner10,
  GICXXCustomAction_GICombiner11,
  GICXXCustomAction_GICombiner12,
  GICXXCustomAction_GICombiner13,
  GICXXCustomAction_GICombiner14,
  GICXXCustomAction_GICombiner15,
  GICXXCustomAction_GICombiner16,
  GICXXCustomAction_GICombiner17,
  GICXXCustomAction_GICombiner18,
  GICXXCustomAction_GICombiner19,
  GICXXCustomAction_GICombiner20,
  GICXXCustomAction_GICombiner21,
  GICXXCustomAction_GICombiner22,
  GICXXCustomAction_GICombiner23,
  GICXXCustomAction_GICombiner24,
  GICXXCustomAction_GICombiner25,
  GICXXCustomAction_GICombiner26,
  GICXXCustomAction_GICombiner27,
  GICXXCustomAction_GICombiner28,
  GICXXCustomAction_GICombiner29,
  GICXXCustomAction_GICombiner30,
  GICXXCustomAction_GICombiner31,
  GICXXCustomAction_GICombiner32,
  GICXXCustomAction_GICombiner33,
  GICXXCustomAction_GICombiner34,
  GICXXCustomAction_GICombiner35,
  GICXXCustomAction_GICombiner36,
  GICXXCustomAction_GICombiner37,
  GICXXCustomAction_GICombiner38,
  GICXXCustomAction_GICombiner39,
  GICXXCustomAction_GICombiner40,
  GICXXCustomAction_GICombiner41,
  GICXXCustomAction_GICombiner42,
  GICXXCustomAction_GICombiner43,
  GICXXCustomAction_GICombiner44,
  GICXXCustomAction_GICombiner45,
  GICXXCustomAction_GICombiner46,
  GICXXCustomAction_GICombiner47,
  GICXXCustomAction_GICombiner48,
  GICXXCustomAction_GICombiner49,
  GICXXCustomAction_GICombiner50,
  GICXXCustomAction_GICombiner51,
  GICXXCustomAction_GICombiner52,
  GICXXCustomAction_GICombiner53,
  GICXXCustomAction_GICombiner54,
  GICXXCustomAction_GICombiner55,
  GICXXCustomAction_GICombiner56,
  GICXXCustomAction_GICombiner57,
  GICXXCustomAction_GICombiner58,
  GICXXCustomAction_GICombiner59,
  GICXXCustomAction_GICombiner60,
  GICXXCustomAction_GICombiner61,
  GICXXCustomAction_GICombiner62,
  GICXXCustomAction_GICombiner63,
  GICXXCustomAction_GICombiner64,
  GICXXCustomAction_GICombiner65,
  GICXXCustomAction_GICombiner66,
  GICXXCustomAction_GICombiner67,
  GICXXCustomAction_GICombiner68,
  GICXXCustomAction_GICombiner69,
  GICXXCustomAction_GICombiner70,
  GICXXCustomAction_GICombiner71,
  GICXXCustomAction_GICombiner72,
  GICXXCustomAction_GICombiner73,
  GICXXCustomAction_GICombiner74,
  GICXXCustomAction_GICombiner75,
  GICXXCustomAction_GICombiner76,
  GICXXCustomAction_GICombiner77,
  GICXXCustomAction_GICombiner78,
  GICXXCustomAction_GICombiner79,
  GICXXCustomAction_GICombiner80,
  GICXXCustomAction_GICombiner81,
};
bool AArch64PostLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
  Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
  switch(ApplyID) {
  case GICXXCustomAction_GICombiner0:{
    // Match Patterns
    if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineCopy(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner1:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner2:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner3:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner4:{
    // Apply Patterns
    Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
    return true;
  }
  case GICXXCustomAction_GICombiner5:{
    // Apply Patterns
    Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
    return true;
  }
  case GICXXCustomAction_GICombiner6:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner7:{
    APInt GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner8:{
    // Match Patterns
    if(![&](){return matchMutateAnyExtToZExt(*State.MIs[0], MRI);}()) {
      return false;
    }
    // Apply Patterns
    applyMutateAnyExtToZExt(*State.MIs[0], MRI, B, Observer);
    return true;
  }
  case GICXXCustomAction_GICombiner9:{
    PreferredTuple GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner10:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner11:{
    IndexedLoadStoreMatchInfo GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchCombineIndexedLoadStore(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineIndexedLoadStore(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner12:{
    // Match Patterns
    if(![&](){return Helper.matchSextTruncSextLoad(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applySextTruncSextLoad(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner13:{
    InstructionStepsMatchInfo GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner14:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner15:{
    std::pair<Register, Register> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner16:{
    std::tuple<unsigned, LLT, Register> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return matchExtractVecEltPairwiseAdd(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    applyExtractVecEltPairwiseAdd(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner17:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner18:{
    std::function<void(MachineIRBuilder&, Register)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return matchAArch64MulConstCombine(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    applyAArch64MulConstCombine(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner19:{
    // Match Patterns
    if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
    return true;
  }
  case GICXXCustomAction_GICombiner20:{
    std::function<void(MachineIRBuilder &)> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner21:{
    std::function<void(MachineIRBuilder &)> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner22:{
    std::function<void(MachineIRBuilder &)> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner23:{
    std::function<void(MachineIRBuilder &)> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner24:{
    // Match Patterns
    if(![&](){return Helper.matchRotateOutOfRange(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyRotateOutOfRange(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner25:{
    int64_t GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner26:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner27:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner28:{
    unsigned GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner29:{
    std::function<void(MachineIRBuilder &)> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner30:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner31:{
    // Match Patterns
    if(![&](){return matchFoldMergeToZext(*State.MIs[0], MRI);}()) {
      return false;
    }
    // Apply Patterns
    applyFoldMergeToZext(*State.MIs[0], MRI, B, Observer);
    return true;
  }
  case GICXXCustomAction_GICombiner32:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner33:{
    SmallVector<Register> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner34:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchCombineMergeUnmerge(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner35:{
    SmallVector<APInt, 8> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner36:{
    std::function<void(MachineIRBuilder &)> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner37:{
    // Match Patterns
    if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner38:{
    // Match Patterns
    if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner39:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner40:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner41:{
    Register GIMatchData_unmergeSrc;
    // Match Patterns
    if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
    return true;
  }
  case GICXXCustomAction_GICombiner42:{
    APInt GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner43:{
    ConstantFP* GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner44:{
    // Match Patterns
    if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
    return true;
  }
  case GICXXCustomAction_GICombiner45:{
    // Match Patterns
    if(![&](){return Helper.matchOperandIsZero(*State.MIs[0], 1);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
    return true;
  }
  case GICXXCustomAction_GICombiner46:{
    Register GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner47:{
    Register GIMatchData_info;
    // Match Patterns
    if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner48:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner49:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner50:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner51:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner52:{
    // Match Patterns
    if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
    return true;
  }
  case GICXXCustomAction_GICombiner53:{
    PtrAddChain GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner54:{
    std::function<void(MachineIRBuilder &)> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner55:{
    // Match Patterns
    if(![&](){return matchSplitStoreZero128(*State.MIs[0], MRI);}()) {
      return false;
    }
    // Apply Patterns
    applySplitStoreZero128(*State.MIs[0], MRI, B, Observer);
    return true;
  }
  case GICXXCustomAction_GICombiner56:{
    // Match Patterns
    if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
    return true;
  }
  case GICXXCustomAction_GICombiner57:{
    // Match Patterns
    if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithConstant(*State.MIs[0], 0);
    return true;
  }
  case GICXXCustomAction_GICombiner58:{
    // Match Patterns
    if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithConstant(*State.MIs[0], -1);
    return true;
  }
  case GICXXCustomAction_GICombiner59:{
    // Match Patterns
    if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithConstant(*State.MIs[0], 0);
    return true;
  }
  case GICXXCustomAction_GICombiner60:{
    // Match Patterns
    if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithUndef(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner61:{
    // Apply Patterns
    Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
    return true;
  }
  case GICXXCustomAction_GICombiner62:{
    // Match Patterns
    if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithUndef(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner63:{
    // Match Patterns
    if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithUndef(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner64:{
    // Match Patterns
    if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithUndef(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner65:{
    // Match Patterns
    if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.eraseInst(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner66:{
    // Match Patterns
    if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.replaceInstWithUndef(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner67:{
    std::function<void(MachineIRBuilder &)> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
    return true;
  }
  case GICXXCustomAction_GICombiner68:{
    std::tuple<Register, Register, Register> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return matchOrToBSP(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    applyOrToBSP(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner69:{
    SmallVector<Register> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner70:{
    // Match Patterns
    if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCommuteBinOpOperands(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner71:{
    // Match Patterns
    if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyCommuteBinOpOperands(*State.MIs[0]);
    return true;
  }
  case GICXXCustomAction_GICombiner72:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner73:{
    SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner74:{
    std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner75:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return matchCombineMulCMLT(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    applyCombineMulCMLT(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner76:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner77:{
    std::tuple<bool, Register, Register> GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return matchExtMulToMULL(*State.MIs[0], MRI, VT, GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    applyExtMulToMULL(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner78:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner79:{
    Register GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner80:{
    LshrOfTruncOfLshr GIMatchData_matchinfo;
    // Match Patterns
    if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
    return true;
  }
  case GICXXCustomAction_GICombiner81:{
    std::function<void(MachineIRBuilder &)> GIMatchData_info;
    // Match Patterns
    if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], true, GIMatchData_info);}()) {
      return false;
    }
    // Apply Patterns
    Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
    return true;
  }
  }
  llvm_unreachable("Unknown Apply Action");
}
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
#define GIMT_Encode8(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24),  uint8_t(uint64_t(Val) >> 32), uint8_t(uint64_t(Val) >> 40), uint8_t(uint64_t(Val) >> 48), uint8_t(uint64_t(Val) >> 56)
#else
#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
#define GIMT_Encode8(Val) uint8_t(uint64_t(Val) >> 56), uint8_t(uint64_t(Val) >> 48), uint8_t(uint64_t(Val) >> 40), uint8_t(uint64_t(Val) >> 32),  uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
#endif
const uint8_t *AArch64PostLegalizerCombinerImpl::getMatchTable() const {
  constexpr static uint8_t MatchTable0[] = {
     /*    0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(276), /*)*//*default:*//*Label 80*/ GIMT_Encode4(4107),
     /*   10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1034), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1046),
     /*  154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1171),
     /*  158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(1217),
     /*  162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(1330),
     /*  166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(1353),
     /*  170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(1387),
     /*  174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(1410), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(1444),
     /*  190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(1583),
     /*  194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(1708), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 11*/ GIMT_Encode4(1787), GIMT_Encode4(0),
     /*  258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 12*/ GIMT_Encode4(1854),
     /*  262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 13*/ GIMT_Encode4(1939),
     /*  266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 14*/ GIMT_Encode4(2004),
     /*  270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 15*/ GIMT_Encode4(2016),
     /*  274 */ /*TargetOpcode::G_PTRTOINT*//*Label 16*/ GIMT_Encode4(2028),
     /*  278 */ /*TargetOpcode::G_INTTOPTR*//*Label 17*/ GIMT_Encode4(2071),
     /*  282 */ /*TargetOpcode::G_BITCAST*//*Label 18*/ GIMT_Encode4(2104),
     /*  286 */ /*TargetOpcode::G_FREEZE*//*Label 19*/ GIMT_Encode4(2147), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  326 */ /*TargetOpcode::G_LOAD*//*Label 20*/ GIMT_Encode4(2159),
     /*  330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 21*/ GIMT_Encode4(2182),
     /*  334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 22*/ GIMT_Encode4(2205), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  350 */ /*TargetOpcode::G_STORE*//*Label 23*/ GIMT_Encode4(2228), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  486 */ /*TargetOpcode::G_ANYEXT*//*Label 24*/ GIMT_Encode4(2262),
     /*  490 */ /*TargetOpcode::G_TRUNC*//*Label 25*/ GIMT_Encode4(2369), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  502 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 26*/ GIMT_Encode4(2575), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  522 */ /*TargetOpcode::G_SEXT*//*Label 27*/ GIMT_Encode4(2608),
     /*  526 */ /*TargetOpcode::G_SEXT_INREG*//*Label 28*/ GIMT_Encode4(2651),
     /*  530 */ /*TargetOpcode::G_ZEXT*//*Label 29*/ GIMT_Encode4(2706),
     /*  534 */ /*TargetOpcode::G_SHL*//*Label 30*/ GIMT_Encode4(2749),
     /*  538 */ /*TargetOpcode::G_LSHR*//*Label 31*/ GIMT_Encode4(2817),
     /*  542 */ /*TargetOpcode::G_ASHR*//*Label 32*/ GIMT_Encode4(2925), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  554 */ /*TargetOpcode::G_ROTR*//*Label 33*/ GIMT_Encode4(3004),
     /*  558 */ /*TargetOpcode::G_ROTL*//*Label 34*/ GIMT_Encode4(3039),
     /*  562 */ /*TargetOpcode::G_ICMP*//*Label 35*/ GIMT_Encode4(3074), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  578 */ /*TargetOpcode::G_SELECT*//*Label 36*/ GIMT_Encode4(3086),
     /*  582 */ /*TargetOpcode::G_UADDO*//*Label 37*/ GIMT_Encode4(3181), GIMT_Encode4(0),
     /*  590 */ /*TargetOpcode::G_USUBO*//*Label 38*/ GIMT_Encode4(3204), GIMT_Encode4(0),
     /*  598 */ /*TargetOpcode::G_SADDO*//*Label 39*/ GIMT_Encode4(3216), GIMT_Encode4(0),
     /*  606 */ /*TargetOpcode::G_SSUBO*//*Label 40*/ GIMT_Encode4(3239), GIMT_Encode4(0),
     /*  614 */ /*TargetOpcode::G_UMULO*//*Label 41*/ GIMT_Encode4(3251),
     /*  618 */ /*TargetOpcode::G_SMULO*//*Label 42*/ GIMT_Encode4(3263),
     /*  622 */ /*TargetOpcode::G_UMULH*//*Label 43*/ GIMT_Encode4(3275),
     /*  626 */ /*TargetOpcode::G_SMULH*//*Label 44*/ GIMT_Encode4(3287),
     /*  630 */ /*TargetOpcode::G_UADDSAT*//*Label 45*/ GIMT_Encode4(3299),
     /*  634 */ /*TargetOpcode::G_SADDSAT*//*Label 46*/ GIMT_Encode4(3311), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  654 */ /*TargetOpcode::G_SMULFIX*//*Label 47*/ GIMT_Encode4(3323),
     /*  658 */ /*TargetOpcode::G_UMULFIX*//*Label 48*/ GIMT_Encode4(3335),
     /*  662 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 49*/ GIMT_Encode4(3347),
     /*  666 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 50*/ GIMT_Encode4(3359), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  686 */ /*TargetOpcode::G_FADD*//*Label 51*/ GIMT_Encode4(3371),
     /*  690 */ /*TargetOpcode::G_FSUB*//*Label 52*/ GIMT_Encode4(3446),
     /*  694 */ /*TargetOpcode::G_FMUL*//*Label 53*/ GIMT_Encode4(3458), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  706 */ /*TargetOpcode::G_FDIV*//*Label 54*/ GIMT_Encode4(3524), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  742 */ /*TargetOpcode::G_FLOG2*//*Label 55*/ GIMT_Encode4(3536), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  758 */ /*TargetOpcode::G_FNEG*//*Label 56*/ GIMT_Encode4(3558),
     /*  762 */ /*TargetOpcode::G_FPEXT*//*Label 57*/ GIMT_Encode4(3609),
     /*  766 */ /*TargetOpcode::G_FPTRUNC*//*Label 58*/ GIMT_Encode4(3631),
     /*  770 */ /*TargetOpcode::G_FPTOSI*//*Label 59*/ GIMT_Encode4(3674),
     /*  774 */ /*TargetOpcode::G_FPTOUI*//*Label 60*/ GIMT_Encode4(3696),
     /*  778 */ /*TargetOpcode::G_SITOFP*//*Label 61*/ GIMT_Encode4(3718),
     /*  782 */ /*TargetOpcode::G_UITOFP*//*Label 62*/ GIMT_Encode4(3745), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  794 */ /*TargetOpcode::G_FABS*//*Label 63*/ GIMT_Encode4(3772), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  810 */ /*TargetOpcode::G_FMINNUM*//*Label 64*/ GIMT_Encode4(3794),
     /*  814 */ /*TargetOpcode::G_FMAXNUM*//*Label 65*/ GIMT_Encode4(3806),
     /*  818 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 66*/ GIMT_Encode4(3818),
     /*  822 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 67*/ GIMT_Encode4(3830),
     /*  826 */ /*TargetOpcode::G_FMINIMUM*//*Label 68*/ GIMT_Encode4(3842),
     /*  830 */ /*TargetOpcode::G_FMAXIMUM*//*Label 69*/ GIMT_Encode4(3854), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  874 */ /*TargetOpcode::G_PTR_ADD*//*Label 70*/ GIMT_Encode4(3866), GIMT_Encode4(0),
     /*  882 */ /*TargetOpcode::G_SMIN*//*Label 71*/ GIMT_Encode4(3912),
     /*  886 */ /*TargetOpcode::G_SMAX*//*Label 72*/ GIMT_Encode4(3935),
     /*  890 */ /*TargetOpcode::G_UMIN*//*Label 73*/ GIMT_Encode4(3958),
     /*  894 */ /*TargetOpcode::G_UMAX*//*Label 74*/ GIMT_Encode4(3981),
     /*  898 */ /*TargetOpcode::G_ABS*//*Label 75*/ GIMT_Encode4(4004), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  930 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 76*/ GIMT_Encode4(4016),
     /*  934 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 77*/ GIMT_Encode4(4028),
     /*  938 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 78*/ GIMT_Encode4(4062), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /* 1030 */ /*TargetOpcode::G_FSQRT*//*Label 79*/ GIMT_Encode4(4085),
     /* 1034 */ // Label 0: @1034
     /* 1034 */ GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1045), // Rule ID 0 //
     /* 1039 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
     /* 1042 */   // MIs[0] d
     /* 1042 */   // No operand predicates
     /* 1042 */   // MIs[0] s
     /* 1042 */   // No operand predicates
     /* 1042 */   // Combiner Rule #0: copy_prop
     /* 1042 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
     /* 1045 */ // Label 81: @1045
     /* 1045 */ GIM_Reject,
     /* 1046 */ // Label 1: @1046
     /* 1046 */ GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1057), // Rule ID 69 //
     /* 1051 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 1054 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_ADD'
     /* 1054 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 1057 */ // Label 82: @1057
     /* 1057 */ GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1068), // Rule ID 151 //
     /* 1062 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
     /* 1065 */   // Combiner Rule #89: propagate_undef_any_op; wip_match_opcode 'G_ADD'
     /* 1065 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
     /* 1068 */ // Label 83: @1068
     /* 1068 */ GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(1079), // Rule ID 163 //
     /* 1073 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 1076 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
     /* 1076 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 1079 */ // Label 84: @1079
     /* 1079 */ GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1113), // Rule ID 119 //
     /* 1084 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
     /* 1087 */   // MIs[0] dst
     /* 1087 */   // No operand predicates
     /* 1087 */   // MIs[0] __add_sub_reg_match_0.tmp
     /* 1087 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 1091 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
     /* 1095 */   // MIs[1] src
     /* 1095 */   // No operand predicates
     /* 1095 */   // MIs[1] __add_sub_reg_match_0.x
     /* 1095 */   // No operand predicates
     /* 1095 */   // MIs[0] __add_sub_reg_match_0.x
     /* 1095 */   GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
     /* 1100 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
     /* 1105 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 1107 */   // Combiner Rule #70: add_sub_reg @ [__add_sub_reg_match_0[1]]
     /* 1107 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
     /* 1112 */   GIR_EraseRootFromParent_Done,
     /* 1113 */ // Label 85: @1113
     /* 1113 */ GIM_Try, /*On fail goto*//*Label 86*/ GIMT_Encode4(1147), // Rule ID 118 //
     /* 1118 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
     /* 1121 */   // MIs[0] dst
     /* 1121 */   // No operand predicates
     /* 1121 */   // MIs[0] __add_sub_reg_match_0.x
     /* 1121 */   // No operand predicates
     /* 1121 */   // MIs[0] __add_sub_reg_match_0.tmp
     /* 1121 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
     /* 1125 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
     /* 1129 */   // MIs[1] src
     /* 1129 */   // No operand predicates
     /* 1129 */   // MIs[1] __add_sub_reg_match_0.x
     /* 1129 */   GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
     /* 1134 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
     /* 1139 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 1141 */   // Combiner Rule #70: add_sub_reg @ [__add_sub_reg_match_0[0]]
     /* 1141 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
     /* 1146 */   GIR_EraseRootFromParent_Done,
     /* 1147 */ // Label 86: @1147
     /* 1147 */ GIM_Try, /*On fail goto*//*Label 87*/ GIMT_Encode4(1170), // Rule ID 93 //
     /* 1152 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
     /* 1155 */   // MIs[0] dst
     /* 1155 */   // No operand predicates
     /* 1155 */   // MIs[0] lhs
     /* 1155 */   // No operand predicates
     /* 1155 */   // MIs[0] Operand 2
     /* 1155 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 1159 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1164 */   // Combiner Rule #60: right_identity_zero @ [__right_identity_zero_match_0[1]]
     /* 1164 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1169 */   GIR_EraseRootFromParent_Done,
     /* 1170 */ // Label 87: @1170
     /* 1170 */ GIM_Reject,
     /* 1171 */ // Label 2: @1171
     /* 1171 */ GIM_Try, /*On fail goto*//*Label 88*/ GIMT_Encode4(1182), // Rule ID 77 //
     /* 1176 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 1179 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_SUB'
     /* 1179 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 1182 */ // Label 88: @1182
     /* 1182 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(1193), // Rule ID 152 //
     /* 1187 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
     /* 1190 */   // Combiner Rule #89: propagate_undef_any_op; wip_match_opcode 'G_SUB'
     /* 1190 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
     /* 1193 */ // Label 89: @1193
     /* 1193 */ GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(1216), // Rule ID 92 //
     /* 1198 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
     /* 1201 */   // MIs[0] dst
     /* 1201 */   // No operand predicates
     /* 1201 */   // MIs[0] lhs
     /* 1201 */   // No operand predicates
     /* 1201 */   // MIs[0] Operand 2
     /* 1201 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 1205 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1210 */   // Combiner Rule #60: right_identity_zero @ [__right_identity_zero_match_0[0]]
     /* 1210 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1215 */   GIR_EraseRootFromParent_Done,
     /* 1216 */ // Label 90: @1216
     /* 1216 */ GIM_Reject,
     /* 1217 */ // Label 3: @1217
     /* 1217 */ GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(1228), // Rule ID 39 //
     /* 1222 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
     /* 1225 */   // Combiner Rule #32: mul_const; wip_match_opcode 'G_MUL'
     /* 1225 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
     /* 1228 */ // Label 91: @1228
     /* 1228 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(1239), // Rule ID 74 //
     /* 1233 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 1236 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_MUL'
     /* 1236 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 1239 */ // Label 92: @1239
     /* 1239 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(1250), // Rule ID 135 //
     /* 1244 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
     /* 1247 */   // Combiner Rule #83: undef_to_int_zero; wip_match_opcode 'G_MUL'
     /* 1247 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
     /* 1250 */ // Label 93: @1250
     /* 1250 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(1261), // Rule ID 164 //
     /* 1255 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 1258 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
     /* 1258 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 1261 */ // Label 94: @1261
     /* 1261 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(1272), // Rule ID 195 //
     /* 1266 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
     /* 1269 */   // Combiner Rule #102: combine_mul_cmlt; wip_match_opcode 'G_MUL'
     /* 1269 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
     /* 1272 */ // Label 95: @1272
     /* 1272 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1295), // Rule ID 111 //
     /* 1277 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
     /* 1280 */   // MIs[0] dst
     /* 1280 */   // No operand predicates
     /* 1280 */   // MIs[0] lhs
     /* 1280 */   // No operand predicates
     /* 1280 */   // MIs[0] zero
     /* 1280 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 1284 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
     /* 1289 */   // Combiner Rule #63: binop_right_to_zero
     /* 1289 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
     /* 1294 */   GIR_EraseRootFromParent_Done,
     /* 1295 */ // Label 96: @1295
     /* 1295 */ GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1318), // Rule ID 116 //
     /* 1300 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
     /* 1303 */   // MIs[0] dst
     /* 1303 */   // No operand predicates
     /* 1303 */   // MIs[0] x
     /* 1303 */   // No operand predicates
     /* 1303 */   // MIs[0] Operand 2
     /* 1303 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
     /* 1307 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1312 */   // Combiner Rule #68: right_identity_one_int
     /* 1312 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1317 */   GIR_EraseRootFromParent_Done,
     /* 1318 */ // Label 97: @1318
     /* 1318 */ GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1329), // Rule ID 197 //
     /* 1323 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
     /* 1326 */   // MIs[0] dst
     /* 1326 */   // No operand predicates
     /* 1326 */   // MIs[0] src1
     /* 1326 */   // No operand predicates
     /* 1326 */   // MIs[0] src2
     /* 1326 */   // No operand predicates
     /* 1326 */   // Combiner Rule #104: extmultomull
     /* 1326 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
     /* 1329 */ // Label 98: @1329
     /* 1329 */ GIM_Reject,
     /* 1330 */ // Label 4: @1330
     /* 1330 */ GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1341), // Rule ID 80 //
     /* 1335 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 1338 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_SDIV'
     /* 1338 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 1341 */ // Label 99: @1341
     /* 1341 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1352), // Rule ID 107 //
     /* 1346 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
     /* 1349 */   // Combiner Rule #62: binop_left_to_zero; wip_match_opcode 'G_SDIV'
     /* 1349 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
     /* 1352 */ // Label 100: @1352
     /* 1352 */ GIM_Reject,
     /* 1353 */ // Label 5: @1353
     /* 1353 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1364), // Rule ID 79 //
     /* 1358 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 1361 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_UDIV'
     /* 1361 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 1364 */ // Label 101: @1364
     /* 1364 */ GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1375), // Rule ID 108 //
     /* 1369 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
     /* 1372 */   // Combiner Rule #62: binop_left_to_zero; wip_match_opcode 'G_UDIV'
     /* 1372 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
     /* 1375 */ // Label 102: @1375
     /* 1375 */ GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1386), // Rule ID 138 //
     /* 1380 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
     /* 1383 */   // Combiner Rule #85: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
     /* 1383 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
     /* 1386 */ // Label 103: @1386
     /* 1386 */ GIM_Reject,
     /* 1387 */ // Label 6: @1387
     /* 1387 */ GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1398), // Rule ID 82 //
     /* 1392 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 1395 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_SREM'
     /* 1395 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 1398 */ // Label 104: @1398
     /* 1398 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1409), // Rule ID 109 //
     /* 1403 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
     /* 1406 */   // Combiner Rule #62: binop_left_to_zero; wip_match_opcode 'G_SREM'
     /* 1406 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
     /* 1409 */ // Label 105: @1409
     /* 1409 */ GIM_Reject,
     /* 1410 */ // Label 7: @1410
     /* 1410 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1421), // Rule ID 81 //
     /* 1415 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 1418 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_UREM'
     /* 1418 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 1421 */ // Label 106: @1421
     /* 1421 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1432), // Rule ID 110 //
     /* 1426 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
     /* 1429 */   // Combiner Rule #62: binop_left_to_zero; wip_match_opcode 'G_UREM'
     /* 1429 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
     /* 1432 */ // Label 107: @1432
     /* 1432 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1443), // Rule ID 139 //
     /* 1437 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
     /* 1440 */   // Combiner Rule #85: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
     /* 1440 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
     /* 1443 */ // Label 108: @1443
     /* 1443 */ GIM_Reject,
     /* 1444 */ // Label 8: @1444
     /* 1444 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1455), // Rule ID 26 //
     /* 1449 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
     /* 1452 */   // Combiner Rule #24: load_and_mask; wip_match_opcode 'G_AND'
     /* 1452 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
     /* 1455 */ // Label 109: @1455
     /* 1455 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1466), // Rule ID 32 //
     /* 1460 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
     /* 1463 */   // Combiner Rule #27: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
     /* 1463 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
     /* 1466 */ // Label 110: @1466
     /* 1466 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1477), // Rule ID 35 //
     /* 1471 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
     /* 1474 */   // Combiner Rule #28: redundant_and; wip_match_opcode 'G_AND'
     /* 1474 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
     /* 1477 */ // Label 111: @1477
     /* 1477 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1488), // Rule ID 71 //
     /* 1482 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 1485 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_AND'
     /* 1485 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 1488 */ // Label 112: @1488
     /* 1488 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1499), // Rule ID 130 //
     /* 1493 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
     /* 1496 */   // Combiner Rule #80: overlapping_and; wip_match_opcode 'G_AND'
     /* 1496 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
     /* 1499 */ // Label 113: @1499
     /* 1499 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1510), // Rule ID 134 //
     /* 1504 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
     /* 1507 */   // Combiner Rule #83: undef_to_int_zero; wip_match_opcode 'G_AND'
     /* 1507 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
     /* 1510 */ // Label 114: @1510
     /* 1510 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1521), // Rule ID 165 //
     /* 1515 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 1518 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
     /* 1518 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 1521 */ // Label 115: @1521
     /* 1521 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1558), // Rule ID 42 //
     /* 1526 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
     /* 1529 */   // MIs[0] root
     /* 1529 */   // No operand predicates
     /* 1529 */   // MIs[0] shift
     /* 1529 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 1533 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
     /* 1537 */   // MIs[1] x
     /* 1537 */   // No operand predicates
     /* 1537 */   // MIs[1] lsb
     /* 1537 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
     /* 1541 */   GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
     /* 1545 */   // MIs[2] imm1
     /* 1545 */   // No operand predicates
     /* 1545 */   // MIs[0] mask
     /* 1545 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
     /* 1549 */   GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
     /* 1553 */   // MIs[3] imm2
     /* 1553 */   // No operand predicates
     /* 1553 */   GIM_CheckIsSafeToFold, /*NumInsns*/3,
     /* 1555 */   // Combiner Rule #35: bitfield_extract_from_and
     /* 1555 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
     /* 1558 */ // Label 116: @1558
     /* 1558 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1582), // Rule ID 102 //
     /* 1563 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
     /* 1566 */   // MIs[0] dst
     /* 1566 */   // No operand predicates
     /* 1566 */   // MIs[0] src
     /* 1566 */   // No operand predicates
     /* 1566 */   // MIs[0] src
     /* 1566 */   GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
     /* 1571 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1576 */   // Combiner Rule #61: binop_same_val @ [__binop_same_val_match_0[0]]
     /* 1576 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1581 */   GIR_EraseRootFromParent_Done,
     /* 1582 */ // Label 117: @1582
     /* 1582 */ GIM_Reject,
     /* 1583 */ // Label 9: @1583
     /* 1583 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1594), // Rule ID 33 //
     /* 1588 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
     /* 1591 */   // Combiner Rule #27: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
     /* 1591 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
     /* 1594 */ // Label 118: @1594
     /* 1594 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1605), // Rule ID 38 //
     /* 1599 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
     /* 1602 */   // Combiner Rule #31: redundant_or; wip_match_opcode 'G_OR'
     /* 1602 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
     /* 1605 */ // Label 119: @1605
     /* 1605 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1616), // Rule ID 75 //
     /* 1610 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 1613 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_OR'
     /* 1613 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 1616 */ // Label 120: @1616
     /* 1616 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1627), // Rule ID 136 //
     /* 1621 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
     /* 1624 */   // Combiner Rule #84: undef_to_negative_one; wip_match_opcode 'G_OR'
     /* 1624 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
     /* 1627 */ // Label 121: @1627
     /* 1627 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1638), // Rule ID 166 //
     /* 1632 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 1635 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
     /* 1635 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 1638 */ // Label 122: @1638
     /* 1638 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1649), // Rule ID 203 //
     /* 1643 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
     /* 1646 */   // Combiner Rule #110: funnel_shift_from_or_shift_constants_are_legal; wip_match_opcode 'G_OR'
     /* 1646 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
     /* 1649 */ // Label 123: @1649
     /* 1649 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1673), // Rule ID 103 //
     /* 1654 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
     /* 1657 */   // MIs[0] dst
     /* 1657 */   // No operand predicates
     /* 1657 */   // MIs[0] src
     /* 1657 */   // No operand predicates
     /* 1657 */   // MIs[0] src
     /* 1657 */   GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
     /* 1662 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1667 */   // Combiner Rule #61: binop_same_val @ [__binop_same_val_match_0[1]]
     /* 1667 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1672 */   GIR_EraseRootFromParent_Done,
     /* 1673 */ // Label 124: @1673
     /* 1673 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1696), // Rule ID 94 //
     /* 1678 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
     /* 1681 */   // MIs[0] dst
     /* 1681 */   // No operand predicates
     /* 1681 */   // MIs[0] lhs
     /* 1681 */   // No operand predicates
     /* 1681 */   // MIs[0] Operand 2
     /* 1681 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 1685 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1690 */   // Combiner Rule #60: right_identity_zero @ [__right_identity_zero_match_0[2]]
     /* 1690 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1695 */   GIR_EraseRootFromParent_Done,
     /* 1696 */ // Label 125: @1696
     /* 1696 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1707), // Rule ID 161 //
     /* 1701 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
     /* 1704 */   // MIs[0] dst
     /* 1704 */   // No operand predicates
     /* 1704 */   // MIs[0] src1
     /* 1704 */   // No operand predicates
     /* 1704 */   // MIs[0] src2
     /* 1704 */   // No operand predicates
     /* 1704 */   // Combiner Rule #95: or_to_bsp
     /* 1704 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
     /* 1707 */ // Label 126: @1707
     /* 1707 */ GIM_Reject,
     /* 1708 */ // Label 10: @1708
     /* 1708 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1719), // Rule ID 34 //
     /* 1713 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
     /* 1716 */   // Combiner Rule #27: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
     /* 1716 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
     /* 1719 */ // Label 127: @1719
     /* 1719 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1730), // Rule ID 36 //
     /* 1724 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
     /* 1727 */   // Combiner Rule #29: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
     /* 1727 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
     /* 1730 */ // Label 128: @1730
     /* 1730 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1741), // Rule ID 78 //
     /* 1735 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 1738 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_XOR'
     /* 1738 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 1741 */ // Label 129: @1741
     /* 1741 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1752), // Rule ID 153 //
     /* 1746 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
     /* 1749 */   // Combiner Rule #89: propagate_undef_any_op; wip_match_opcode 'G_XOR'
     /* 1749 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
     /* 1752 */ // Label 130: @1752
     /* 1752 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1763), // Rule ID 167 //
     /* 1757 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 1760 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
     /* 1760 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 1763 */ // Label 131: @1763
     /* 1763 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1786), // Rule ID 95 //
     /* 1768 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
     /* 1771 */   // MIs[0] dst
     /* 1771 */   // No operand predicates
     /* 1771 */   // MIs[0] lhs
     /* 1771 */   // No operand predicates
     /* 1771 */   // MIs[0] Operand 2
     /* 1771 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 1775 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1780 */   // Combiner Rule #60: right_identity_zero @ [__right_identity_zero_match_0[3]]
     /* 1780 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 1785 */   GIR_EraseRootFromParent_Done,
     /* 1786 */ // Label 132: @1786
     /* 1786 */ GIM_Reject,
     /* 1787 */ // Label 11: @1787
     /* 1787 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1798), // Rule ID 59 //
     /* 1792 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
     /* 1795 */   // Combiner Rule #47: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
     /* 1795 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
     /* 1798 */ // Label 133: @1798
     /* 1798 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1809), // Rule ID 60 //
     /* 1803 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
     /* 1806 */   // Combiner Rule #48: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
     /* 1806 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
     /* 1809 */ // Label 134: @1809
     /* 1809 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1820), // Rule ID 62 //
     /* 1814 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
     /* 1817 */   // Combiner Rule #50: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
     /* 1817 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
     /* 1820 */ // Label 135: @1820
     /* 1820 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1831), // Rule ID 63 //
     /* 1825 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
     /* 1828 */   // Combiner Rule #51: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
     /* 1828 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
     /* 1831 */ // Label 136: @1831
     /* 1831 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(1842), // Rule ID 64 //
     /* 1836 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
     /* 1839 */   // Combiner Rule #52: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
     /* 1839 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
     /* 1842 */ // Label 137: @1842
     /* 1842 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(1853), // Rule ID 65 //
     /* 1847 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
     /* 1850 */   // Combiner Rule #53: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
     /* 1850 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
     /* 1853 */ // Label 138: @1853
     /* 1853 */ GIM_Reject,
     /* 1854 */ // Label 12: @1854
     /* 1854 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(1865), // Rule ID 58 //
     /* 1859 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
     /* 1862 */   // Combiner Rule #46: fold_merge_to_zext; wip_match_opcode 'G_MERGE_VALUES'
     /* 1862 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
     /* 1865 */ // Label 139: @1865
     /* 1865 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(1876), // Rule ID 61 //
     /* 1870 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
     /* 1873 */   // Combiner Rule #49: merge_unmerge; wip_match_opcode 'G_MERGE_VALUES'
     /* 1873 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
     /* 1876 */ // Label 140: @1876
     /* 1876 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(1938),
     /* 1881 */   GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
     /* 1884 */   GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(1905), // Rule ID 66 //
     /* 1889 */     GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
     /* 1892 */     // MIs[0] root
     /* 1892 */     // No operand predicates
     /* 1892 */     // MIs[0] x
     /* 1892 */     // No operand predicates
     /* 1892 */     // MIs[0] undef
     /* 1892 */     GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
     /* 1896 */     GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
     /* 1900 */     GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 1902 */     // Combiner Rule #54: merge_of_x_and_undef
     /* 1902 */     GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
     /* 1905 */   // Label 142: @1905
     /* 1905 */   GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(1937), // Rule ID 67 //
     /* 1910 */     GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
     /* 1913 */     // MIs[0] root
     /* 1913 */     // No operand predicates
     /* 1913 */     // MIs[0] x
     /* 1913 */     // No operand predicates
     /* 1913 */     // MIs[0] zero
     /* 1913 */     GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
     /* 1917 */     GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
     /* 1921 */     // MIs[1] Operand 1
     /* 1921 */     GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
     /* 1932 */     GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 1934 */     // Combiner Rule #55: merge_of_x_and_zero
     /* 1934 */     GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
     /* 1937 */   // Label 143: @1937
     /* 1937 */   GIM_Reject,
     /* 1938 */ // Label 141: @1938
     /* 1938 */ GIM_Reject,
     /* 1939 */ // Label 13: @1939
     /* 1939 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(1950), // Rule ID 121 //
     /* 1944 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
     /* 1947 */   // Combiner Rule #71: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
     /* 1947 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
     /* 1950 */ // Label 144: @1950
     /* 1950 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(1961), // Rule ID 155 //
     /* 1955 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
     /* 1958 */   // Combiner Rule #90: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
     /* 1958 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
     /* 1961 */ // Label 145: @1961
     /* 1961 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(1972), // Rule ID 193 //
     /* 1966 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
     /* 1969 */   // Combiner Rule #100: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
     /* 1969 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
     /* 1972 */ // Label 146: @1972
     /* 1972 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2003),
     /* 1977 */   GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
     /* 1980 */   GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(1991), // Rule ID 68 //
     /* 1985 */     GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
     /* 1988 */     // MIs[0] dst
     /* 1988 */     // No operand predicates
     /* 1988 */     // MIs[0] unused
     /* 1988 */     // No operand predicates
     /* 1988 */     // Combiner Rule #56: combine_build_unmerge
     /* 1988 */     GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
     /* 1991 */   // Label 148: @1991
     /* 1991 */   GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2002), // Rule ID 196 //
     /* 1996 */     GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
     /* 1999 */     // MIs[0] dst
     /* 1999 */     // No operand predicates
     /* 1999 */     // MIs[0] unused
     /* 1999 */     // No operand predicates
     /* 1999 */     // Combiner Rule #103: combine_use_vector_truncate
     /* 1999 */     GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
     /* 2002 */   // Label 149: @2002
     /* 2002 */   GIM_Reject,
     /* 2003 */ // Label 147: @2003
     /* 2003 */ GIM_Reject,
     /* 2004 */ // Label 14: @2004
     /* 2004 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2015), // Rule ID 120 //
     /* 2009 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
     /* 2012 */   // Combiner Rule #71: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
     /* 2012 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
     /* 2015 */ // Label 150: @2015
     /* 2015 */ GIM_Reject,
     /* 2016 */ // Label 15: @2016
     /* 2016 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2027), // Rule ID 162 //
     /* 2021 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
     /* 2024 */   // Combiner Rule #96: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
     /* 2024 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
     /* 2027 */ // Label 151: @2027
     /* 2027 */ GIM_Reject,
     /* 2028 */ // Label 16: @2028
     /* 2028 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2049), // Rule ID 113 //
     /* 2033 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
     /* 2036 */   // MIs[0] dst
     /* 2036 */   // No operand predicates
     /* 2036 */   // MIs[0] t
     /* 2036 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2040 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
     /* 2044 */   // MIs[1] ptr
     /* 2044 */   // No operand predicates
     /* 2044 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2046 */   // Combiner Rule #65: i2p_to_p2i
     /* 2046 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
     /* 2049 */ // Label 152: @2049
     /* 2049 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2070), // Rule ID 147 //
     /* 2054 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
     /* 2057 */   // MIs[0] dst
     /* 2057 */   // No operand predicates
     /* 2057 */   // MIs[0] __unary_undef_to_undef_match_0.x
     /* 2057 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2061 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
     /* 2065 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2067 */   // Combiner Rule #88: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
     /* 2067 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
     /* 2070 */ // Label 153: @2070
     /* 2070 */ GIM_Reject,
     /* 2071 */ // Label 17: @2071
     /* 2071 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2082), // Rule ID 112 //
     /* 2076 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
     /* 2079 */   // Combiner Rule #64: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
     /* 2079 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
     /* 2082 */ // Label 154: @2082
     /* 2082 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2103), // Rule ID 148 //
     /* 2087 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
     /* 2090 */   // MIs[0] dst
     /* 2090 */   // No operand predicates
     /* 2090 */   // MIs[0] __unary_undef_to_undef_match_0.x
     /* 2090 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2094 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
     /* 2098 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2100 */   // Combiner Rule #88: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
     /* 2100 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
     /* 2103 */ // Label 155: @2103
     /* 2103 */ GIM_Reject,
     /* 2104 */ // Label 18: @2104
     /* 2104 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2125), // Rule ID 124 //
     /* 2109 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
     /* 2112 */   // MIs[0] dst
     /* 2112 */   // No operand predicates
     /* 2112 */   // MIs[0] src1
     /* 2112 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2116 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
     /* 2120 */   // MIs[1] src0
     /* 2120 */   // No operand predicates
     /* 2120 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2122 */   // Combiner Rule #74: bitcast_bitcast_fold
     /* 2122 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
     /* 2125 */ // Label 156: @2125
     /* 2125 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2146), // Rule ID 145 //
     /* 2130 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
     /* 2133 */   // MIs[0] dst
     /* 2133 */   // No operand predicates
     /* 2133 */   // MIs[0] __unary_undef_to_undef_match_0.x
     /* 2133 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2137 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
     /* 2141 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2143 */   // Combiner Rule #88: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
     /* 2143 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
     /* 2146 */ // Label 157: @2146
     /* 2146 */ GIM_Reject,
     /* 2147 */ // Label 19: @2147
     /* 2147 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2158), // Rule ID 194 //
     /* 2152 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
     /* 2155 */   // MIs[0] dst
     /* 2155 */   // No operand predicates
     /* 2155 */   // MIs[0] src
     /* 2155 */   // No operand predicates
     /* 2155 */   // Combiner Rule #101: push_freeze_to_prevent_poison_from_propagating
     /* 2155 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
     /* 2158 */ // Label 158: @2158
     /* 2158 */ GIM_Reject,
     /* 2159 */ // Label 20: @2159
     /* 2159 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2170), // Rule ID 23 //
     /* 2164 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
     /* 2167 */   // Combiner Rule #23: extending_loads; wip_match_opcode 'G_LOAD'
     /* 2167 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
     /* 2170 */ // Label 159: @2170
     /* 2170 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2181), // Rule ID 27 //
     /* 2175 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
     /* 2178 */   // Combiner Rule #25: combine_indexed_load_store; wip_match_opcode 'G_LOAD'
     /* 2178 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
     /* 2181 */ // Label 160: @2181
     /* 2181 */ GIM_Reject,
     /* 2182 */ // Label 21: @2182
     /* 2182 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2193), // Rule ID 24 //
     /* 2187 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
     /* 2190 */   // Combiner Rule #23: extending_loads; wip_match_opcode 'G_SEXTLOAD'
     /* 2190 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
     /* 2193 */ // Label 161: @2193
     /* 2193 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2204), // Rule ID 28 //
     /* 2198 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
     /* 2201 */   // Combiner Rule #25: combine_indexed_load_store; wip_match_opcode 'G_SEXTLOAD'
     /* 2201 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
     /* 2204 */ // Label 162: @2204
     /* 2204 */ GIM_Reject,
     /* 2205 */ // Label 22: @2205
     /* 2205 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2216), // Rule ID 25 //
     /* 2210 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
     /* 2213 */   // Combiner Rule #23: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
     /* 2213 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
     /* 2216 */ // Label 163: @2216
     /* 2216 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2227), // Rule ID 29 //
     /* 2221 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
     /* 2224 */   // Combiner Rule #25: combine_indexed_load_store; wip_match_opcode 'G_ZEXTLOAD'
     /* 2224 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
     /* 2227 */ // Label 164: @2227
     /* 2227 */ GIM_Reject,
     /* 2228 */ // Label 23: @2228
     /* 2228 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2239), // Rule ID 30 //
     /* 2233 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
     /* 2236 */   // Combiner Rule #25: combine_indexed_load_store; wip_match_opcode 'G_STORE'
     /* 2236 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
     /* 2239 */ // Label 165: @2239
     /* 2239 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2250), // Rule ID 157 //
     /* 2244 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
     /* 2247 */   // Combiner Rule #92: erase_undef_store; wip_match_opcode 'G_STORE'
     /* 2247 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
     /* 2250 */ // Label 166: @2250
     /* 2250 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2261), // Rule ID 131 //
     /* 2255 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
     /* 2258 */   // MIs[0] src
     /* 2258 */   // No operand predicates
     /* 2258 */   // MIs[0] addr
     /* 2258 */   // No operand predicates
     /* 2258 */   // Combiner Rule #81: split_store_zero_128
     /* 2258 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
     /* 2261 */ // Label 167: @2261
     /* 2261 */ GIM_Reject,
     /* 2262 */ // Label 24: @2262
     /* 2262 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2273), // Rule ID 22 //
     /* 2267 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
     /* 2270 */   // Combiner Rule #22: mutate_anyext_to_zext; wip_match_opcode 'G_ANYEXT'
     /* 2270 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
     /* 2273 */ // Label 168: @2273
     /* 2273 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2284), // Rule ID 114 //
     /* 2278 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
     /* 2281 */   // Combiner Rule #66: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
     /* 2281 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
     /* 2284 */ // Label 169: @2284
     /* 2284 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2305), // Rule ID 8 //
     /* 2289 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
     /* 2292 */   // MIs[0] root
     /* 2292 */   // No operand predicates
     /* 2292 */   // MIs[0] second
     /* 2292 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2296 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
     /* 2300 */   // MIs[1] src
     /* 2300 */   // No operand predicates
     /* 2300 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2302 */   // Combiner Rule #8: anyext_of_anyext
     /* 2302 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
     /* 2305 */ // Label 170: @2305
     /* 2305 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2326), // Rule ID 10 //
     /* 2310 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
     /* 2313 */   // MIs[0] root
     /* 2313 */   // No operand predicates
     /* 2313 */   // MIs[0] second
     /* 2313 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2317 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
     /* 2321 */   // MIs[1] src
     /* 2321 */   // No operand predicates
     /* 2321 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2323 */   // Combiner Rule #10: anyext_of_sext
     /* 2323 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
     /* 2326 */ // Label 171: @2326
     /* 2326 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2347), // Rule ID 9 //
     /* 2331 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
     /* 2334 */   // MIs[0] root
     /* 2334 */   // No operand predicates
     /* 2334 */   // MIs[0] second
     /* 2334 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2338 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
     /* 2342 */   // MIs[1] src
     /* 2342 */   // No operand predicates
     /* 2342 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2344 */   // Combiner Rule #9: anyext_of_zext
     /* 2344 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
     /* 2347 */ // Label 172: @2347
     /* 2347 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2368), // Rule ID 146 //
     /* 2352 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
     /* 2355 */   // MIs[0] dst
     /* 2355 */   // No operand predicates
     /* 2355 */   // MIs[0] __unary_undef_to_undef_match_0.x
     /* 2355 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2359 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
     /* 2363 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2365 */   // Combiner Rule #88: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
     /* 2365 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
     /* 2368 */ // Label 173: @2368
     /* 2368 */ GIM_Reject,
     /* 2369 */ // Label 25: @2369
     /* 2369 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2380), // Rule ID 122 //
     /* 2374 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
     /* 2377 */   // Combiner Rule #72: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
     /* 2377 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
     /* 2380 */ // Label 174: @2380
     /* 2380 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2391), // Rule ID 123 //
     /* 2385 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
     /* 2388 */   // Combiner Rule #73: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
     /* 2388 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
     /* 2391 */ // Label 175: @2391
     /* 2391 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2423), // Rule ID 200 //
     /* 2396 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
     /* 2399 */   // MIs[0] dst
     /* 2399 */   // No operand predicates
     /* 2399 */   // MIs[0] min
     /* 2399 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2403 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
     /* 2407 */   // MIs[1] x
     /* 2407 */   // No operand predicates
     /* 2407 */   // MIs[1] y
     /* 2407 */   // No operand predicates
     /* 2407 */   GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
     /* 2411 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2413 */   // Combiner Rule #107: trunc_usatu
     /* 2413 */   GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
     /* 2416 */   GIR_RootToRootCopy, /*OpIdx*/0, // dst
     /* 2418 */   GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
     /* 2422 */   GIR_EraseRootFromParent_Done,
     /* 2423 */ // Label 176: @2423
     /* 2423 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(2444), // Rule ID 3 //
     /* 2428 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
     /* 2431 */   // MIs[0] root
     /* 2431 */   // No operand predicates
     /* 2431 */   // MIs[0] ext
     /* 2431 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2435 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
     /* 2439 */   // MIs[1] src
     /* 2439 */   // No operand predicates
     /* 2439 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2441 */   // Combiner Rule #3: truncate_of_anyext
     /* 2441 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
     /* 2444 */ // Label 177: @2444
     /* 2444 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(2468), // Rule ID 20 //
     /* 2449 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
     /* 2452 */   // MIs[0] root
     /* 2452 */   // No operand predicates
     /* 2452 */   // MIs[0] bv
     /* 2452 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2456 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
     /* 2460 */   GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
     /* 2463 */   // MIs[1] unused
     /* 2463 */   // No operand predicates
     /* 2463 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2465 */   // Combiner Rule #20: buildvector_of_truncate
     /* 2465 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
     /* 2468 */ // Label 178: @2468
     /* 2468 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(2489), // Rule ID 2 //
     /* 2473 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
     /* 2476 */   // MIs[0] root
     /* 2476 */   // No operand predicates
     /* 2476 */   // MIs[0] ext
     /* 2476 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2480 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
     /* 2484 */   // MIs[1] src
     /* 2484 */   // No operand predicates
     /* 2484 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2486 */   // Combiner Rule #2: truncate_of_sext
     /* 2486 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
     /* 2489 */ // Label 179: @2489
     /* 2489 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(2510), // Rule ID 1 //
     /* 2494 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
     /* 2497 */   // MIs[0] root
     /* 2497 */   // No operand predicates
     /* 2497 */   // MIs[0] ext
     /* 2497 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2501 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
     /* 2505 */   // MIs[1] src
     /* 2505 */   // No operand predicates
     /* 2505 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2507 */   // Combiner Rule #1: truncate_of_zext
     /* 2507 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
     /* 2510 */ // Label 180: @2510
     /* 2510 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(2531), // Rule ID 144 //
     /* 2515 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
     /* 2518 */   // MIs[0] dst
     /* 2518 */   // No operand predicates
     /* 2518 */   // MIs[0] __unary_undef_to_undef_match_0.x
     /* 2518 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2522 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
     /* 2526 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2528 */   // Combiner Rule #88: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
     /* 2528 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
     /* 2531 */ // Label 181: @2531
     /* 2531 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(2552), // Rule ID 21 //
     /* 2536 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
     /* 2539 */   // MIs[0] root
     /* 2539 */   // No operand predicates
     /* 2539 */   // MIs[0] int
     /* 2539 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2543 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
     /* 2547 */   // MIs[1] imm
     /* 2547 */   // No operand predicates
     /* 2547 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2549 */   // Combiner Rule #21: integer_of_truncate
     /* 2549 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
     /* 2552 */ // Label 182: @2552
     /* 2552 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(2563), // Rule ID 198 //
     /* 2557 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
     /* 2560 */   // MIs[0] dst
     /* 2560 */   // No operand predicates
     /* 2560 */   // MIs[0] src
     /* 2560 */   // No operand predicates
     /* 2560 */   // Combiner Rule #105: trunc_ssats
     /* 2560 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
     /* 2563 */ // Label 183: @2563
     /* 2563 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(2574), // Rule ID 199 //
     /* 2568 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
     /* 2571 */   // MIs[0] dst
     /* 2571 */   // No operand predicates
     /* 2571 */   // MIs[0] src
     /* 2571 */   // No operand predicates
     /* 2571 */   // Combiner Rule #106: trunc_ssatu
     /* 2571 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
     /* 2574 */ // Label 184: @2574
     /* 2574 */ GIM_Reject,
     /* 2575 */ // Label 26: @2575
     /* 2575 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(2607), // Rule ID 201 //
     /* 2580 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
     /* 2583 */   // MIs[0] dst
     /* 2583 */   // No operand predicates
     /* 2583 */   // MIs[0] src
     /* 2583 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2587 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
     /* 2591 */   // MIs[1] x
     /* 2591 */   // No operand predicates
     /* 2591 */   GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
     /* 2595 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2597 */   // Combiner Rule #108: truncusatu_to_fptouisat
     /* 2597 */   GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
     /* 2600 */   GIR_RootToRootCopy, /*OpIdx*/0, // dst
     /* 2602 */   GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
     /* 2606 */   GIR_EraseRootFromParent_Done,
     /* 2607 */ // Label 185: @2607
     /* 2607 */ GIM_Reject,
     /* 2608 */ // Label 27: @2608
     /* 2608 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(2629), // Rule ID 7 //
     /* 2613 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
     /* 2616 */   // MIs[0] root
     /* 2616 */   // No operand predicates
     /* 2616 */   // MIs[0] second
     /* 2616 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2620 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
     /* 2624 */   // MIs[1] src
     /* 2624 */   // No operand predicates
     /* 2624 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2626 */   // Combiner Rule #7: sext_of_anyext
     /* 2626 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
     /* 2629 */ // Label 186: @2629
     /* 2629 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(2650), // Rule ID 6 //
     /* 2634 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
     /* 2637 */   // MIs[0] root
     /* 2637 */   // No operand predicates
     /* 2637 */   // MIs[0] second
     /* 2637 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2641 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
     /* 2645 */   // MIs[1] src
     /* 2645 */   // No operand predicates
     /* 2645 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2647 */   // Combiner Rule #6: sext_of_sext
     /* 2647 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
     /* 2650 */ // Label 187: @2650
     /* 2650 */ GIM_Reject,
     /* 2651 */ // Label 28: @2651
     /* 2651 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(2662), // Rule ID 31 //
     /* 2656 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
     /* 2659 */   // Combiner Rule #26: sext_trunc_sextload; wip_match_opcode 'G_SEXT_INREG'
     /* 2659 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
     /* 2662 */ // Label 188: @2662
     /* 2662 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(2673), // Rule ID 40 //
     /* 2667 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
     /* 2670 */   // Combiner Rule #33: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
     /* 2670 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
     /* 2673 */ // Label 189: @2673
     /* 2673 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(2684), // Rule ID 41 //
     /* 2678 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
     /* 2681 */   // Combiner Rule #34: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
     /* 2681 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
     /* 2684 */ // Label 190: @2684
     /* 2684 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(2705), // Rule ID 11 //
     /* 2689 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
     /* 2692 */   // MIs[0] dst
     /* 2692 */   // No operand predicates
     /* 2692 */   // MIs[0] x
     /* 2692 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2696 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
     /* 2700 */   // MIs[1] src
     /* 2700 */   // No operand predicates
     /* 2700 */   // MIs[1] a
     /* 2700 */   // No operand predicates
     /* 2700 */   // MIs[0] b
     /* 2700 */   // No operand predicates
     /* 2700 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2702 */   // Combiner Rule #11: sext_inreg_of_sext_inreg
     /* 2702 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
     /* 2705 */ // Label 191: @2705
     /* 2705 */ GIM_Reject,
     /* 2706 */ // Label 29: @2706
     /* 2706 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(2727), // Rule ID 5 //
     /* 2711 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
     /* 2714 */   // MIs[0] root
     /* 2714 */   // No operand predicates
     /* 2714 */   // MIs[0] second
     /* 2714 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2718 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
     /* 2722 */   // MIs[1] src
     /* 2722 */   // No operand predicates
     /* 2722 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2724 */   // Combiner Rule #5: zext_of_anyext
     /* 2724 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
     /* 2727 */ // Label 192: @2727
     /* 2727 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(2748), // Rule ID 4 //
     /* 2732 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
     /* 2735 */   // MIs[0] root
     /* 2735 */   // No operand predicates
     /* 2735 */   // MIs[0] second
     /* 2735 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2739 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
     /* 2743 */   // MIs[1] src
     /* 2743 */   // No operand predicates
     /* 2743 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2745 */   // Combiner Rule #4: zext_of_zext
     /* 2745 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
     /* 2748 */ // Label 193: @2748
     /* 2748 */ GIM_Reject,
     /* 2749 */ // Label 30: @2749
     /* 2749 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(2760), // Rule ID 76 //
     /* 2754 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 2757 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_SHL'
     /* 2757 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 2760 */ // Label 194: @2760
     /* 2760 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(2771), // Rule ID 104 //
     /* 2765 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
     /* 2768 */   // Combiner Rule #62: binop_left_to_zero; wip_match_opcode 'G_SHL'
     /* 2768 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
     /* 2771 */ // Label 195: @2771
     /* 2771 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(2782), // Rule ID 137 //
     /* 2776 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
     /* 2779 */   // Combiner Rule #85: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
     /* 2779 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
     /* 2782 */ // Label 196: @2782
     /* 2782 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(2793), // Rule ID 140 //
     /* 2787 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
     /* 2790 */   // Combiner Rule #86: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
     /* 2790 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
     /* 2793 */ // Label 197: @2793
     /* 2793 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(2816), // Rule ID 96 //
     /* 2798 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
     /* 2801 */   // MIs[0] dst
     /* 2801 */   // No operand predicates
     /* 2801 */   // MIs[0] lhs
     /* 2801 */   // No operand predicates
     /* 2801 */   // MIs[0] Operand 2
     /* 2801 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 2805 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 2810 */   // Combiner Rule #60: right_identity_zero @ [__right_identity_zero_match_0[4]]
     /* 2810 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 2815 */   GIR_EraseRootFromParent_Done,
     /* 2816 */ // Label 198: @2816
     /* 2816 */ GIM_Reject,
     /* 2817 */ // Label 31: @2817
     /* 2817 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(2828), // Rule ID 44 //
     /* 2822 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
     /* 2825 */   // Combiner Rule #36: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
     /* 2825 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
     /* 2828 */ // Label 199: @2828
     /* 2828 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(2839), // Rule ID 46 //
     /* 2833 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
     /* 2836 */   // Combiner Rule #37: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
     /* 2836 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
     /* 2839 */ // Label 200: @2839
     /* 2839 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(2850), // Rule ID 73 //
     /* 2844 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 2847 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_LSHR'
     /* 2847 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 2850 */ // Label 201: @2850
     /* 2850 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(2861), // Rule ID 105 //
     /* 2855 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
     /* 2858 */   // Combiner Rule #62: binop_left_to_zero; wip_match_opcode 'G_LSHR'
     /* 2858 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
     /* 2861 */ // Label 202: @2861
     /* 2861 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(2872), // Rule ID 142 //
     /* 2866 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
     /* 2869 */   // Combiner Rule #86: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
     /* 2869 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
     /* 2872 */ // Label 203: @2872
     /* 2872 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(2901), // Rule ID 202 //
     /* 2877 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
     /* 2880 */   // MIs[0] dst
     /* 2880 */   // No operand predicates
     /* 2880 */   // MIs[0] d2
     /* 2880 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2884 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
     /* 2888 */   // MIs[1] d1
     /* 2888 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
     /* 2892 */   GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
     /* 2896 */   // MIs[2] x
     /* 2896 */   // No operand predicates
     /* 2896 */   // MIs[2] y
     /* 2896 */   // No operand predicates
     /* 2896 */   // MIs[0] z
     /* 2896 */   // No operand predicates
     /* 2896 */   GIM_CheckIsSafeToFold, /*NumInsns*/2,
     /* 2898 */   // Combiner Rule #109: lshr_of_trunc_of_lshr
     /* 2898 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
     /* 2901 */ // Label 204: @2901
     /* 2901 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(2924), // Rule ID 98 //
     /* 2906 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
     /* 2909 */   // MIs[0] dst
     /* 2909 */   // No operand predicates
     /* 2909 */   // MIs[0] lhs
     /* 2909 */   // No operand predicates
     /* 2909 */   // MIs[0] Operand 2
     /* 2909 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 2913 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 2918 */   // Combiner Rule #60: right_identity_zero @ [__right_identity_zero_match_0[6]]
     /* 2918 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 2923 */   GIR_EraseRootFromParent_Done,
     /* 2924 */ // Label 205: @2924
     /* 2924 */ GIM_Reject,
     /* 2925 */ // Label 32: @2925
     /* 2925 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(2936), // Rule ID 43 //
     /* 2930 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
     /* 2933 */   // Combiner Rule #36: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
     /* 2933 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
     /* 2936 */ // Label 206: @2936
     /* 2936 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(2947), // Rule ID 45 //
     /* 2941 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
     /* 2944 */   // Combiner Rule #37: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
     /* 2944 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
     /* 2947 */ // Label 207: @2947
     /* 2947 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(2958), // Rule ID 72 //
     /* 2952 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 2955 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_ASHR'
     /* 2955 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 2958 */ // Label 208: @2958
     /* 2958 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(2969), // Rule ID 106 //
     /* 2963 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
     /* 2966 */   // Combiner Rule #62: binop_left_to_zero; wip_match_opcode 'G_ASHR'
     /* 2966 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
     /* 2969 */ // Label 209: @2969
     /* 2969 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(2980), // Rule ID 141 //
     /* 2974 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
     /* 2977 */   // Combiner Rule #86: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
     /* 2977 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
     /* 2980 */ // Label 210: @2980
     /* 2980 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3003), // Rule ID 97 //
     /* 2985 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
     /* 2988 */   // MIs[0] dst
     /* 2988 */   // No operand predicates
     /* 2988 */   // MIs[0] lhs
     /* 2988 */   // No operand predicates
     /* 2988 */   // MIs[0] Operand 2
     /* 2988 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 2992 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 2997 */   // Combiner Rule #60: right_identity_zero @ [__right_identity_zero_match_0[5]]
     /* 2997 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3002 */   GIR_EraseRootFromParent_Done,
     /* 3003 */ // Label 211: @3003
     /* 3003 */ GIM_Reject,
     /* 3004 */ // Label 33: @3004
     /* 3004 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3015), // Rule ID 47 //
     /* 3009 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
     /* 3012 */   // Combiner Rule #38: rotate_out_of_range; wip_match_opcode 'G_ROTR'
     /* 3012 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
     /* 3015 */ // Label 212: @3015
     /* 3015 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3038), // Rule ID 101 //
     /* 3020 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
     /* 3023 */   // MIs[0] dst
     /* 3023 */   // No operand predicates
     /* 3023 */   // MIs[0] lhs
     /* 3023 */   // No operand predicates
     /* 3023 */   // MIs[0] Operand 2
     /* 3023 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 3027 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3032 */   // Combiner Rule #60: right_identity_zero @ [__right_identity_zero_match_0[9]]
     /* 3032 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3037 */   GIR_EraseRootFromParent_Done,
     /* 3038 */ // Label 213: @3038
     /* 3038 */ GIM_Reject,
     /* 3039 */ // Label 34: @3039
     /* 3039 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3050), // Rule ID 48 //
     /* 3044 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
     /* 3047 */   // Combiner Rule #38: rotate_out_of_range; wip_match_opcode 'G_ROTL'
     /* 3047 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
     /* 3050 */ // Label 214: @3050
     /* 3050 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3073), // Rule ID 100 //
     /* 3055 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
     /* 3058 */   // MIs[0] dst
     /* 3058 */   // No operand predicates
     /* 3058 */   // MIs[0] lhs
     /* 3058 */   // No operand predicates
     /* 3058 */   // MIs[0] Operand 2
     /* 3058 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 3062 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3067 */   // Combiner Rule #60: right_identity_zero @ [__right_identity_zero_match_0[8]]
     /* 3067 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3072 */   GIR_EraseRootFromParent_Done,
     /* 3073 */ // Label 215: @3073
     /* 3073 */ GIM_Reject,
     /* 3074 */ // Label 35: @3074
     /* 3074 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3085), // Rule ID 49 //
     /* 3079 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
     /* 3082 */   // Combiner Rule #39: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
     /* 3082 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
     /* 3085 */ // Label 216: @3085
     /* 3085 */ GIM_Reject,
     /* 3086 */ // Label 36: @3086
     /* 3086 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3097), // Rule ID 55 //
     /* 3091 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
     /* 3094 */   // Combiner Rule #43: select_constant_cmp; wip_match_opcode 'G_SELECT'
     /* 3094 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
     /* 3097 */ // Label 217: @3097
     /* 3097 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3108), // Rule ID 57 //
     /* 3102 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
     /* 3105 */   // Combiner Rule #45: match_selects; wip_match_opcode 'G_SELECT'
     /* 3105 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
     /* 3108 */ // Label 218: @3108
     /* 3108 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3119), // Rule ID 91 //
     /* 3113 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
     /* 3116 */   // Combiner Rule #59: select_same_val; wip_match_opcode 'G_SELECT'
     /* 3116 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
     /* 3119 */ // Label 219: @3119
     /* 3119 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3130), // Rule ID 160 //
     /* 3124 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
     /* 3127 */   // Combiner Rule #94: select_to_minmax; wip_match_opcode 'G_SELECT'
     /* 3127 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
     /* 3130 */ // Label 220: @3130
     /* 3130 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3151), // Rule ID 56 //
     /* 3135 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
     /* 3138 */   // MIs[0] root
     /* 3138 */   // No operand predicates
     /* 3138 */   // MIs[0] tst
     /* 3138 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3142 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
     /* 3146 */   // MIs[1] tst1
     /* 3146 */   // No operand predicates
     /* 3146 */   // MIs[1] a
     /* 3146 */   // No operand predicates
     /* 3146 */   // MIs[1] b
     /* 3146 */   // No operand predicates
     /* 3146 */   // MIs[0] x
     /* 3146 */   // No operand predicates
     /* 3146 */   // MIs[0] y
     /* 3146 */   // No operand predicates
     /* 3146 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3148 */   // Combiner Rule #44: select_to_iminmax
     /* 3148 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
     /* 3151 */ // Label 221: @3151
     /* 3151 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3180), // Rule ID 54 //
     /* 3156 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
     /* 3159 */   // MIs[0] dst
     /* 3159 */   // No operand predicates
     /* 3159 */   // MIs[0] undef
     /* 3159 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3163 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
     /* 3167 */   // MIs[0] x
     /* 3167 */   // No operand predicates
     /* 3167 */   // MIs[0] y
     /* 3167 */   // No operand predicates
     /* 3167 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
     /* 3172 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3174 */   // Combiner Rule #42: select_undef_cmp
     /* 3174 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
     /* 3179 */   GIR_EraseRootFromParent_Done,
     /* 3180 */ // Label 222: @3180
     /* 3180 */ GIM_Reject,
     /* 3181 */ // Label 37: @3181
     /* 3181 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(3192), // Rule ID 51 //
     /* 3186 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
     /* 3189 */   // Combiner Rule #40: match_addos; wip_match_opcode 'G_UADDO'
     /* 3189 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
     /* 3192 */ // Label 223: @3192
     /* 3192 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(3203), // Rule ID 172 //
     /* 3197 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3200 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
     /* 3200 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3203 */ // Label 224: @3203
     /* 3203 */ GIM_Reject,
     /* 3204 */ // Label 38: @3204
     /* 3204 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(3215), // Rule ID 53 //
     /* 3209 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
     /* 3212 */   // Combiner Rule #41: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
     /* 3212 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
     /* 3215 */ // Label 225: @3215
     /* 3215 */ GIM_Reject,
     /* 3216 */ // Label 39: @3216
     /* 3216 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(3227), // Rule ID 50 //
     /* 3221 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
     /* 3224 */   // Combiner Rule #40: match_addos; wip_match_opcode 'G_SADDO'
     /* 3224 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
     /* 3227 */ // Label 226: @3227
     /* 3227 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(3238), // Rule ID 173 //
     /* 3232 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3235 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
     /* 3235 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3238 */ // Label 227: @3238
     /* 3238 */ GIM_Reject,
     /* 3239 */ // Label 40: @3239
     /* 3239 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(3250), // Rule ID 52 //
     /* 3244 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
     /* 3247 */   // Combiner Rule #41: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
     /* 3247 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
     /* 3250 */ // Label 228: @3250
     /* 3250 */ GIM_Reject,
     /* 3251 */ // Label 41: @3251
     /* 3251 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(3262), // Rule ID 174 //
     /* 3256 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3259 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
     /* 3259 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3262 */ // Label 229: @3262
     /* 3262 */ GIM_Reject,
     /* 3263 */ // Label 42: @3263
     /* 3263 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(3274), // Rule ID 175 //
     /* 3268 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3271 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
     /* 3271 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3274 */ // Label 230: @3274
     /* 3274 */ GIM_Reject,
     /* 3275 */ // Label 43: @3275
     /* 3275 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(3286), // Rule ID 176 //
     /* 3280 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3283 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
     /* 3283 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3286 */ // Label 231: @3286
     /* 3286 */ GIM_Reject,
     /* 3287 */ // Label 44: @3287
     /* 3287 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(3298), // Rule ID 177 //
     /* 3292 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3295 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
     /* 3295 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3298 */ // Label 232: @3298
     /* 3298 */ GIM_Reject,
     /* 3299 */ // Label 45: @3299
     /* 3299 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(3310), // Rule ID 178 //
     /* 3304 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3307 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
     /* 3307 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3310 */ // Label 233: @3310
     /* 3310 */ GIM_Reject,
     /* 3311 */ // Label 46: @3311
     /* 3311 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(3322), // Rule ID 179 //
     /* 3316 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3319 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
     /* 3319 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3322 */ // Label 234: @3322
     /* 3322 */ GIM_Reject,
     /* 3323 */ // Label 47: @3323
     /* 3323 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(3334), // Rule ID 180 //
     /* 3328 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3331 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
     /* 3331 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3334 */ // Label 235: @3334
     /* 3334 */ GIM_Reject,
     /* 3335 */ // Label 48: @3335
     /* 3335 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(3346), // Rule ID 181 //
     /* 3340 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3343 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
     /* 3343 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3346 */ // Label 236: @3346
     /* 3346 */ GIM_Reject,
     /* 3347 */ // Label 49: @3347
     /* 3347 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(3358), // Rule ID 182 //
     /* 3352 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3355 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
     /* 3355 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3358 */ // Label 237: @3358
     /* 3358 */ GIM_Reject,
     /* 3359 */ // Label 50: @3359
     /* 3359 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(3370), // Rule ID 183 //
     /* 3364 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3367 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
     /* 3367 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3370 */ // Label 238: @3370
     /* 3370 */ GIM_Reject,
     /* 3371 */ // Label 51: @3371
     /* 3371 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(3382), // Rule ID 87 //
     /* 3376 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
     /* 3379 */   // Combiner Rule #58: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
     /* 3379 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
     /* 3382 */ // Label 239: @3382
     /* 3382 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(3393), // Rule ID 184 //
     /* 3387 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
     /* 3390 */   // Combiner Rule #98: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
     /* 3390 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
     /* 3393 */ // Label 240: @3393
     /* 3393 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(3416), // Rule ID 126 //
     /* 3398 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
     /* 3401 */   // MIs[0] dst
     /* 3401 */   // No operand predicates
     /* 3401 */   // MIs[0] x
     /* 3401 */   // No operand predicates
     /* 3401 */   // MIs[0] y
     /* 3401 */   // No operand predicates
     /* 3401 */   GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
     /* 3405 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3410 */   // Combiner Rule #76: right_identity_neg_zero_fp
     /* 3410 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3415 */   GIR_EraseRootFromParent_Done,
     /* 3416 */ // Label 241: @3416
     /* 3416 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(3445), // Rule ID 127 //
     /* 3421 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
     /* 3424 */   GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
     /* 3430 */   // MIs[0] dst
     /* 3430 */   // No operand predicates
     /* 3430 */   // MIs[0] x
     /* 3430 */   // No operand predicates
     /* 3430 */   // MIs[0] y
     /* 3430 */   // No operand predicates
     /* 3430 */   GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
     /* 3434 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3439 */   // Combiner Rule #77: right_identity_neg_zero_fp_nsz
     /* 3439 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3444 */   GIR_EraseRootFromParent_Done,
     /* 3445 */ // Label 242: @3445
     /* 3445 */ GIM_Reject,
     /* 3446 */ // Label 52: @3446
     /* 3446 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(3457), // Rule ID 88 //
     /* 3451 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
     /* 3454 */   // Combiner Rule #58: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
     /* 3454 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
     /* 3457 */ // Label 243: @3457
     /* 3457 */ GIM_Reject,
     /* 3458 */ // Label 53: @3458
     /* 3458 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(3469), // Rule ID 89 //
     /* 3463 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
     /* 3466 */   // Combiner Rule #58: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
     /* 3466 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
     /* 3469 */ // Label 244: @3469
     /* 3469 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(3480), // Rule ID 185 //
     /* 3474 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
     /* 3477 */   // Combiner Rule #98: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
     /* 3477 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
     /* 3480 */ // Label 245: @3480
     /* 3480 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(3503), // Rule ID 117 //
     /* 3485 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
     /* 3488 */   // MIs[0] dst
     /* 3488 */   // No operand predicates
     /* 3488 */   // MIs[0] x
     /* 3488 */   // No operand predicates
     /* 3488 */   // MIs[0] y
     /* 3488 */   // No operand predicates
     /* 3488 */   GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
     /* 3492 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3497 */   // Combiner Rule #69: right_identity_one_fp
     /* 3497 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3502 */   GIR_EraseRootFromParent_Done,
     /* 3503 */ // Label 246: @3503
     /* 3503 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(3523), // Rule ID 128 //
     /* 3508 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
     /* 3511 */   // MIs[0] dst
     /* 3511 */   // No operand predicates
     /* 3511 */   // MIs[0] x
     /* 3511 */   // No operand predicates
     /* 3511 */   // MIs[0] y
     /* 3511 */   // No operand predicates
     /* 3511 */   GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
     /* 3515 */   // Combiner Rule #78: right_identity_neg_one_fp
     /* 3515 */   GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
     /* 3518 */   GIR_RootToRootCopy, /*OpIdx*/0, // dst
     /* 3520 */   GIR_RootToRootCopy, /*OpIdx*/1, // x
     /* 3522 */   GIR_EraseRootFromParent_Done,
     /* 3523 */ // Label 247: @3523
     /* 3523 */ GIM_Reject,
     /* 3524 */ // Label 54: @3524
     /* 3524 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(3535), // Rule ID 90 //
     /* 3529 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
     /* 3532 */   // Combiner Rule #58: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
     /* 3532 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
     /* 3535 */ // Label 248: @3535
     /* 3535 */ GIM_Reject,
     /* 3536 */ // Label 55: @3536
     /* 3536 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(3557), // Rule ID 15 //
     /* 3541 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
     /* 3544 */   // MIs[0] dst
     /* 3544 */   // No operand predicates
     /* 3544 */   // MIs[0] src0
     /* 3544 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3548 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
     /* 3552 */   // MIs[1] cst
     /* 3552 */   // No operand predicates
     /* 3552 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3554 */   // Combiner Rule #15: constant_fold_flog2
     /* 3554 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
     /* 3557 */ // Label 249: @3557
     /* 3557 */ GIM_Reject,
     /* 3558 */ // Label 56: @3558
     /* 3558 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(3579), // Rule ID 12 //
     /* 3563 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
     /* 3566 */   // MIs[0] dst
     /* 3566 */   // No operand predicates
     /* 3566 */   // MIs[0] src0
     /* 3566 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3570 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
     /* 3574 */   // MIs[1] cst
     /* 3574 */   // No operand predicates
     /* 3574 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3576 */   // Combiner Rule #12: constant_fold_fneg
     /* 3576 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
     /* 3579 */ // Label 250: @3579
     /* 3579 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(3608), // Rule ID 115 //
     /* 3584 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
     /* 3587 */   // MIs[0] dst
     /* 3587 */   // No operand predicates
     /* 3587 */   // MIs[0] t
     /* 3587 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3591 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
     /* 3595 */   // MIs[1] src
     /* 3595 */   // No operand predicates
     /* 3595 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
     /* 3600 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3602 */   // Combiner Rule #67: fneg_fneg_fold
     /* 3602 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
     /* 3607 */   GIR_EraseRootFromParent_Done,
     /* 3608 */ // Label 251: @3608
     /* 3608 */ GIM_Reject,
     /* 3609 */ // Label 57: @3609
     /* 3609 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(3630), // Rule ID 17 //
     /* 3614 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
     /* 3617 */   // MIs[0] dst
     /* 3617 */   // No operand predicates
     /* 3617 */   // MIs[0] src0
     /* 3617 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3621 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
     /* 3625 */   // MIs[1] cst
     /* 3625 */   // No operand predicates
     /* 3625 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3627 */   // Combiner Rule #17: constant_fold_fpext
     /* 3627 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
     /* 3630 */ // Label 252: @3630
     /* 3630 */ GIM_Reject,
     /* 3631 */ // Label 58: @3631
     /* 3631 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(3652), // Rule ID 16 //
     /* 3636 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
     /* 3639 */   // MIs[0] dst
     /* 3639 */   // No operand predicates
     /* 3639 */   // MIs[0] src0
     /* 3639 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3643 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
     /* 3647 */   // MIs[1] cst
     /* 3647 */   // No operand predicates
     /* 3647 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3649 */   // Combiner Rule #16: constant_fold_fptrunc
     /* 3649 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
     /* 3652 */ // Label 253: @3652
     /* 3652 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(3673), // Rule ID 125 //
     /* 3657 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
     /* 3660 */   // MIs[0] dst
     /* 3660 */   // No operand predicates
     /* 3660 */   // MIs[0] src1
     /* 3660 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3664 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
     /* 3668 */   // MIs[1] src0
     /* 3668 */   // No operand predicates
     /* 3668 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3670 */   // Combiner Rule #75: fptrunc_fpext_fold
     /* 3670 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
     /* 3673 */ // Label 254: @3673
     /* 3673 */ GIM_Reject,
     /* 3674 */ // Label 59: @3674
     /* 3674 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(3695), // Rule ID 149 //
     /* 3679 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
     /* 3682 */   // MIs[0] dst
     /* 3682 */   // No operand predicates
     /* 3682 */   // MIs[0] __unary_undef_to_undef_match_0.x
     /* 3682 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3686 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
     /* 3690 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3692 */   // Combiner Rule #88: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
     /* 3692 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
     /* 3695 */ // Label 255: @3695
     /* 3695 */ GIM_Reject,
     /* 3696 */ // Label 60: @3696
     /* 3696 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(3717), // Rule ID 150 //
     /* 3701 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
     /* 3704 */   // MIs[0] dst
     /* 3704 */   // No operand predicates
     /* 3704 */   // MIs[0] __unary_undef_to_undef_match_0.x
     /* 3704 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3708 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
     /* 3712 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3714 */   // Combiner Rule #88: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
     /* 3714 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
     /* 3717 */ // Label 256: @3717
     /* 3717 */ GIM_Reject,
     /* 3718 */ // Label 61: @3718
     /* 3718 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(3729), // Rule ID 133 //
     /* 3723 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
     /* 3726 */   // Combiner Rule #82: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
     /* 3726 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
     /* 3729 */ // Label 257: @3729
     /* 3729 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(3744), // Rule ID 18 //
     /* 3734 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
     /* 3737 */   // MIs[0] dst
     /* 3737 */   // No operand predicates
     /* 3737 */   // MIs[0] Operand 1
     /* 3737 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
     /* 3741 */   // Combiner Rule #18: itof_const_zero_fold_si
     /* 3741 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
     /* 3744 */ // Label 258: @3744
     /* 3744 */ GIM_Reject,
     /* 3745 */ // Label 62: @3745
     /* 3745 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(3756), // Rule ID 132 //
     /* 3750 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
     /* 3753 */   // Combiner Rule #82: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
     /* 3753 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
     /* 3756 */ // Label 259: @3756
     /* 3756 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(3771), // Rule ID 19 //
     /* 3761 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
     /* 3764 */   // MIs[0] dst
     /* 3764 */   // No operand predicates
     /* 3764 */   // MIs[0] Operand 1
     /* 3764 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
     /* 3768 */   // Combiner Rule #19: itof_const_zero_fold_ui
     /* 3768 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
     /* 3771 */ // Label 260: @3771
     /* 3771 */ GIM_Reject,
     /* 3772 */ // Label 63: @3772
     /* 3772 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(3793), // Rule ID 13 //
     /* 3777 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
     /* 3780 */   // MIs[0] dst
     /* 3780 */   // No operand predicates
     /* 3780 */   // MIs[0] src0
     /* 3780 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 3784 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
     /* 3788 */   // MIs[1] cst
     /* 3788 */   // No operand predicates
     /* 3788 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 3790 */   // Combiner Rule #13: constant_fold_fabs
     /* 3790 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
     /* 3793 */ // Label 261: @3793
     /* 3793 */ GIM_Reject,
     /* 3794 */ // Label 64: @3794
     /* 3794 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(3805), // Rule ID 186 //
     /* 3799 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
     /* 3802 */   // Combiner Rule #98: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
     /* 3802 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
     /* 3805 */ // Label 262: @3805
     /* 3805 */ GIM_Reject,
     /* 3806 */ // Label 65: @3806
     /* 3806 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(3817), // Rule ID 187 //
     /* 3811 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
     /* 3814 */   // Combiner Rule #98: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
     /* 3814 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
     /* 3817 */ // Label 263: @3817
     /* 3817 */ GIM_Reject,
     /* 3818 */ // Label 66: @3818
     /* 3818 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(3829), // Rule ID 188 //
     /* 3823 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
     /* 3826 */   // Combiner Rule #98: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
     /* 3826 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
     /* 3829 */ // Label 264: @3829
     /* 3829 */ GIM_Reject,
     /* 3830 */ // Label 67: @3830
     /* 3830 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(3841), // Rule ID 189 //
     /* 3835 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
     /* 3838 */   // Combiner Rule #98: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
     /* 3838 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
     /* 3841 */ // Label 265: @3841
     /* 3841 */ GIM_Reject,
     /* 3842 */ // Label 68: @3842
     /* 3842 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(3853), // Rule ID 190 //
     /* 3847 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
     /* 3850 */   // Combiner Rule #98: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
     /* 3850 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
     /* 3853 */ // Label 266: @3853
     /* 3853 */ GIM_Reject,
     /* 3854 */ // Label 69: @3854
     /* 3854 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(3865), // Rule ID 191 //
     /* 3859 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
     /* 3862 */   // Combiner Rule #98: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
     /* 3862 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
     /* 3865 */ // Label 267: @3865
     /* 3865 */ GIM_Reject,
     /* 3866 */ // Label 70: @3866
     /* 3866 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(3877), // Rule ID 70 //
     /* 3871 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 3874 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
     /* 3874 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 3877 */ // Label 268: @3877
     /* 3877 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(3888), // Rule ID 129 //
     /* 3882 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
     /* 3885 */   // Combiner Rule #79: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
     /* 3885 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
     /* 3888 */ // Label 269: @3888
     /* 3888 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(3911), // Rule ID 99 //
     /* 3893 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
     /* 3896 */   // MIs[0] dst
     /* 3896 */   // No operand predicates
     /* 3896 */   // MIs[0] lhs
     /* 3896 */   // No operand predicates
     /* 3896 */   // MIs[0] Operand 2
     /* 3896 */   GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
     /* 3900 */   GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3905 */   // Combiner Rule #60: right_identity_zero @ [__right_identity_zero_match_0[7]]
     /* 3905 */   GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
     /* 3910 */   GIR_EraseRootFromParent_Done,
     /* 3911 */ // Label 270: @3911
     /* 3911 */ GIM_Reject,
     /* 3912 */ // Label 71: @3912
     /* 3912 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(3923), // Rule ID 83 //
     /* 3917 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 3920 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_SMIN'
     /* 3920 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 3923 */ // Label 271: @3923
     /* 3923 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(3934), // Rule ID 168 //
     /* 3928 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3931 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
     /* 3931 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3934 */ // Label 272: @3934
     /* 3934 */ GIM_Reject,
     /* 3935 */ // Label 72: @3935
     /* 3935 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(3946), // Rule ID 84 //
     /* 3940 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 3943 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_SMAX'
     /* 3943 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 3946 */ // Label 273: @3946
     /* 3946 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(3957), // Rule ID 169 //
     /* 3951 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3954 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
     /* 3954 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3957 */ // Label 274: @3957
     /* 3957 */ GIM_Reject,
     /* 3958 */ // Label 73: @3958
     /* 3958 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(3969), // Rule ID 85 //
     /* 3963 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 3966 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_UMIN'
     /* 3966 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 3969 */ // Label 275: @3969
     /* 3969 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(3980), // Rule ID 170 //
     /* 3974 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 3977 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
     /* 3977 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 3980 */ // Label 276: @3980
     /* 3980 */ GIM_Reject,
     /* 3981 */ // Label 74: @3981
     /* 3981 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(3992), // Rule ID 86 //
     /* 3986 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
     /* 3989 */   // Combiner Rule #57: constant_fold_binop; wip_match_opcode 'G_UMAX'
     /* 3989 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
     /* 3992 */ // Label 277: @3992
     /* 3992 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(4003), // Rule ID 171 //
     /* 3997 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
     /* 4000 */   // Combiner Rule #97: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
     /* 4000 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
     /* 4003 */ // Label 278: @4003
     /* 4003 */ GIM_Reject,
     /* 4004 */ // Label 75: @4004
     /* 4004 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(4015), // Rule ID 143 //
     /* 4009 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
     /* 4012 */   // Combiner Rule #87: unary_undef_to_zero; wip_match_opcode 'G_ABS'
     /* 4012 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
     /* 4015 */ // Label 279: @4015
     /* 4015 */ GIM_Reject,
     /* 4016 */ // Label 76: @4016
     /* 4016 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(4027), // Rule ID 158 //
     /* 4021 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
     /* 4024 */   // Combiner Rule #93: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
     /* 4024 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
     /* 4027 */ // Label 280: @4027
     /* 4027 */ GIM_Reject,
     /* 4028 */ // Label 77: @4028
     /* 4028 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(4039), // Rule ID 37 //
     /* 4033 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
     /* 4036 */   // Combiner Rule #30: extractvecelt_pairwise_add; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
     /* 4036 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
     /* 4039 */ // Label 281: @4039
     /* 4039 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(4050), // Rule ID 159 //
     /* 4044 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
     /* 4047 */   // Combiner Rule #93: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
     /* 4047 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
     /* 4050 */ // Label 282: @4050
     /* 4050 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(4061), // Rule ID 192 //
     /* 4055 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
     /* 4058 */   // Combiner Rule #99: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
     /* 4058 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
     /* 4061 */ // Label 283: @4061
     /* 4061 */ GIM_Reject,
     /* 4062 */ // Label 78: @4062
     /* 4062 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(4073), // Rule ID 154 //
     /* 4067 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
     /* 4070 */   // Combiner Rule #90: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
     /* 4070 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
     /* 4073 */ // Label 284: @4073
     /* 4073 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(4084), // Rule ID 156 //
     /* 4078 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
     /* 4081 */   // Combiner Rule #91: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
     /* 4081 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
     /* 4084 */ // Label 285: @4084
     /* 4084 */ GIM_Reject,
     /* 4085 */ // Label 79: @4085
     /* 4085 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(4106), // Rule ID 14 //
     /* 4090 */   GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
     /* 4093 */   // MIs[0] dst
     /* 4093 */   // No operand predicates
     /* 4093 */   // MIs[0] src0
     /* 4093 */   GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 4097 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
     /* 4101 */   // MIs[1] cst
     /* 4101 */   // No operand predicates
     /* 4101 */   GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 4103 */   // Combiner Rule #14: constant_fold_fsqrt
     /* 4103 */   GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
     /* 4106 */ // Label 286: @4106
     /* 4106 */ GIM_Reject,
     /* 4107 */ // Label 80: @4107
     /* 4107 */ GIM_Reject,
     /* 4108 */ }; // Size: 4108 bytes
  return MatchTable0;
}
#undef GIMT_Encode2
#undef GIMT_Encode4
#undef GIMT_Encode8

#endif // ifdef GET_GICOMBINER_IMPL

#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
AvailableFunctionFeatures()
#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
, State(0),
ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS

