Author: Kewen Meng
Date: 2026-01-02T12:52:24-08:00
New Revision: c29b31170c86d2f35b7e949098085f666c83636d

URL: 
https://github.com/llvm/llvm-project/commit/c29b31170c86d2f35b7e949098085f666c83636d
DIFF: 
https://github.com/llvm/llvm-project/commit/c29b31170c86d2f35b7e949098085f666c83636d.diff

LOG: Revert "[InstCombine] Support DemandElts in SimplifyDemandedFPClass 
(#174176)"

This reverts commit 3c9d46ae338ea39f638342ac0e6f09d1cd8d10fa.

Added: 
    

Modified: 
    llvm/lib/Transforms/InstCombine/InstCombineInternal.h
    llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h 
b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
index 4f4023ce8616c..9bdd8cb71f7f3 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
+++ b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
@@ -211,15 +211,6 @@ class LLVM_LIBRARY_VISIBILITY InstCombinerImpl final
         Depth);
   }
 
-  KnownFPClass computeKnownFPClass(Value *Val, const APInt &DemandedElts,
-                                   FastMathFlags FMF,
-                                   FPClassTest Interested = fcAllFlags,
-                                   const Instruction *CtxI = nullptr,
-                                   unsigned Depth = 0) const {
-    return llvm::computeKnownFPClass(
-        Val, DemandedElts, FMF, Interested,
-        getSimplifyQuery().getWithInstruction(CtxI), Depth);
-  }
   KnownFPClass computeKnownFPClass(Value *Val,
                                    FPClassTest Interested = fcAllFlags,
                                    const Instruction *CtxI = nullptr,
@@ -228,14 +219,6 @@ class LLVM_LIBRARY_VISIBILITY InstCombinerImpl final
         Val, Interested, getSimplifyQuery().getWithInstruction(CtxI), Depth);
   }
 
