[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