From: Philip Reames Date: Tue, 8 Feb 2022 19:39:22 +0000 (-0800) Subject: [SCEV] Add interface for constructing generic SCEVComparePredicate [NFC} X-Git-Tag: upstream/15.0.7~17167 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=83f895d95291ede8ec901b13414bf6ba9c5692c1;p=platform%2Fupstream%2Fllvm.git [SCEV] Add interface for constructing generic SCEVComparePredicate [NFC} --- diff --git a/llvm/include/llvm/Analysis/ScalarEvolution.h b/llvm/include/llvm/Analysis/ScalarEvolution.h index 51b1551..7c1c7e3 100644 --- a/llvm/include/llvm/Analysis/ScalarEvolution.h +++ b/llvm/include/llvm/Analysis/ScalarEvolution.h @@ -1167,6 +1167,8 @@ public: } const SCEVPredicate *getEqualPredicate(const SCEV *LHS, const SCEV *RHS); + const SCEVPredicate *getComparePredicate(ICmpInst::Predicate Pred, + const SCEV *LHS, const SCEV *RHS); const SCEVPredicate * getWrapPredicate(const SCEVAddRecExpr *AR, diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index fca5614..620f3bf 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -13537,19 +13537,25 @@ void ScalarEvolutionWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const { const SCEVPredicate *ScalarEvolution::getEqualPredicate(const SCEV *LHS, const SCEV *RHS) { + return getComparePredicate(ICmpInst::ICMP_EQ, LHS, RHS); +} + +const SCEVPredicate * +ScalarEvolution::getComparePredicate(const ICmpInst::Predicate Pred, + const SCEV *LHS, const SCEV *RHS) { FoldingSetNodeID ID; assert(LHS->getType() == RHS->getType() && "Type mismatch between LHS and RHS"); // Unique this node based on the arguments ID.AddInteger(SCEVPredicate::P_Compare); - ID.AddInteger(ICmpInst::ICMP_EQ); + ID.AddInteger(Pred); ID.AddPointer(LHS); ID.AddPointer(RHS); void *IP = nullptr; if (const auto *S = UniquePreds.FindNodeOrInsertPos(ID, IP)) return S; SCEVComparePredicate *Eq = new (SCEVAllocator) - SCEVComparePredicate(ID.Intern(SCEVAllocator), ICmpInst::ICMP_EQ, LHS, RHS); + SCEVComparePredicate(ID.Intern(SCEVAllocator), Pred, LHS, RHS); UniquePreds.InsertNode(Eq, IP); return Eq; }