aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Lenharth <andrewl@lenharth.org>2008-02-21 16:11:38 +0000
committerAndrew Lenharth <andrewl@lenharth.org>2008-02-21 16:11:38 +0000
commitc1c7bd610a1647d8e7eaeb4cc38ca1a85ae5e271 (patch)
tree26d759a60ffbf5c2607092985c35616e2e2f0bb9
parent39442afb36cfe39315accc36eb2e8355689f0882 (diff)
downloadexternal_llvm-c1c7bd610a1647d8e7eaeb4cc38ca1a85ae5e271.zip
external_llvm-c1c7bd610a1647d8e7eaeb4cc38ca1a85ae5e271.tar.gz
external_llvm-c1c7bd610a1647d8e7eaeb4cc38ca1a85ae5e271.tar.bz2
Better names as per Evan's request
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47435 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/CodeGen/SelectionDAG.h4
-rw-r--r--include/llvm/CodeGen/SelectionDAGNodes.h19
-rw-r--r--lib/CodeGen/SelectionDAG/SelectionDAG.cpp19
3 files changed, 22 insertions, 20 deletions
diff --git a/include/llvm/CodeGen/SelectionDAG.h b/include/llvm/CodeGen/SelectionDAG.h
index 70c7185..c402958 100644
--- a/include/llvm/CodeGen/SelectionDAG.h
+++ b/include/llvm/CodeGen/SelectionDAG.h
@@ -359,12 +359,12 @@ public:
/// getAtomic - Gets a node for an atomic op, produces result and chain, takes
// 3 operands
SDOperand getAtomic(unsigned Opcode, SDOperand Chain, SDOperand Ptr,
- SDOperand A2, SDOperand A3, MVT::ValueType VT);
+ SDOperand Cmp, SDOperand Swp, MVT::ValueType VT);
/// getAtomic - Gets a node for an atomic op, produces result and chain, takes
// 2 operands
SDOperand getAtomic(unsigned Opcode, SDOperand Chain, SDOperand Ptr,
- SDOperand A2, MVT::ValueType VT);
+ SDOperand Val, MVT::ValueType VT);
/// getLoad - Loads are not normal binary operators: their result type is not
/// determined by their operands, and they produce a value AND a token chain.
diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h
index 293bb73..bffcfb2 100644
--- a/include/llvm/CodeGen/SelectionDAGNodes.h
+++ b/include/llvm/CodeGen/SelectionDAGNodes.h
@@ -1193,26 +1193,27 @@ class AtomicSDNode : public SDNode {
SDOperand Ops[4];
MVT::ValueType OrigVT;
public:
- AtomicSDNode(unsigned Opc, SDVTList VTL, SDOperand Chain, SDOperand X,
- SDOperand Y, SDOperand Z, MVT::ValueType VT)
+ AtomicSDNode(unsigned Opc, SDVTList VTL, SDOperand Chain, SDOperand Ptr,
+ SDOperand Cmp, SDOperand Swp, MVT::ValueType VT)
: SDNode(Opc, VTL) {
Ops[0] = Chain;
- Ops[1] = X;
- Ops[2] = Y;
- Ops[3] = Z;
+ Ops[1] = Ptr;
+ Ops[2] = Swp;
+ Ops[3] = Cmp;
InitOperands(Ops, 4);
OrigVT=VT;
}
- AtomicSDNode(unsigned Opc, SDVTList VTL, SDOperand Chain, SDOperand X,
- SDOperand Y, MVT::ValueType VT)
+ AtomicSDNode(unsigned Opc, SDVTList VTL, SDOperand Chain, SDOperand Ptr,
+ SDOperand Val, MVT::ValueType VT)
: SDNode(Opc, VTL) {
Ops[0] = Chain;
- Ops[1] = X;
- Ops[2] = Y;
+ Ops[1] = Ptr;
+ Ops[2] = Val;
InitOperands(Ops, 3);
OrigVT=VT;
}
MVT::ValueType getVT() const { return OrigVT; }
+ bool isCompareAndSwap() const { return getOpcode() == ISD::ATOMIC_LCS; }
};
class StringSDNode : public SDNode {
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index 803a38c..a12ff10 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -2428,37 +2428,38 @@ SDOperand SelectionDAG::getMemset(SDOperand Chain, SDOperand Dest,
}
SDOperand SelectionDAG::getAtomic(unsigned Opcode, SDOperand Chain,
- SDOperand Ptr, SDOperand A2,
- SDOperand A3, MVT::ValueType VT) {
+ SDOperand Ptr, SDOperand Cmp,
+ SDOperand Swp, MVT::ValueType VT) {
assert(Opcode == ISD::ATOMIC_LCS && "Invalid Atomic Op");
- SDVTList VTs = getVTList(A2.getValueType(), MVT::Other);
+ assert(Cmp.getValueType() == Swp.getValueType() && "Invalid Atomic Op Types");
+ SDVTList VTs = getVTList(Cmp.getValueType(), MVT::Other);
FoldingSetNodeID ID;
- SDOperand Ops[] = {Chain, Ptr, A2, A3};
+ SDOperand Ops[] = {Chain, Ptr, Cmp, Swp};
AddNodeIDNode(ID, Opcode, VTs, Ops, 4);
ID.AddInteger((unsigned int)VT);
void* IP = 0;
if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP))
return SDOperand(E, 0);
- SDNode* N = new AtomicSDNode(Opcode, VTs, Chain, Ptr, A2, A3, VT);
+ SDNode* N = new AtomicSDNode(Opcode, VTs, Chain, Ptr, Cmp, Swp, VT);
CSEMap.InsertNode(N, IP);
AllNodes.push_back(N);
return SDOperand(N, 0);
}
SDOperand SelectionDAG::getAtomic(unsigned Opcode, SDOperand Chain,
- SDOperand Ptr, SDOperand A2,
+ SDOperand Ptr, SDOperand Val,
MVT::ValueType VT) {
assert((Opcode == ISD::ATOMIC_LAS || Opcode == ISD::ATOMIC_SWAP)
&& "Invalid Atomic Op");
- SDVTList VTs = getVTList(A2.getValueType(), MVT::Other);
+ SDVTList VTs = getVTList(Val.getValueType(), MVT::Other);
FoldingSetNodeID ID;
- SDOperand Ops[] = {Chain, Ptr, A2};
+ SDOperand Ops[] = {Chain, Ptr, Val};
AddNodeIDNode(ID, Opcode, VTs, Ops, 3);
ID.AddInteger((unsigned int)VT);
void* IP = 0;
if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP))
return SDOperand(E, 0);
- SDNode* N = new AtomicSDNode(Opcode, VTs, Chain, Ptr, A2, VT);
+ SDNode* N = new AtomicSDNode(Opcode, VTs, Chain, Ptr, Val, VT);
CSEMap.InsertNode(N, IP);
AllNodes.push_back(N);
return SDOperand(N, 0);