================
@@ -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

Reply via email to