diff --git a/llvm/include/llvm/IR/InstrTypes.h b/llvm/include/llvm/IR/InstrTypes.h --- a/llvm/include/llvm/IR/InstrTypes.h +++ b/llvm/include/llvm/IR/InstrTypes.h @@ -805,7 +805,9 @@ void setPredicate(Predicate P) { setSubclassData(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 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -4567,8 +4567,7 @@ EVT VT = N->getValueType(0); const auto *CD = cast(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(CondCode))) return DAG.getUNDEF(VT); ICmpInst::Predicate IcInput = static_cast(CondCode); @@ -4604,10 +4603,8 @@ const auto *CD = cast(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(CondCode))) return DAG.getUNDEF(VT); - } SDValue Src0 = N->getOperand(1); SDValue Src1 = N->getOperand(2);