diff options
author | Serguei Katkov <serguei.katkov@azul.com> | 2018-02-09 07:59:07 +0000 |
---|---|---|
committer | Serguei Katkov <serguei.katkov@azul.com> | 2018-02-09 07:59:07 +0000 |
commit | 3cb4c34a4e8034aa9270ffc5a93aa31b2b8160d9 (patch) | |
tree | 5dc497a4ee55db837dfff1ff9f32d9f541bab019 /llvm/lib/Transforms | |
parent | 3dc44a66afb6c857f75f8b1f83b2caf457c777c1 (diff) | |
download | bcm5719-llvm-3cb4c34a4e8034aa9270ffc5a93aa31b2b8160d9.tar.gz bcm5719-llvm-3cb4c34a4e8034aa9270ffc5a93aa31b2b8160d9.zip |
Rename and move utility function getLatchPredicateForGuard. NFC.
Rename getLatchPredicateForGuard to more common name
getFlippedStrictnessPredicate and move it to ICmpInst class.
llvm-svn: 324717
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Scalar/LoopPredication.cpp | 34 |
1 files changed, 4 insertions, 30 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopPredication.cpp b/llvm/lib/Transforms/Scalar/LoopPredication.cpp index 69b3d0b7d73..4d056d0db95 100644 --- a/llvm/lib/Transforms/Scalar/LoopPredication.cpp +++ b/llvm/lib/Transforms/Scalar/LoopPredication.cpp @@ -271,10 +271,6 @@ class LoopPredication { // so. Optional<LoopICmp> generateLoopLatchCheck(Type *RangeCheckType); - // Returns the latch predicate for guard. SGT -> SGE, UGT -> UGE, SGE -> SGT, - // UGE -> UGT, etc. - ICmpInst::Predicate getLatchPredicateForGuard(ICmpInst::Predicate Pred); - public: LoopPredication(ScalarEvolution *SE) : SE(SE){}; bool runOnLoop(Loop *L); @@ -400,30 +396,6 @@ bool LoopPredication::CanExpand(const SCEV* S) { return SE->isLoopInvariant(S, L) && isSafeToExpand(S, *SE); } -ICmpInst::Predicate -LoopPredication::getLatchPredicateForGuard(ICmpInst::Predicate Pred) { - switch (LatchCheck.Pred) { - case ICmpInst::ICMP_ULT: - return ICmpInst::ICMP_ULE; - case ICmpInst::ICMP_ULE: - return ICmpInst::ICMP_ULT; - case ICmpInst::ICMP_SLT: - return ICmpInst::ICMP_SLE; - case ICmpInst::ICMP_SLE: - return ICmpInst::ICMP_SLT; - case ICmpInst::ICMP_UGT: - return ICmpInst::ICMP_UGE; - case ICmpInst::ICMP_UGE: - return ICmpInst::ICMP_UGT; - case ICmpInst::ICMP_SGT: - return ICmpInst::ICMP_SGE; - case ICmpInst::ICMP_SGE: - return ICmpInst::ICMP_SGT; - default: - llvm_unreachable("Unsupported loop latch!"); - } -} - Optional<Value *> LoopPredication::widenICmpRangeCheckIncrementingLoop( LoopPredication::LoopICmp LatchCheck, LoopPredication::LoopICmp RangeCheck, SCEVExpander &Expander, IRBuilder<> &Builder) { @@ -448,7 +420,8 @@ Optional<Value *> LoopPredication::widenICmpRangeCheckIncrementingLoop( DEBUG(dbgs() << "Can't expand limit check!\n"); return None; } - auto LimitCheckPred = getLatchPredicateForGuard(LatchCheck.Pred); + auto LimitCheckPred = + ICmpInst::getFlippedStrictnessPredicate(LatchCheck.Pred); DEBUG(dbgs() << "LHS: " << *LatchLimit << "\n"); DEBUG(dbgs() << "RHS: " << *RHS << "\n"); @@ -489,7 +462,8 @@ Optional<Value *> LoopPredication::widenICmpRangeCheckDecrementingLoop( // latchLimit <pred> 1. // See the header comment for reasoning of the checks. Instruction *InsertAt = Preheader->getTerminator(); - auto LimitCheckPred = getLatchPredicateForGuard(LatchCheck.Pred); + auto LimitCheckPred = + ICmpInst::getFlippedStrictnessPredicate(LatchCheck.Pred); auto *FirstIterationCheck = expandCheck(Expander, Builder, ICmpInst::ICMP_ULT, GuardStart, GuardLimit, InsertAt); auto *LimitCheck = expandCheck(Expander, Builder, LimitCheckPred, LatchLimit, |