On Mon, 13 Jun 2016, Kyrill Tkachov wrote:

This patch allows the vectoriser to synthesize multiplications by an integer constant using the algorithms determined by choose_mult_variant from expmed.c. choose_mult_variant returns an algorithm structure that is a linked list of steps describing how to synthesize an integer multiplication by any constant using shifts, adds, subs, and negation.

The new function vect_synth_mult_by_constant that does all the hard work is very similar in structure to expand_mult_const from expmed.c but it operates on gimple SSA rather than RTL.

Note that we synthesize the multiplications if the target does not support a vector multiplication in the current vector mode we're processing. So, for aarch64 this effectively means V2DI (aarch64 has a vector multiply instruction for narrower inner modes).

I guess I should drop my patch https://gcc.gnu.org/ml/gcc-patches/2016-06/msg00881.html

This one seems much better.

--
Marc Glisse

Reply via email to