[LLVMdev] LLVM autovectorization support

Tobias Grosser tobias at grosser.es
Sat Jun 25 15:18:33 PDT 2011


On 06/24/2011 04:40 PM, Renato Golin wrote:
> On 24 June 2011 21:13, Xin Tong Utoronto<x.tong at utoronto.ca>  wrote:
>> I would like to know the status of the autovectorization support in LLVM.
>>   does LLVM have a loop dependence analysis, does LLVM have a infrastructure
>> for autovectorization ? etc.
>
> Not yet, but it's getting there...
>
> http://polly.grosser.es/

Yes. In Polly we are working on autovectorization using polyhedral 
techniques. Polly is currently founded as a research project (for the 
next three years), but we plan to provide solutions that can be applied 
on real world programs.

Feel free to have a look at our recent publications, the example on the 
website, our performance statistics and obviously the source code. Keep 
in mind that this is still a young research project. Even if we use 
established polyhedral techniques applying this to LLVM is not 100% 
straightforward. Especially the way we do vectorization is different to 
the one used in GCC or ICC as we currently use 100% polyhedral 
techniques, without any pattern matching. This is a nice and clean 
approach, but may lead to compile time performance problems, we may have 
problems to model specific situations and we obviously miss the years of 
development that went into the pattern/tricks ICC uses. On the positive 
side, the use of polyhedral techniques will allow us to use the 
same/similar techniques to offload calculations e.g. to vector 
accelerators (An interesting and active topic of research).

In terms of loop dependence analysis we use a powerful integer set 
library to get exact dependency analysis for loops with static control 
flow and affine linear memory accesses.

You may have a look at the matmul example which also includes the 
results of our dependency analysis:

http://polly.grosser.es/examples.html

If you have any questions feel free to ask. Please tag the questions on 
this mailinglist with [polly] or just use our own development mailing 
list. Also I am highly interested in ->critical<- feedback.

Cheers
Tobi



More information about the llvm-dev mailing list