[llvm-dev] Loop Unroll

Florian Hahn via llvm-dev llvm-dev at lists.llvm.org
Fri May 22 10:48:57 PDT 2020



> On May 22, 2020, at 09:55, legend xx via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> Hi, 
> 
> I'm interesting in find a pass for loop unrolling in LLVM compiler. I tried opt --loop-unroll --unroll-count=4, but it don't work well. 
> 
> What pass I can used and how? 
> 

-loop-unroll should be the right pass. There are multiple possible reasons why the loop is not unrolled and the pass has a bunch of options to enable/force unrolling for more cases (see https://github.com/llvm/llvm-project/blob/master/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp#L81). 

Passing `-debug` should give you a better idea why the loop is not unrolled. If you would share the IR, someone might be able to provide additional insight.

> I would also like to know if there is any way to mark the loops that I want them to be unroll

Yes it is possible to explicitly mark loops for unrolling using metadata in LLVM IR: https://llvm.org/docs/LangRef.html#llvm-loop-unroll. But the metadata might not help, if the loop contains code the unroller does not support.

Cheers,
Florian



More information about the llvm-dev mailing list