[llvm-branch-commits] [llvm] InstCombine: Implement SimplifyDemandedFPClass for frexp (PR #176122)

Matt Arsenault via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Jan 15 07:47:03 PST 2026


================
@@ -2941,6 +2941,55 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(Instruction *I,
     Known = KnownLHS | KnownRHS;
     break;
   }
+  case Instruction::ExtractValue: {
+    ExtractValueInst *Extract = cast<ExtractValueInst>(I);
+    ArrayRef<unsigned> Indices = Extract->getIndices();
+    Value *Src = Extract->getAggregateOperand();
+    if (isa<StructType>(Src->getType()) && Indices.size() == 1 &&
+        Indices[0] == 0) {
+      if (auto *II = dyn_cast<IntrinsicInst>(Src)) {
+        switch (II->getIntrinsicID()) {
+        case Intrinsic::frexp: {
+          FPClassTest SrcDemandedMask = fcNone;
+          if (DemandedMask & fcNan)
+            SrcDemandedMask |= fcNan;
+          if (DemandedMask & fcNegFinite)
+            SrcDemandedMask |= fcNegFinite;
+          if (DemandedMask & fcPosFinite)
+            SrcDemandedMask |= fcPosFinite;
+          if (DemandedMask & fcPosInf)
+            SrcDemandedMask |= fcPosInf;
+          if (DemandedMask & fcNegInf)
+            SrcDemandedMask |= fcNegInf;
+
+          KnownFPClass KnownSrc;
+          if (SimplifyDemandedFPClass(II, 0, SrcDemandedMask, KnownSrc,
----------------
arsenm wrote:

You mean like https://github.com/llvm/llvm-project/blob/872574dd6e897c6dda29324f4f9cd67167ede07d/llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-frexp.ll#L212, or with multiple uses of the extracted mant 

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


More information about the llvm-branch-commits mailing list