Skip to content

Commit

Permalink
[NFC] Change isFPPredicate comparison to ignore lower bound
Browse files Browse the repository at this point in the history
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
  • Loading branch information
dstutt committed Jul 10, 2020
1 parent f78e6a3 commit 69a89b5
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 6 deletions.
4 changes: 3 additions & 1 deletion llvm/include/llvm/IR/InstrTypes.h
Expand Up @@ -805,7 +805,9 @@ class CmpInst : public Instruction {
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) {
Expand Down
7 changes: 2 additions & 5 deletions llvm/lib/Target/AMDGPU/SIISelLowering.cpp
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 69a89b5

Please sign in to comment.