Advertisement
Guest User

AMDGPUGenPreLegalizerGICombiner.inc

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