From 3fc601b6416defd646142293797778c5d6652f14 Mon Sep 17 00:00:00 2001 From: Max Kazantsev Date: Thu, 29 Oct 2020 18:09:31 +0700 Subject: [PATCH] [NFC][SCEV] Use generic predicate checkers to simplify code --- llvm/lib/Analysis/ScalarEvolution.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index 2911b2e..7a8d664 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -9274,13 +9274,15 @@ ScalarEvolution::getMonotonicPredicateTypeImpl(const SCEVAddRecExpr *LHS, if (!ICmpInst::isRelational(Pred)) return None; + bool IsGreater = ICmpInst::isGE(Pred) || ICmpInst::isGT(Pred); + assert((IsGreater || ICmpInst::isLE(Pred) || ICmpInst::isLT(Pred)) && + "Should be greater or less!"); + // Check that AR does not wrap. if (ICmpInst::isUnsigned(Pred)) { if (!LHS->hasNoUnsignedWrap()) return None; - return Pred == ICmpInst::ICMP_UGT || Pred == ICmpInst::ICMP_UGE - ? MonotonicallyIncreasing - : MonotonicallyDecreasing; + return IsGreater ? MonotonicallyIncreasing : MonotonicallyDecreasing; } else { assert(ICmpInst::isSigned(Pred) && "Relational predicate is either signed or unsigned!"); @@ -9289,17 +9291,11 @@ ScalarEvolution::getMonotonicPredicateTypeImpl(const SCEVAddRecExpr *LHS, const SCEV *Step = LHS->getStepRecurrence(*this); - if (isKnownNonNegative(Step)) { - return Pred == ICmpInst::ICMP_SGT || Pred == ICmpInst::ICMP_SGE - ? MonotonicallyIncreasing - : MonotonicallyDecreasing; - } + if (isKnownNonNegative(Step)) + return IsGreater ? MonotonicallyIncreasing : MonotonicallyDecreasing; - if (isKnownNonPositive(Step)) { - return Pred == ICmpInst::ICMP_SLT || Pred == ICmpInst::ICMP_SLE - ? MonotonicallyIncreasing - : MonotonicallyDecreasing; - } + if (isKnownNonPositive(Step)) + return !IsGreater ? MonotonicallyIncreasing : MonotonicallyDecreasing; return None; } -- 2.7.4