Hi all, This is a respin of https://gcc.gnu.org/ml/gcc-patches/2016-06/msg00951.html. This just moves the necessary declarations to expmed.h so that a file that includes expmed.h can access the mult synthesis algorithms.
Bootstrapped and tested on x86_64, aarch64, arm. Ok for trunk? Thanks, Kyrill 2016-06-15 Kyrylo Tkachov <kyrylo.tkac...@arm.com> * expmed.c (mult_variant, choose_mult_variant): Move declaration to... * expmed.h: ... Here.
diff --git a/gcc/expmed.h b/gcc/expmed.h index 1a32e9f1b664f250c5092022eb965237ed0342fc..4c2d94bf73114c5cf5014820a84b318ccee336e9 100644 --- a/gcc/expmed.h +++ b/gcc/expmed.h @@ -35,6 +35,15 @@ enum alg_code { alg_impossible }; +/* Indicates the type of fixup needed after a constant multiplication. + BASIC_VARIANT means no fixup is needed, NEGATE_VARIANT means that + the result should be negated, and ADD_VARIANT means that the + multiplicand should be added to the result. */ +enum mult_variant {basic_variant, negate_variant, add_variant}; + +bool choose_mult_variant (machine_mode, HOST_WIDE_INT, + struct algorithm *, enum mult_variant *, int); + /* This structure holds the "cost" of a multiply sequence. The "cost" field holds the total rtx_cost of every operator in the synthetic multiplication sequence, hence cost(a op b) is defined diff --git a/gcc/expmed.c b/gcc/expmed.c index 6645a535b3eef9624e6f3ce61d2fcf864d1cf574..bd29e42aae03742a856d0a4f1232a47ac254f8d6 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -2482,16 +2482,8 @@ expand_variable_shift (enum tree_code code, machine_mode mode, rtx shifted, } -/* Indicates the type of fixup needed after a constant multiplication. - BASIC_VARIANT means no fixup is needed, NEGATE_VARIANT means that - the result should be negated, and ADD_VARIANT means that the - multiplicand should be added to the result. */ -enum mult_variant {basic_variant, negate_variant, add_variant}; - static void synth_mult (struct algorithm *, unsigned HOST_WIDE_INT, const struct mult_cost *, machine_mode mode); -static bool choose_mult_variant (machine_mode, HOST_WIDE_INT, - struct algorithm *, enum mult_variant *, int); static rtx expand_mult_const (machine_mode, rtx, HOST_WIDE_INT, rtx, const struct algorithm *, enum mult_variant); static unsigned HOST_WIDE_INT invert_mod2n (unsigned HOST_WIDE_INT, int); @@ -2981,7 +2973,7 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t, Return true if the cheapest of these cost less than MULT_COST, describing the algorithm in *ALG and final fixup in *VARIANT. */ -static bool +bool choose_mult_variant (machine_mode mode, HOST_WIDE_INT val, struct algorithm *alg, enum mult_variant *variant, int mult_cost)