Better names as per Evan's request
authorAndrew Lenharth <andrewl@lenharth.org>
Thu, 21 Feb 2008 16:11:38 +0000 (16:11 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Thu, 21 Feb 2008 16:11:38 +0000 (16:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47435 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/SelectionDAG.h
include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index 70c7185c613abf7935e94736ad4055aee3509157..c40295891c9f25a05d72a3847758688f478f8c2e 100644 (file)
@@ -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.
index 293bb73a2390afbe1f585c25819e337b78c50c0f..bffcfb245e18bf2add168602798cef341aee2138 100644 (file)
@@ -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 {
index 803a38cbe1356ebfb3062d9fbbb7c9098986db9e..a12ff10c33015cfbfc1e7f55948d1da3bb71dfdb 100644 (file)
@@ -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);