From 7bc666784566187c440a213a2cd2bf98658251f5 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Tue, 1 Mar 2022 09:53:26 -0800 Subject: [PATCH] [Analysis] Simplify the interface to llvm::getICmpCode. NFC Instead of passing an InstCmpInt * and a bool just pass the predicate from the caller. I'm considering moving the similar FCmp functions from InstCombine over here and this makes the interface consistent with what is used for FCmp. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D120609 --- llvm/include/llvm/Analysis/CmpInstAnalysis.h | 3 +-- llvm/lib/Analysis/CmpInstAnalysis.cpp | 4 +--- llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp | 9 ++++++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/llvm/include/llvm/Analysis/CmpInstAnalysis.h b/llvm/include/llvm/Analysis/CmpInstAnalysis.h index 2bb492d..a449353 100644 --- a/llvm/include/llvm/Analysis/CmpInstAnalysis.h +++ b/llvm/include/llvm/Analysis/CmpInstAnalysis.h @@ -17,7 +17,6 @@ #include "llvm/IR/InstrTypes.h" namespace llvm { - class ICmpInst; class Type; class Value; @@ -44,7 +43,7 @@ namespace llvm { /// 110 6 A <= B /// 111 7 Always true /// - unsigned getICmpCode(const ICmpInst *ICI, bool InvertPred = false); + unsigned getICmpCode(CmpInst::Predicate Pred); /// This is the complement of getICmpCode. It turns a predicate code into /// either a constant true or false or the predicate for a new ICmp. diff --git a/llvm/lib/Analysis/CmpInstAnalysis.cpp b/llvm/lib/Analysis/CmpInstAnalysis.cpp index 5b95198..8667daa 100644 --- a/llvm/lib/Analysis/CmpInstAnalysis.cpp +++ b/llvm/lib/Analysis/CmpInstAnalysis.cpp @@ -18,9 +18,7 @@ using namespace llvm; -unsigned llvm::getICmpCode(const ICmpInst *ICI, bool InvertPred) { - ICmpInst::Predicate Pred = InvertPred ? ICI->getInversePredicate() - : ICI->getPredicate(); +unsigned llvm::getICmpCode(CmpInst::Predicate Pred) { switch (Pred) { // False -> 0 case ICmpInst::ICMP_UGT: return 1; // 001 diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp index 95825d0..91ef965 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp @@ -1251,7 +1251,8 @@ Value *InstCombinerImpl::foldAndOfICmps(ICmpInst *LHS, ICmpInst *RHS, if (LHS->getOperand(0) == RHS->getOperand(0) && LHS->getOperand(1) == RHS->getOperand(1)) { Value *Op0 = LHS->getOperand(0), *Op1 = LHS->getOperand(1); - unsigned Code = getICmpCode(LHS) & getICmpCode(RHS); + unsigned Code = + getICmpCode(LHS->getPredicate()) & getICmpCode(RHS->getPredicate()); bool IsSigned = LHS->isSigned() || RHS->isSigned(); return getNewICmpValue(Code, IsSigned, Op0, Op1, Builder); } @@ -2570,7 +2571,8 @@ Value *InstCombinerImpl::foldOrOfICmps(ICmpInst *LHS, ICmpInst *RHS, if (LHS0 == RHS1 && LHS1 == RHS0) LHS->swapOperands(); if (LHS0 == RHS0 && LHS1 == RHS1) { - unsigned Code = getICmpCode(LHS) | getICmpCode(RHS); + unsigned Code = + getICmpCode(LHS->getPredicate()) | getICmpCode(RHS->getPredicate()); bool IsSigned = LHS->isSigned() || RHS->isSigned(); return getNewICmpValue(Code, IsSigned, LHS0, LHS1, Builder); } @@ -3094,7 +3096,8 @@ Value *InstCombinerImpl::foldXorOfICmps(ICmpInst *LHS, ICmpInst *RHS, LHS->getOperand(1) == RHS->getOperand(1)) { // (icmp1 A, B) ^ (icmp2 A, B) --> (icmp3 A, B) Value *Op0 = LHS->getOperand(0), *Op1 = LHS->getOperand(1); - unsigned Code = getICmpCode(LHS) ^ getICmpCode(RHS); + unsigned Code = + getICmpCode(LHS->getPredicate()) ^ getICmpCode(RHS->getPredicate()); bool IsSigned = LHS->isSigned() || RHS->isSigned(); return getNewICmpValue(Code, IsSigned, Op0, Op1, Builder); } -- 2.7.4