[llvm] [SelectionDAG] Handle `fneg`/`fabs`/`fcopysign` in `SimplifyDemandedBits` (PR #139239)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Fri May 9 03:29:21 PDT 2025
================
@@ -2958,6 +2958,77 @@ bool TargetLowering::SimplifyDemandedBits(
}
break;
}
+ case ISD::FABS: {
+ SDValue Op0 = Op.getOperand(0);
+ APInt SignMask = APInt::getSignMask(BitWidth);
+
+ if (!DemandedBits.intersects(SignMask))
+ return TLO.CombineTo(Op, Op0);
+
+ if (SimplifyDemandedBits(Op0, ~SignMask & DemandedBits, DemandedElts, Known,
+ TLO, Depth + 1))
+ return true;
+
+ if (Known.isNonNegative())
+ return TLO.CombineTo(Op, Op0);
+ if (Known.isNegative())
+ return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::FNEG, dl, VT, Op0));
----------------
arsenm wrote:
Losing flags?
https://github.com/llvm/llvm-project/pull/139239
More information about the llvm-commits
mailing list