[PATCH] D15559: [LoopUnrollRuntime] Do unroll when IV's setp is one or minus one
Michael Zolotukhin via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 21 16:12:18 PST 2015
mzolotukhin added a subscriber: mzolotukhin.
================
Comment at: lib/Transforms/Utils/LoopUnrollRuntime.cpp:325-331
@@ +324,9 @@
+ SE->getSCEV(ExitCondICmp->getOperand(0)), L))) {
+ if (AR->isAffine() && AR->getOperand(1)->getSCEVType() == scConstant) {
+ if (const SCEVConstant *SCConst =
+ cast<SCEVConstant>(AR->getOperand(1))) {
+ if (SCConst->getValue()->isOne() ||
+ SCConst->getValue()->isMinusOne())
+ AllowExpensiveTripCount = true;
+ }
+ }
----------------
There is a method `getStepRecurrence` in `AR`, which you might want to use here.
Also, I don't think that changing `AllowExpensiveTripCount` here is a good way to achieve what you try to achieve. Why (and where) is this tripcount considered expensive? To me it looks like we should rather fix those places to recognize cases like this as 'inexpensive'.
http://reviews.llvm.org/D15559
More information about the llvm-commits
mailing list