================
@@ -3155,19 +3186,41 @@ static Constant *ConstantFoldScalarCall1(StringRef Name,
}
static Constant *evaluateCompare(const APFloat &Op1, const APFloat &Op2,
- const ConstrainedFPIntrinsic *Call) {
+ const IntrinsicInst *Call) {
APFloat::opStatus St = APFloat::opOK;
- auto *FCmp = cast<ConstrainedFPCmpIntrinsic>(Call);
- FCmpInst::Predicate Cond = FCmp->getPredicate();
- if (FCmp->isSignaling()) {
+ Metadata *MD =
+ cast<MetadataAsValue>(Call->getArgOperand(2))->getMetadata();
+ FCmpInst::Predicate Cond =
+ StringSwitch<FCmpInst::Predicate>(cast<MDString>(MD)->getString())
+ .Case("oeq", FCmpInst::FCMP_OEQ)
+ .Case("ogt", FCmpInst::FCMP_OGT)
+ .Case("oge", FCmpInst::FCMP_OGE)
+ .Case("olt", FCmpInst::FCMP_OLT)
+ .Case("ole", FCmpInst::FCMP_OLE)
+ .Case("one", FCmpInst::FCMP_ONE)
+ .Case("ord", FCmpInst::FCMP_ORD)
+ .Case("uno", FCmpInst::FCMP_UNO)
+ .Case("ueq", FCmpInst::FCMP_UEQ)
+ .Case("ugt", FCmpInst::FCMP_UGT)
+ .Case("uge", FCmpInst::FCMP_UGE)
+ .Case("ult", FCmpInst::FCMP_ULT)
+ .Case("ule", FCmpInst::FCMP_ULE)
+ .Case("une", FCmpInst::FCMP_UNE)
+ .Default(FCmpInst::BAD_FCMP_PREDICATE);
+ bool IsSignaling = (Call->getIntrinsicID() == Intrinsic::fcmps);
----------------
nvjle wrote:
Nit: redundant parens.
https://github.com/llvm/llvm-project/pull/191613
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits