[LLVMdev] LLVM Loop Vectorizer (Nadav Rotem)

Nadav Rotem nrotem at apple.com
Sun Oct 7 21:02:55 PDT 2012

Hi Javed, 

Developing a good loop vectorizer takes several years.  The work on the GCC vectorizer began in 2004, and they spent several years improving and optimizing their vectorizer.  They started by vectorizing simple loops, and added features that they needed in order to vectorize additional loops that were important for them.  They started with a single-block loops, and later they added "if-conversion", support for reductions and induction variables, etc.  This approach was effective because it allowed them to stay focused. 

It is important to stay focused on today's problems, but at the same time provide the right abstraction even for problems that we decide not to solve today. We've started discussing the details of exposing target information to IR-level passes because it will allow the loop vectorizer, as well as other optimizations, to do a better job.  Once we finish the design of the "Target" interface, we need to start working on a general loop-vectorizer design.  I think that any design that we choose must take Polly into consideration.  But I don't think that we need to start with loops that require polyhedral optimizer. I think that we should start with the examples from the gcc vectorizer page[1].  


[1] - http://gcc.gnu.org/projects/tree-ssa/vectorization.html

First, we need to check and see if Polly is the solution to the problems that we have.   

On Oct 7, 2012, at 8:50 AM, Javed Absar <javed.absar at gmail.com> wrote:

> Hi Nadav (and others who are related to this issue) - 
> I saw some discussions on loop vectorizer that you are planning to write. Do you foresee using Polyhedral Framework (polly project) in some way in that. 
> Thanks 
> J. 

More information about the llvm-dev mailing list