[LLVMdev] Disable loop unroll pass
ivanllopard at gmail.com
Wed Nov 21 14:19:48 PST 2012
On 21/11/2012 22:38, Hal Finkel wrote:
> ----- Original Message -----
>> From: "Ivan Llopard" <ivanllopard at gmail.com>
>> To: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>
>> Sent: Wednesday, November 21, 2012 10:31:07 AM
>> Subject: [LLVMdev] Disable loop unroll pass
>> We've a target which has hardware support for zero-overhead loops.
>> Currently, we cannot detect them because the loop unroller is
>> them before entering into the codegen. Looking at its implementation,
>> seems that it checks if it is profitable to unroll it or not based on
>> certain parameters.
>> Given that zero cost loops building is based more or less on the same
>> constraints that loop unroll pass, I wonder if it is reasonable to
>> yet another target hook to prevent loop unrolling (something like
>> hasZeroOverheadLooping or hasZeroCostLooping) for targets that
>> zero-cost looping.
> Please feel free to extend the ScalarTargetTransformInfo interface (in include/llvm/TargetTransformInfo.h) to provide target-customizable parameters to the loop unroller. This is on my TODO list, but if you'd like to work on this, that would be great.
Sure! I'll propose a patch ASAP.
> Are there any cases in which loop unrolling is beneficial on your target?
I'd say that it's always beneficial to emit hardware loops whenever
possible, either for static or dynamic trip counts, whether we look for
smaller or faster code.
>> Does Hexagon provides the same loop support? How have you addressed
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
More information about the llvm-dev