[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