[llvm] [Analysis] Adding convert_from_arbitrary_fp support in computeKnownFPClass. (PR #208585)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 10 09:12:47 PDT 2026


================
@@ -5709,6 +5709,36 @@ void computeKnownFPClass(const Value *V, const APInt &DemandedElts,
       Known.knownNot(fcNan | fcInf | fcNegative);
       break;
     }
+    case Intrinsic::convert_from_arbitrary_fp: {
+      auto *MD = cast<MetadataAsValue>(II->getArgOperand(1))->getMetadata();
+      StringRef FormatStr = cast<MDString>(MD)->getString();
+      const fltSemantics *SrcSemanticsPtr =
+          APFloat::getArbitraryFPSemantics(FormatStr);
+      if (!SrcSemanticsPtr)
+        break;
+
+      const fltSemantics SrcSemantics = *SrcSemanticsPtr;
+      const fltSemantics DestSemantics = II->getType()->getFltSemantics();
+
+      int SrcMaxExp = APFloat::semanticsMaxExponent(SrcSemantics);
+      int DestMaxExp = APFloat::semanticsMaxExponent(DestSemantics);
+
+      if (!APFloat::semanticsHasInf(SrcSemantics) && (SrcMaxExp <= DestMaxExp))
----------------
arsenm wrote:

Not sure why you need the exponent check here?

https://github.com/llvm/llvm-project/pull/208585


More information about the llvm-commits mailing list