-  KnownFPClass computeKnownFPClass(Value *Val, const APInt &DemandedElts,
-                                   FPClassTest Interested = fcAllFlags,
-                                   const Instruction *CtxI = nullptr,
-                                   unsigned Depth = 0) const {
-    return llvm::computeKnownFPClass(
-        Val, DemandedElts, Interested,
-        getSimplifyQuery().getWithInstruction(CtxI), Depth);
-  }
   /// Check if fmul \p MulVal, +0.0 will yield +0.0 (or signed zero is
   /// ignorable).
   bool fmulByZeroIsZero(Value *MulVal, FastMathFlags FMF,
@@ -631,15 +614,7 @@ class LLVM_LIBRARY_VISIBILITY InstCombinerImpl final
   Value *SimplifyDemandedUseFPClass(Value *V, FPClassTest DemandedMask,
                                     KnownFPClass &Known, Instruction *CxtI,
                                     unsigned Depth = 0);
-  Value *SimplifyDemandedUseFPClass(Value *V, const APInt &DemandedElts,
-                                    FPClassTest DemandedMask,
-                                    KnownFPClass &Known, Instruction *CxtI,
-                                    unsigned Depth = 0);
-  bool SimplifyDemandedFPClass(Instruction *I, unsigned Op,
-                               FPClassTest DemandedMask, KnownFPClass &Known,
-                               unsigned Depth = 0);
   bool SimplifyDemandedFPClass(Instruction *I, unsigned Op,
-                               const APInt &DemandedElts,
                                FPClassTest DemandedMask, KnownFPClass &Known,
                                unsigned Depth = 0);
 

diff  --git a/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp 
b/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
index a9c759cbdbcba..3ad1caa6baa63 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
@@ -2033,23 +2033,12 @@ Value 
*InstCombinerImpl::SimplifyDemandedUseFPClass(Value *V,
                                                     KnownFPClass &Known,
                                                     Instruction *CxtI,
                                                     unsigned Depth) {
-  auto *FVTy = dyn_cast<FixedVectorType>(V->getType());
-  APInt DemandedElts =
-      FVTy ? APInt::getAllOnes(FVTy->getNumElements()) : APInt(1, 1);
-
-  return SimplifyDemandedUseFPClass(V, DemandedElts, DemandedMask, Known, CxtI,
-                                    Depth);
-}
-
-Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
-    Value *V, const APInt &DemandedElts, FPClassTest DemandedMask,
-    KnownFPClass &Known, Instruction *CxtI, unsigned Depth) {
   assert(Depth <= MaxAnalysisRecursionDepth && "Limit Search Depth");
   Type *VTy = V->getType();
 
   assert(Known == KnownFPClass() && "expected uninitialized state");
 
-  if (DemandedMask == fcNone || !DemandedElts)
+  if (DemandedMask == fcNone)
     return isa<UndefValue>(V) ? nullptr : PoisonValue::get(VTy);
 
   if (Depth == MaxAnalysisRecursionDepth)
@@ -2058,7 +2047,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
   Instruction *I = dyn_cast<Instruction>(V);
   if (!I) {
     // Handle constants and arguments
-    Known = computeKnownFPClass(V, DemandedElts, fcAllFlags, CxtI, Depth + 1);
+    Known = computeKnownFPClass(V, fcAllFlags, CxtI, Depth + 1);
 
     FPClassTest ValidResults = DemandedMask & Known.KnownFPClasses;
     if (ValidResults == fcNone)
@@ -2091,8 +2080,8 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
 
   switch (I->getOpcode()) {
   case Instruction::FNeg: {
-    if (SimplifyDemandedFPClass(I, 0, DemandedElts, llvm::fneg(DemandedMask),
-                                Known, Depth + 1))
+    if (SimplifyDemandedFPClass(I, 0, llvm::fneg(DemandedMask), Known,
+                                Depth + 1))
       return I;
     Known.fneg();
     break;
@@ -2101,22 +2090,19 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
     CallInst *CI = cast<CallInst>(I);
     switch (CI->getIntrinsicID()) {
     case Intrinsic::fabs:
-      if (SimplifyDemandedFPClass(I, 0, DemandedElts,
-                                  llvm::inverse_fabs(DemandedMask), Known,
+      if (SimplifyDemandedFPClass(I, 0, llvm::inverse_fabs(DemandedMask), 
Known,
                                   Depth + 1))
         return I;
       Known.fabs();
       break;
     case Intrinsic::arithmetic_fence:
-      if (SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, Known,
-                                  Depth + 1))
+      if (SimplifyDemandedFPClass(I, 0, DemandedMask, Known, Depth + 1))
         return I;
       break;
     case Intrinsic::copysign: {
       // Flip on more potentially demanded classes
       const FPClassTest DemandedMaskAnySign = llvm::unknown_sign(DemandedMask);
-      if (SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMaskAnySign,
-                                  Known, Depth + 1))
+      if (SimplifyDemandedFPClass(I, 0, DemandedMaskAnySign, Known, Depth + 1))
         return I;
 
       if ((DemandedMask & fcNegative) == DemandedMask) {
@@ -2131,8 +2117,8 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
         return I;
       }
 
-      KnownFPClass KnownSign = computeKnownFPClass(
-          I->getOperand(1), DemandedElts, fcAllFlags, CxtI, Depth + 1);
+      KnownFPClass KnownSign =
+          computeKnownFPClass(I->getOperand(1), fcAllFlags, CxtI, Depth + 1);
       Known.copysign(KnownSign);
       break;
     }
@@ -2184,8 +2170,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
 
       // TODO: This could really make use of KnownFPClass of specific value
       // range, (i.e., close enough to 1)
-      if (SimplifyDemandedFPClass(I, 0, DemandedElts, SrcDemandedMask, 
KnownSrc,
-                                  Depth + 1))
+      if (SimplifyDemandedFPClass(I, 0, SrcDemandedMask, KnownSrc, Depth + 1))
         return I;
 
       /// Propagate nnan-ness to simplify edge case checks.
@@ -2268,8 +2253,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
         KnownFPClass KnownSrc;
 
         // Simplify upstream operations before trying to simplify this call.
-        if (SimplifyDemandedFPClass(I, 0, DemandedElts, SrcDemandedMask,
-                                    KnownSrc, Depth + 1))
+        if (SimplifyDemandedFPClass(I, 0, SrcDemandedMask, KnownSrc, Depth + 
1))
           return I;
 
         // Perform the canonicalization to see if this folded to a constant.
@@ -2295,8 +2279,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
       [[fallthrough]];
     }
     default:
-      Known =
-          computeKnownFPClass(I, DemandedElts, DemandedMask, CxtI, Depth + 1);
+      Known = computeKnownFPClass(I, DemandedMask, CxtI, Depth + 1);
       break;
     }
 
@@ -2304,10 +2287,8 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
   }
   case Instruction::Select: {
     KnownFPClass KnownLHS, KnownRHS;
-    if (SimplifyDemandedFPClass(I, 2, DemandedElts, DemandedMask, KnownRHS,
-                                Depth + 1) ||
-        SimplifyDemandedFPClass(I, 1, DemandedElts, DemandedMask, KnownLHS,
-                                Depth + 1))
+    if (SimplifyDemandedFPClass(I, 2, DemandedMask, KnownRHS, Depth + 1) ||
+        SimplifyDemandedFPClass(I, 1, DemandedMask, KnownLHS, Depth + 1))
       return I;
 
     if (KnownLHS.isKnownNever(DemandedMask))
@@ -2321,29 +2302,24 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
   }
   case Instruction::ExtractElement: {
     // TODO: Handle demanded element mask
-    if (SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, Known,
-                                Depth + 1))
+    if (SimplifyDemandedFPClass(I, 0, DemandedMask, Known, Depth + 1))
       return I;
     break;
   }
   case Instruction::InsertElement: {
     KnownFPClass KnownInserted, KnownVec;
-
-    if (SimplifyDemandedFPClass(I, 1, DemandedElts, DemandedMask, 
KnownInserted,
-                                Depth + 1) ||
-        SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, KnownVec,
-                                Depth + 1))
+    if (SimplifyDemandedFPClass(I, 1, DemandedMask, KnownInserted, Depth + 1) 
||
+        SimplifyDemandedFPClass(I, 0, DemandedMask, KnownVec, Depth + 1))
       return I;
+
     // TODO: Use demanded elements logic from computeKnownFPClass
     Known = KnownVec | KnownInserted;
     break;
   }
   case Instruction::ShuffleVector: {
     KnownFPClass KnownLHS, KnownRHS;
-    if (SimplifyDemandedFPClass(I, 1, DemandedElts, DemandedMask, KnownRHS,
-                                Depth + 1) ||
-        SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, KnownLHS,
-                                Depth + 1))
+    if (SimplifyDemandedFPClass(I, 1, DemandedMask, KnownRHS, Depth + 1) ||
+        SimplifyDemandedFPClass(I, 0, DemandedMask, KnownLHS, Depth + 1))
       return I;
 
     // TODO: This is overly conservative and should consider demanded elements,
@@ -2352,7 +2328,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
     break;
   }
   default:
-    Known = computeKnownFPClass(I, DemandedElts, DemandedMask, CxtI, Depth + 
1);
+    Known = computeKnownFPClass(I, DemandedMask, CxtI, Depth + 1);
     break;
   }
 
@@ -2360,13 +2336,12 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(
 }
 
 bool InstCombinerImpl::SimplifyDemandedFPClass(Instruction *I, unsigned OpNo,
-                                               const APInt &DemandedElts,
                                                FPClassTest DemandedMask,
                                                KnownFPClass &Known,
                                                unsigned Depth) {
   Use &U = I->getOperandUse(OpNo);
-  Value *NewVal = SimplifyDemandedUseFPClass(U.get(), DemandedElts,
-                                             DemandedMask, Known, I, Depth);
+  Value *NewVal =
+      SimplifyDemandedUseFPClass(U.get(), DemandedMask, Known, I, Depth);
   if (!NewVal)
     return false;
   if (Instruction *OpInst = dyn_cast<Instruction>(U))


        
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to