[llvm] a0dde7b - [DAG] Remove (dead) legalization for atomic LoadSDNode and StoreSDNode
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 5 12:19:28 PST 2023
Author: Philip Reames
Date: 2023-12-05T12:19:10-08:00
New Revision: a0dde7b8d16842005d6f5247dda6f17c77a5906f
URL: https://github.com/llvm/llvm-project/commit/a0dde7b8d16842005d6f5247dda6f17c77a5906f
DIFF: https://github.com/llvm/llvm-project/commit/a0dde7b8d16842005d6f5247dda6f17c77a5906f.diff
LOG: [DAG] Remove (dead) legalization for atomic LoadSDNode and StoreSDNode
This should have been part of 943f3e52 which removed the never completed
migration code which added these. I left them out because I thought there
was more generic SDAG code to cleanup, but I'd forgotten that SystemZ
relied on custom legalizing ATOMIC_LOAD to (atomic) LoadSDNode. As a
result, we still need the various legality checks on combines and the
common infrastructure to suport them.
Added:
Modified:
llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
index 54698edce7d6f..362fa92dd44b2 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
@@ -3830,20 +3830,7 @@ void DAGTypeLegalizer::ExpandIntRes_XROUND_XRINT(SDNode *N, SDValue &Lo,
void DAGTypeLegalizer::ExpandIntRes_LOAD(LoadSDNode *N,
SDValue &Lo, SDValue &Hi) {
- if (N->isAtomic()) {
- // It's typical to have larger CAS than atomic load instructions.
- SDLoc dl(N);
- EVT VT = N->getMemoryVT();
- SDVTList VTs = DAG.getVTList(VT, MVT::i1, MVT::Other);
- SDValue Zero = DAG.getConstant(0, dl, VT);
- SDValue Swap = DAG.getAtomicCmpSwap(
- ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS, dl,
- VT, VTs, N->getOperand(0),
- N->getOperand(1), Zero, Zero, N->getMemOperand());
- ReplaceValueWith(SDValue(N, 0), Swap.getValue(0));
- ReplaceValueWith(SDValue(N, 1), Swap.getValue(2));
- return;
- }
+ assert(!N->isAtomic() && "Should have been a ATOMIC_LOAD?");
if (ISD::isNormalLoad(N)) {
ExpandRes_NormalLoad(N, Lo, Hi);
@@ -5398,16 +5385,8 @@ SDValue DAGTypeLegalizer::ExpandIntOp_XINT_TO_FP(SDNode *N) {
}
SDValue DAGTypeLegalizer::ExpandIntOp_STORE(StoreSDNode *N, unsigned OpNo) {
- if (N->isAtomic()) {
- // It's typical to have larger CAS than atomic store instructions.
- SDLoc dl(N);
- SDValue Swap = DAG.getAtomic(ISD::ATOMIC_SWAP, dl,
- N->getMemoryVT(),
- N->getOperand(0), N->getOperand(2),
- N->getOperand(1),
- N->getMemOperand());
- return Swap.getValue(1);
- }
+ assert(!N->isAtomic() && "Should have been a ATOMIC_STORE?");
+
if (ISD::isNormalStore(N))
return ExpandOp_NormalStore(N, OpNo);
More information about the llvm-commits
mailing list