Request for compilers


For one of our research projects, we are planning to use LLVM. We need the following features:

  1. We need to aggressively fuse loops that have inter-loop dependencies.

  2. We need to identify intrinsic functions and induction variables.

  3. We need to detect few memory access patterns like copy, transpose-copy, stride-copy etc.

  4. Lastly, auto-vectorization and auto-openmp.

Is there a LLVM tool(s) that addresses these optimizations? The target language is C or C++. The target architectures are Intel Xeon with AVX and Xeon Phi .



Hi Ganesh,

Please have a look at:

These core parts of LLVM:

These research projects based on LLVM:

I’m not sure what you mean by “identify intrinsic functions”. If you really mean LLVM intrinsics, they are trivial to identify in LLVM (see for a high level introduction). If you mean something like idiom recognition, some optimizations of LLVM do this but typically just recognize the idioms as they optimize.

LLVM doesn’t include loop fusion, but Polly may help there. Likewise, Polly and AESOP are probably your best bets for things like memory access patterns and auto-parallelization.

All the best,


Thanks. I’ll take a look.

Regarding intrinsic functions, we want to do few trigonometric optimizations (i.e. exp(i*theta)). Not sure if that is covered in idiom recognition.