[llvm] c72992b - [DAG] visitABS - use FoldConstantArithmetic to attempt to constant fold
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 18 02:11:01 PDT 2024
Author: Simon Pilgrim
Date: 2024-10-18T10:10:43+01:00
New Revision: c72992bf897b22465b2c80343b1b4a5afd1508ef
URL: https://github.com/llvm/llvm-project/commit/c72992bf897b22465b2c80343b1b4a5afd1508ef
DIFF: https://github.com/llvm/llvm-project/commit/c72992bf897b22465b2c80343b1b4a5afd1508ef.diff
LOG: [DAG] visitABS - use FoldConstantArithmetic to attempt to constant fold
Don't rely on isConstantFPBuildVectorOrConstantFP followed by getNode() will constant fold - FoldConstantArithmetic will do all of this for us.
Cleanup for #112682
Added:
Modified:
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index 18439b87a83b7d..2f829be97b0713 100644
--- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -18433,10 +18433,11 @@ SDValue DAGCombiner::visitFMinMax(SDNode *N) {
SDValue DAGCombiner::visitFABS(SDNode *N) {
SDValue N0 = N->getOperand(0);
EVT VT = N->getValueType(0);
+ SDLoc DL(N);
// fold (fabs c1) -> fabs(c1)
- if (DAG.isConstantFPBuildVectorOrConstantFP(N0))
- return DAG.getNode(ISD::FABS, SDLoc(N), VT, N0);
+ if (SDValue C = DAG.FoldConstantArithmetic(ISD::FABS, DL, VT, {N0}))
+ return C;
// fold (fabs (fabs x)) -> (fabs x)
if (N0.getOpcode() == ISD::FABS)
@@ -18445,7 +18446,7 @@ SDValue DAGCombiner::visitFABS(SDNode *N) {
// fold (fabs (fneg x)) -> (fabs x)
// fold (fabs (fcopysign x, y)) -> (fabs x)
if (N0.getOpcode() == ISD::FNEG || N0.getOpcode() == ISD::FCOPYSIGN)
- return DAG.getNode(ISD::FABS, SDLoc(N), VT, N0.getOperand(0));
+ return DAG.getNode(ISD::FABS, DL, VT, N0.getOperand(0));
if (SDValue Cast = foldSignChangeInBitcast(N))
return Cast;
More information about the llvm-commits
mailing list