[PATCH] Adding the loop vectorizer to the LTO pipeline

Renato Golin renato.golin at linaro.org
Fri Feb 21 14:09:34 PST 2014


On 21 February 2014 21:50, Arnold Schwaighofer <aschwaighofer at apple.com> wrote:
> I would like to add the loop vectorizer to the LTO pipeline. During LTO more loops become countable (LICM moves the loop bound load out of the loop with the help of GlobalModRef) as a consequence we can vectorize more loops. Currently, we are not making use of this opportunity.

Hi Arnold,

It looks like a no-brainer to me, if there is a way to turn it off in
case it adds serious regressions. Is there a way to control LTO at
that level of granularity?


> Link time, as measured by timing the clang link step, increases by about 1% on average over the test-suite + externals.

That sound really good.


> Performance Regressions - Execution Time                Δ       Previous Current σ      Δ (B)   σ (B)
> MultiSource/Benchmarks/mafft/pairlocalalign             2.86%   22.2553 22.8911 0.0250  0.00%   0.0250

Have you investigated what generated this regression? It's not a small
one, half of the average gain on others, and could be a deterrent for
many people using LTO.


> Performance Improvements - Execution Time                       Δ       Previous Current σ      Δ (B)   σ (B)
> SingleSource/Benchmarks/Misc/matmul_f64_4x4                     -28.95% 0.2660  0.1890  0.0002  0.00%   0.0002
> MultiSource/Benchmarks/TSVC/Symbolics-flt/Symbolics-flt         -16.08% 1.9063  1.5998  0.0020  0.00%   0.0020

I don't know why the vectorizer can't work on these at compile time,
but they don't seem like a good example of user code, except for
specialised cases, which are not unimportant.


> MultiSource/Benchmarks/TSVC/ControlLoops-flt/ControlLoops-flt   -7.77%  2.5324  2.3356  0.0000  0.00%   0.0000
> MultiSource/Benchmarks/TSVC/ControlLoops-dbl/ControlLoops-dbl   -6.07%  3.2678  3.0695  0.0005  0.00%   0.0005
> MultiSource/Benchmarks/TSVC/Reductions-dbl/Reductions-dbl       -5.68%  3.5590  3.3570  0.0011  0.00%   0.0011
> External/SPEC/CINT2000/300_twolf/300_twolf                      -4.64%  3.5099  3.3471  0.0081  0.00%   0.0081
> SingleSource/Benchmarks/Misc/mandel                             -4.30%  0.4304  0.4119  0.0001  0.00%   0.0001
> MultiSource/Benchmarks/TSVC/Reductions-flt/Reductions-flt       -2.93%  6.8906  6.6885  0.0007  0.00%   0.0007

These are really good results!

cheers,
--renato




More information about the llvm-commits mailing list