[llvm-dev] question about llvm partial unrolling/runtime unrolling

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Thu Oct 15 21:35:56 PDT 2015


----- Original Message -----

> From: "Frances Tzeng via llvm-dev" <llvm-dev at lists.llvm.org>
> To: llvm-dev at lists.llvm.org
> Sent: Monday, October 12, 2015 6:13:25 PM
> Subject: [llvm-dev] question about llvm partial unrolling/runtime
> unrolling

> Hi,

> I am trying to do loop unrolling with loops that don't have constant
> loop counter. It is highly appreciated if anyone can help me on
> this.

> What I want to do is to turn

> loop (n)
> {
> <loop body>
> }

> into

> loop (n/4)
> {
> <loop body>
> <loop body>
> <loop body>
> <loop body>
> }

> loop (n%4)
> {
> <loop body>
> }

> I set allowPartial and Runtime to both 1 (
> llvm::createLoopUnrollPass(Threshold, count, 1, 1) )
> Also overload the UnrollingPreferences structure to gives values to
> all the Partial* members, but the loop still doesn't unroll.

> The unrolling process hits this code in LoopUnrollRuntime.cpp

> // Only unroll loops with a computable trip count and the trip count
> needs
> // to be an int value (allowing a pointer type is a TODO item)
> const SCEV *BECountSC = SE->getBackedgeTakenCount(L);
> if (isa<SCEVCouldNotCompute>(BECountSC) ||
> !BECountSC->getType()->isIntegerTy())
> return false;

> BECountSC=0xcccccccc and returns false here.

> Based on the comments it looks like I still need a constant loop
> counter. Is there a way to unroll with non-constant loop counter as
> in the example above?
Computable is not the same as constant. With runtime loop unrolling enabled, you can certainly unroll a loop with a runtime trip count. If you run with -debug=loop-unroll, what does it say regarding your loop? 

-Hal 

> Thanks,
> Frances
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-- 

Hal Finkel 
Assistant Computational Scientist 
Leadership Computing Facility 
Argonne National Laboratory 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151015/965744d4/attachment.html>


More information about the llvm-dev mailing list