summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordstuttar <david.stuttard@amd.com>2020-07-08 11:02:47 +0100
committerdstuttar <david.stuttard@amd.com>2020-07-10 11:57:20 +0100
commit69a89b54c62696d45731b48c26686cc4f9d652c6 (patch)
tree15696444e1ea2d0efd4c41fde80cac3fafa179cb
parentf78e6a3095ca82d7621def46b2531b922a56e8f9 (diff)
downloadllvm-69a89b54c62696d45731b48c26686cc4f9d652c6.tar.gz
[NFC] Change isFPPredicate comparison to ignore lower bound
Summary: Since changing the Predicate to be an unsigned enum, the lower bound check for isFPPredicate no longer needs to check the lower bound, since it will always evaluate to true. Also fixed a similar issue in SIISelLowering.cpp by removing the need for comparing to FIRST and LAST predicates Added an assert to the isFPPredicate comparison to flag if the FIRST_FCMP_PREDICATE is ever changed to anything other than 0, in which case the logic will break. Without this change warnings are generated in VS. Change-Id: I358f0daf28c0628c7bda8ad4cab4e1757b761bab Subscribers: arsenm, jvesely, nhaehnle, hiraditya, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D83540
-rw-r--r--llvm/include/llvm/IR/InstrTypes.h4
-rw-r--r--llvm/lib/Target/AMDGPU/SIISelLowering.cpp7
2 files changed, 5 insertions, 6 deletions
diff --git a/llvm/include/llvm/IR/InstrTypes.h b/llvm/include/llvm/IR/InstrTypes.h
index 8408c8772b22..07af00ec9240 100644
--- a/llvm/include/llvm/IR/InstrTypes.h
+++ b/llvm/include/llvm/IR/InstrTypes.h
@@ -805,7 +805,9 @@ public:
void setPredicate(Predicate P) { setSubclassData<PredicateField>(P); }
static bool isFPPredicate(Predicate P) {
- return P >= FIRST_FCMP_PREDICATE && P <= LAST_FCMP_PREDICATE;
+ assert(FIRST_FCMP_PREDICATE == 0 &&
+ "FIRST_FCMP_PREDICATE is required to be 0");
+ return P <= LAST_FCMP_PREDICATE;
}
static bool isIntPredicate(Predicate P) {
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
index 79204180540f..d035aa8f72bd 100644
--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -4567,8 +4567,7 @@ static SDValue lowerICMPIntrinsic(const SITargetLowering &TLI,
EVT VT = N->getValueType(0);
const auto *CD = cast<ConstantSDNode>(N->getOperand(3));
unsigned CondCode = CD->getZExtValue();
- if (CondCode < ICmpInst::Predicate::FIRST_ICMP_PREDICATE ||
- CondCode > ICmpInst::Predicate::LAST_ICMP_PREDICATE)
+ if (!ICmpInst::isIntPredicate(static_cast<ICmpInst::Predicate>(CondCode)))
return DAG.getUNDEF(VT);
ICmpInst::Predicate IcInput = static_cast<ICmpInst::Predicate>(CondCode);
@@ -4604,10 +4603,8 @@ static SDValue lowerFCMPIntrinsic(const SITargetLowering &TLI,
const auto *CD = cast<ConstantSDNode>(N->getOperand(3));
unsigned CondCode = CD->getZExtValue();
- if (CondCode < FCmpInst::Predicate::FIRST_FCMP_PREDICATE ||
- CondCode > FCmpInst::Predicate::LAST_FCMP_PREDICATE) {
+ if (!FCmpInst::isFPPredicate(static_cast<FCmpInst::Predicate>(CondCode)))
return DAG.getUNDEF(VT);
- }
SDValue Src0 = N->getOperand(1);
SDValue Src1 = N->getOperand(2);