[PATCH] Adding the loop vectorizer to the LTO pipeline

Arnold Schwaighofer aschwaighofer at apple.com
Fri Feb 21 14:49:19 PST 2014


On Feb 21, 2014, at 2:09 PM, Renato Golin <renato.golin at linaro.org> wrote:

> 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?


As far as I am aware of there is no way to pass llvm flags through the linker.

> 
> 
>> 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.
> 

I see slightly different spilling decisions in the hot function L__align11 but no vectorization misbehavior.

> 
>> 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