[llvm] 7fff252 - [PowerPC] Use SelectionDAG::makeEquivalentMemoryOrdering(). NFC (#124889)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 29 09:45:04 PST 2025
Author: Craig Topper
Date: 2025-01-29T09:45:00-08:00
New Revision: 7fff2527f8a3c3d201136a6051cb9127e45f67a7
URL: https://github.com/llvm/llvm-project/commit/7fff2527f8a3c3d201136a6051cb9127e45f67a7
DIFF: https://github.com/llvm/llvm-project/commit/7fff2527f8a3c3d201136a6051cb9127e45f67a7.diff
LOG: [PowerPC] Use SelectionDAG::makeEquivalentMemoryOrdering(). NFC (#124889)
Added:
Modified:
llvm/lib/Target/PowerPC/PPCISelLowering.cpp
llvm/lib/Target/PowerPC/PPCISelLowering.h
Removed:
################################################################################
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
index 4ca328bd9a9ba2..bdc1ac7c7da589 100644
--- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -8593,7 +8593,7 @@ SDValue PPCTargetLowering::LowerFP_TO_INT(SDValue Op, SelectionDAG &DAG,
// to insert our load, L, into the chain as a peer of O. To do this, we give L
// the same chain operand as O, we create a token factor from the chain results
// of O and L, and we replace all uses of O's chain result with that token
-// factor (see spliceIntoChain below for this last part).
+// factor (this last part is handled by makeEquivalentMemoryOrdering).
bool PPCTargetLowering::canReuseLoadAddress(SDValue Op, EVT MemVT,
ReuseLoadInfo &RLI,
SelectionDAG &DAG,
@@ -8648,27 +8648,6 @@ bool PPCTargetLowering::canReuseLoadAddress(SDValue Op, EVT MemVT,
return true;
}
-// Given the head of the old chain, ResChain, insert a token factor containing
-// it and NewResChain, and make users of ResChain now be users of that token
-// factor.
-// TODO: Remove and use DAG::makeEquivalentMemoryOrdering() instead.
-void PPCTargetLowering::spliceIntoChain(SDValue ResChain,
- SDValue NewResChain,
- SelectionDAG &DAG) const {
- if (!ResChain)
- return;
-
- SDLoc dl(NewResChain);
-
- SDValue TF = DAG.getNode(ISD::TokenFactor, dl, MVT::Other,
- NewResChain, DAG.getUNDEF(MVT::Other));
- assert(TF.getNode() != NewResChain.getNode() &&
- "A new TF really is required here");
-
- DAG.ReplaceAllUsesOfValueWith(ResChain, TF);
- DAG.UpdateNodeOperands(TF.getNode(), ResChain, NewResChain);
-}
-
/// Analyze profitability of direct move
/// prefer float load to int load plus direct move
/// when there is no integer use of int load
@@ -8930,7 +8909,8 @@ SDValue PPCTargetLowering::LowerINT_TO_FP(SDValue Op,
if (canReuseLoadAddress(SINT, MVT::i64, RLI, DAG)) {
Bits = DAG.getLoad(MVT::f64, dl, RLI.Chain, RLI.Ptr, RLI.MPI,
RLI.Alignment, RLI.MMOFlags(), RLI.AAInfo, RLI.Ranges);
- spliceIntoChain(RLI.ResChain, Bits.getValue(1), DAG);
+ if (RLI.ResChain)
+ DAG.makeEquivalentMemoryOrdering(RLI.ResChain, Bits.getValue(1));
} else if (Subtarget.hasLFIWAX() &&
canReuseLoadAddress(SINT, MVT::i32, RLI, DAG, ISD::SEXTLOAD)) {
MachineMemOperand *MMO =
@@ -8940,7 +8920,8 @@ SDValue PPCTargetLowering::LowerINT_TO_FP(SDValue Op,
Bits = DAG.getMemIntrinsicNode(PPCISD::LFIWAX, dl,
DAG.getVTList(MVT::f64, MVT::Other),
Ops, MVT::i32, MMO);
- spliceIntoChain(RLI.ResChain, Bits.getValue(1), DAG);
+ if (RLI.ResChain)
+ DAG.makeEquivalentMemoryOrdering(RLI.ResChain, Bits.getValue(1));
} else if (Subtarget.hasFPCVT() &&
canReuseLoadAddress(SINT, MVT::i32, RLI, DAG, ISD::ZEXTLOAD)) {
MachineMemOperand *MMO =
@@ -8950,7 +8931,8 @@ SDValue PPCTargetLowering::LowerINT_TO_FP(SDValue Op,
Bits = DAG.getMemIntrinsicNode(PPCISD::LFIWZX, dl,
DAG.getVTList(MVT::f64, MVT::Other),
Ops, MVT::i32, MMO);
- spliceIntoChain(RLI.ResChain, Bits.getValue(1), DAG);
+ if (RLI.ResChain)
+ DAG.makeEquivalentMemoryOrdering(RLI.ResChain, Bits.getValue(1));
} else if (((Subtarget.hasLFIWAX() &&
SINT.getOpcode() == ISD::SIGN_EXTEND) ||
(Subtarget.hasFPCVT() &&
@@ -9046,8 +9028,9 @@ SDValue PPCTargetLowering::LowerINT_TO_FP(SDValue Op,
DAG.getVTList(MVT::f64, MVT::Other), Ops,
MVT::i32, MMO);
Chain = Ld.getValue(1);
- if (ReusingLoad)
- spliceIntoChain(RLI.ResChain, Ld.getValue(1), DAG);
+ if (ReusingLoad && RLI.ResChain) {
+ DAG.makeEquivalentMemoryOrdering(RLI.ResChain, Ld.getValue(1));
+ }
} else {
assert(Subtarget.isPPC64() &&
"i32->FP without LFIWAX supported only on PPC64");
@@ -11669,7 +11652,8 @@ SDValue PPCTargetLowering::LowerSCALAR_TO_VECTOR(SDValue Op,
SDValue Bits = DAG.getMemIntrinsicNode(
PPCISD::LD_SPLAT, dl, DAG.getVTList(MVT::v4i32, MVT::Other), Ops,
MVT::i32, MMO);
- spliceIntoChain(RLI.ResChain, Bits.getValue(1), DAG);
+ if (RLI.ResChain)
+ DAG.makeEquivalentMemoryOrdering(RLI.ResChain, Bits.getValue(1));
return Bits.getValue(0);
}
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.h b/llvm/lib/Target/PowerPC/PPCISelLowering.h
index cc01cab7a20897..514329bbe92d7f 100644
--- a/llvm/lib/Target/PowerPC/PPCISelLowering.h
+++ b/llvm/lib/Target/PowerPC/PPCISelLowering.h
@@ -1226,8 +1226,6 @@ namespace llvm {
bool canReuseLoadAddress(SDValue Op, EVT MemVT, ReuseLoadInfo &RLI,
SelectionDAG &DAG,
ISD::LoadExtType ET = ISD::NON_EXTLOAD) const;
- void spliceIntoChain(SDValue ResChain, SDValue NewResChain,
- SelectionDAG &DAG) const;
void LowerFP_TO_INTForReuse(SDValue Op, ReuseLoadInfo &RLI,
SelectionDAG &DAG, const SDLoc &dl) const;
More information about the llvm-commits
mailing list