SLP/Loop vectorizer pass ordering

Tobias Grosser tobias at grosser.es
Fri Jul 25 08:48:02 PDT 2014


On 25/07/2014 17:41, James Molloy wrote:
> Hi Nadav, Arnold,
>
>
>
> I've come across an interesting optimization problem in one of the SPEC
> benchmarks. There is a loop that can be optimized by both the SLP vectorizer
> and the loop vectorizer (when I patch the loop vectorizer to deal with fsub
> reductions).
>
>
>
> The SLP vectorizer actually makes the performance worse - I think this is
> due to a lack of loop unrolling afterwards. The Loop vectorizer can improve
> the performance.
>
>
>
> However, the loop vectorizer runs after the SLP vectorizer, so it never gets
> a chance. I'd have thought the ideal order would be Loop Vectorizer -> SLP
> vectorizer -> BB vectorizer, given that the loop vectorizer if it can run
> will probably give greater speedup than SLP.
>
>
>
> The current sequence is SLP vectorizer -> BB vectorizer -> Loop vectorizer.

Even though I was not directly addressed. I still reply.

The proposed new order is what I think makes most sense. I wonder what 
was the reason to go for the current order. Nadav, Arnold did you choose 
this order?

Also, James, did you happen to run some performance test with the new order?

Cheers,
Tobias



More information about the llvm-commits mailing list