mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-01 08:12:12 +00:00
Better names as per Evan's request
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47435 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
39442afb36
commit
c1c7bd610a
@ -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.
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user