[llvm] [SelectionDAG] Use `KnownFPClass` to infer `isKnownNeverZeroFloat` (PR #190621)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 6 08:47:30 PDT 2026


================
@@ -6317,13 +6317,16 @@ bool SelectionDAG::isKnownNeverNaN(SDValue Op, const APInt &DemandedElts,
   return Known.isKnownNever(NanMask);
 }
 
-bool SelectionDAG::isKnownNeverZeroFloat(SDValue Op) const {
-  assert(Op.getValueType().isFloatingPoint() &&
-         "Floating point type expected");
+bool SelectionDAG::isKnownNeverZeroFloat(SDValue Op, unsigned Depth) const {
+  APInt DemandedElts = getDemandAllEltsMask(Op);
+  return isKnownNeverZeroFloat(Op, DemandedElts, Depth);
+}
 
-  // If the value is a constant, we can obviously see if it is a zero or not.
-  return ISD::matchUnaryFpPredicate(
-      Op, [](ConstantFPSDNode *C) { return !C->isZero(); });
+bool SelectionDAG::isKnownNeverZeroFloat(SDValue Op, const APInt &DemandedElts,
+                                         unsigned Depth) const {
+  assert(!DemandedElts.isZero() && "No demanded elements");
+  KnownFPClass Known = computeKnownFPClass(Op, DemandedElts, fcZero, Depth);
+  return Known.isKnownNeverZero();
----------------
arsenm wrote:

isKnownNeverLogicalZero 

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


More information about the llvm-commits mailing list