[LLVMdev] LLVM Loop Vectorizer

Nadav Rotem nrotem at apple.com
Thu Oct 4 23:14:47 PDT 2012


Hi, 

We are starting to work on an LLVM loop vectorizer. There's number of different projects that already vectorize LLVM IR. For example Hal's BB-Vectorizer, Intel's OpenCL Vectorizer, Polly, ISPC, AnySL, just to name a few. I think that it would be great if we could collaborate on the areas that are shared between the different projects. I think that refactoring LLVM in away that would expose target information to IR-level transformations would be a good way to start. Vectorizers, as well as other IR-level transformations, require target-specific information, such as the cost of different instruction or the availability of certain features. Currently, llvm-based vectorizers do not make use of this information, or just hard-code target information. A loop vectorizer would need target information. After we have some basic target information infrastructure in place we can start discussing the vectorizer itself.   

I think that the first step would be to expose Target Lowering Interface (TLI) to OPT's IR-level passes. Currently TLI is only available in LLC. I suggest that we merge LLC and OPT into a single tool that will drive both IR-level passes and the codegen. LLC and OPT can remain as wrappers around the new tool. Please let me know if you can think of a good name for the new tool. I was thinking that "llvm-cli" may be a good name (cli = command line interface). OPT and LLC are only used by LLVM developers, so the impact of this change on the user community would be small.

Thanks,
Nadav



More information about the llvm-dev mailing list