mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 21:29:20 +00:00
Eliminate SelectNodeTo() and getTargetNode() variants which take more than
3 SDOperand operands. They are replaced by versions which take an array of SDOperand and the number of operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29905 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c19bbba7d7
commit
694481ee01
@ -312,33 +312,13 @@ public:
|
|||||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT,
|
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT,
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3);
|
SDOperand Op1, SDOperand Op2, SDOperand Op3);
|
||||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT,
|
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT,
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
const SDOperand *Ops, unsigned NumOps);
|
||||||
SDOperand Op4);
|
|
||||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5);
|
|
||||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5, SDOperand Op6);
|
|
||||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5, SDOperand Op6,
|
|
||||||
SDOperand Op7);
|
|
||||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5, SDOperand Op6,
|
|
||||||
SDOperand Op7, SDOperand Op8);
|
|
||||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT1,
|
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT1,
|
||||||
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2);
|
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2);
|
||||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT1,
|
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT1,
|
||||||
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
|
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
|
||||||
SDOperand Op3);
|
SDOperand Op3);
|
||||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4);
|
|
||||||
SDNode *SelectNodeTo(SDNode *N, unsigned TargetOpc, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4, SDOperand Op5);
|
|
||||||
|
|
||||||
/// getTargetNode - These are used for target selectors to create a new node
|
/// getTargetNode - These are used for target selectors to create a new node
|
||||||
/// with specified return type(s), target opcode, and operands.
|
/// with specified return type(s), target opcode, and operands.
|
||||||
@ -353,23 +333,6 @@ public:
|
|||||||
SDOperand Op1, SDOperand Op2);
|
SDOperand Op1, SDOperand Op2);
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3);
|
SDOperand Op1, SDOperand Op2, SDOperand Op3);
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5, SDOperand Op6);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5, SDOperand Op6,
|
|
||||||
SDOperand Op7);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5, SDOperand Op6,
|
|
||||||
SDOperand Op7, SDOperand Op8);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
||||||
const SDOperand *Ops, unsigned NumOps);
|
const SDOperand *Ops, unsigned NumOps);
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
||||||
@ -380,38 +343,13 @@ public:
|
|||||||
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
|
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
|
||||||
SDOperand Op3);
|
SDOperand Op3);
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
||||||
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
|
MVT::ValueType VT2,
|
||||||
SDOperand Op3, SDOperand Op4);
|
const SDOperand *Ops, unsigned NumOps);
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4, SDOperand Op5);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4, SDOperand Op5,
|
|
||||||
SDOperand Op6);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4, SDOperand Op5,
|
|
||||||
SDOperand Op6, SDOperand Op7);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
||||||
MVT::ValueType VT2, MVT::ValueType VT3,
|
MVT::ValueType VT2, MVT::ValueType VT3,
|
||||||
SDOperand Op1, SDOperand Op2);
|
SDOperand Op1, SDOperand Op2);
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
||||||
MVT::ValueType VT2, MVT::ValueType VT3,
|
MVT::ValueType VT2, MVT::ValueType VT3,
|
||||||
SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4, SDOperand Op5);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, MVT::ValueType VT3,
|
|
||||||
SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4, SDOperand Op5,
|
|
||||||
SDOperand Op6);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, MVT::ValueType VT3,
|
|
||||||
SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4, SDOperand Op5,
|
|
||||||
SDOperand Op6, SDOperand Op7);
|
|
||||||
SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2,
|
|
||||||
const SDOperand *Ops, unsigned NumOps);
|
const SDOperand *Ops, unsigned NumOps);
|
||||||
|
|
||||||
/// ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead.
|
/// ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead.
|
||||||
|
@ -945,80 +945,16 @@ protected:
|
|||||||
Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
|
Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
|
||||||
Op2.Val->Uses.push_back(this);
|
Op2.Val->Uses.push_back(this);
|
||||||
}
|
}
|
||||||
void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3) {
|
void setOperands(const SDOperand *Ops, unsigned NumOps) {
|
||||||
assert(NumOperands == 0 && "Should not have operands yet!");
|
assert(NumOperands == 0 && "Should not have operands yet!");
|
||||||
OperandList = new SDOperand[4];
|
NumOperands = NumOps;
|
||||||
OperandList[0] = Op0;
|
OperandList = new SDOperand[NumOperands];
|
||||||
OperandList[1] = Op1;
|
|
||||||
OperandList[2] = Op2;
|
for (unsigned i = 0, e = NumOps; i != e; ++i) {
|
||||||
OperandList[3] = Op3;
|
OperandList[i] = Ops[i];
|
||||||
NumOperands = 4;
|
SDNode *N = OperandList[i].Val;
|
||||||
Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
|
N->Uses.push_back(this);
|
||||||
Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
|
|
||||||
}
|
}
|
||||||
void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4) {
|
|
||||||
assert(NumOperands == 0 && "Should not have operands yet!");
|
|
||||||
OperandList = new SDOperand[5];
|
|
||||||
OperandList[0] = Op0;
|
|
||||||
OperandList[1] = Op1;
|
|
||||||
OperandList[2] = Op2;
|
|
||||||
OperandList[3] = Op3;
|
|
||||||
OperandList[4] = Op4;
|
|
||||||
NumOperands = 5;
|
|
||||||
Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
|
|
||||||
Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
|
|
||||||
Op4.Val->Uses.push_back(this);
|
|
||||||
}
|
|
||||||
void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5) {
|
|
||||||
assert(NumOperands == 0 && "Should not have operands yet!");
|
|
||||||
OperandList = new SDOperand[6];
|
|
||||||
OperandList[0] = Op0;
|
|
||||||
OperandList[1] = Op1;
|
|
||||||
OperandList[2] = Op2;
|
|
||||||
OperandList[3] = Op3;
|
|
||||||
OperandList[4] = Op4;
|
|
||||||
OperandList[5] = Op5;
|
|
||||||
NumOperands = 6;
|
|
||||||
Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
|
|
||||||
Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
|
|
||||||
Op4.Val->Uses.push_back(this); Op5.Val->Uses.push_back(this);
|
|
||||||
}
|
|
||||||
void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5, SDOperand Op6) {
|
|
||||||
assert(NumOperands == 0 && "Should not have operands yet!");
|
|
||||||
OperandList = new SDOperand[7];
|
|
||||||
OperandList[0] = Op0;
|
|
||||||
OperandList[1] = Op1;
|
|
||||||
OperandList[2] = Op2;
|
|
||||||
OperandList[3] = Op3;
|
|
||||||
OperandList[4] = Op4;
|
|
||||||
OperandList[5] = Op5;
|
|
||||||
OperandList[6] = Op6;
|
|
||||||
NumOperands = 7;
|
|
||||||
Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
|
|
||||||
Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
|
|
||||||
Op4.Val->Uses.push_back(this); Op5.Val->Uses.push_back(this);
|
|
||||||
Op6.Val->Uses.push_back(this);
|
|
||||||
}
|
|
||||||
void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5, SDOperand Op6, SDOperand Op7) {
|
|
||||||
assert(NumOperands == 0 && "Should not have operands yet!");
|
|
||||||
OperandList = new SDOperand[8];
|
|
||||||
OperandList[0] = Op0;
|
|
||||||
OperandList[1] = Op1;
|
|
||||||
OperandList[2] = Op2;
|
|
||||||
OperandList[3] = Op3;
|
|
||||||
OperandList[4] = Op4;
|
|
||||||
OperandList[5] = Op5;
|
|
||||||
OperandList[6] = Op6;
|
|
||||||
OperandList[7] = Op7;
|
|
||||||
NumOperands = 8;
|
|
||||||
Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
|
|
||||||
Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
|
|
||||||
Op4.Val->Uses.push_back(this); Op5.Val->Uses.push_back(this);
|
|
||||||
Op6.Val->Uses.push_back(this); Op7.Val->Uses.push_back(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void addUser(SDNode *User) {
|
void addUser(SDNode *User) {
|
||||||
|
@ -1908,16 +1908,13 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
||||||
MVT::ValueType VT, SDOperand Op1,
|
MVT::ValueType VT, const SDOperand *Ops,
|
||||||
SDOperand Op2, SDOperand Op3,
|
unsigned NumOps) {
|
||||||
SDOperand Op4) {
|
|
||||||
// If an identical node already exists, use it.
|
// If an identical node already exists, use it.
|
||||||
SDVTList VTs = getVTList(VT);
|
SDVTList VTs = getVTList(VT);
|
||||||
SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
||||||
ID.AddOperand(Op1);
|
for (unsigned i = 0; i != NumOps; ++i)
|
||||||
ID.AddOperand(Op2);
|
ID.AddOperand(Ops[i]);
|
||||||
ID.AddOperand(Op3);
|
|
||||||
ID.AddOperand(Op4);
|
|
||||||
void *IP = 0;
|
void *IP = 0;
|
||||||
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
||||||
return ON;
|
return ON;
|
||||||
@ -1925,112 +1922,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
|||||||
RemoveNodeFromCSEMaps(N);
|
RemoveNodeFromCSEMaps(N);
|
||||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
||||||
N->setValueTypes(VTs);
|
N->setValueTypes(VTs);
|
||||||
N->setOperands(Op1, Op2, Op3, Op4);
|
N->setOperands(Ops, NumOps);
|
||||||
|
|
||||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
|
||||||
return N;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
|
||||||
MVT::ValueType VT, SDOperand Op1,
|
|
||||||
SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5) {
|
|
||||||
SDVTList VTs = getVTList(VT);
|
|
||||||
SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
|
||||||
ID.AddOperand(Op1);
|
|
||||||
ID.AddOperand(Op2);
|
|
||||||
ID.AddOperand(Op3);
|
|
||||||
ID.AddOperand(Op4);
|
|
||||||
ID.AddOperand(Op5);
|
|
||||||
void *IP = 0;
|
|
||||||
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
|
||||||
return ON;
|
|
||||||
|
|
||||||
RemoveNodeFromCSEMaps(N);
|
|
||||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
|
||||||
N->setValueTypes(VTs);
|
|
||||||
N->setOperands(Op1, Op2, Op3, Op4, Op5);
|
|
||||||
|
|
||||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
|
||||||
return N;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
|
||||||
MVT::ValueType VT, SDOperand Op1,
|
|
||||||
SDOperand Op2, SDOperand Op3, SDOperand Op4,
|
|
||||||
SDOperand Op5, SDOperand Op6) {
|
|
||||||
SDVTList VTs = getVTList(VT);
|
|
||||||
SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
|
||||||
ID.AddOperand(Op1);
|
|
||||||
ID.AddOperand(Op2);
|
|
||||||
ID.AddOperand(Op3);
|
|
||||||
ID.AddOperand(Op4);
|
|
||||||
ID.AddOperand(Op5);
|
|
||||||
ID.AddOperand(Op6);
|
|
||||||
void *IP = 0;
|
|
||||||
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
|
||||||
return ON;
|
|
||||||
|
|
||||||
RemoveNodeFromCSEMaps(N);
|
|
||||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
|
||||||
N->setValueTypes(VTs);
|
|
||||||
N->setOperands(Op1, Op2, Op3, Op4, Op5, Op6);
|
|
||||||
|
|
||||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
|
||||||
return N;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
|
||||||
MVT::ValueType VT, SDOperand Op1,
|
|
||||||
SDOperand Op2, SDOperand Op3,SDOperand Op4,
|
|
||||||
SDOperand Op5, SDOperand Op6,
|
|
||||||
SDOperand Op7) {
|
|
||||||
SDVTList VTs = getVTList(VT);
|
|
||||||
// If an identical node already exists, use it.
|
|
||||||
SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
|
||||||
ID.AddOperand(Op1);
|
|
||||||
ID.AddOperand(Op2);
|
|
||||||
ID.AddOperand(Op3);
|
|
||||||
ID.AddOperand(Op4);
|
|
||||||
ID.AddOperand(Op5);
|
|
||||||
ID.AddOperand(Op6);
|
|
||||||
ID.AddOperand(Op7);
|
|
||||||
void *IP = 0;
|
|
||||||
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
|
||||||
return ON;
|
|
||||||
|
|
||||||
RemoveNodeFromCSEMaps(N);
|
|
||||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
|
||||||
N->setValueTypes(VTs);
|
|
||||||
N->setOperands(Op1, Op2, Op3, Op4, Op5, Op6, Op7);
|
|
||||||
|
|
||||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
|
||||||
return N;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
|
||||||
MVT::ValueType VT, SDOperand Op1,
|
|
||||||
SDOperand Op2, SDOperand Op3,SDOperand Op4,
|
|
||||||
SDOperand Op5, SDOperand Op6,
|
|
||||||
SDOperand Op7, SDOperand Op8) {
|
|
||||||
// If an identical node already exists, use it.
|
|
||||||
SDVTList VTs = getVTList(VT);
|
|
||||||
SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
|
||||||
ID.AddOperand(Op1);
|
|
||||||
ID.AddOperand(Op2);
|
|
||||||
ID.AddOperand(Op3);
|
|
||||||
ID.AddOperand(Op4);
|
|
||||||
ID.AddOperand(Op5);
|
|
||||||
ID.AddOperand(Op6);
|
|
||||||
ID.AddOperand(Op7);
|
|
||||||
ID.AddOperand(Op8);
|
|
||||||
void *IP = 0;
|
|
||||||
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
|
||||||
return ON;
|
|
||||||
|
|
||||||
RemoveNodeFromCSEMaps(N);
|
|
||||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
|
||||||
N->setValueTypes(VTs);
|
|
||||||
N->setOperands(Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8);
|
|
||||||
|
|
||||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
||||||
return N;
|
return N;
|
||||||
@ -2075,55 +1967,6 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
|||||||
return N;
|
return N;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
|
||||||
MVT::ValueType VT1, MVT::ValueType VT2,
|
|
||||||
SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4) {
|
|
||||||
// If an identical node already exists, use it.
|
|
||||||
SDVTList VTs = getVTList(VT1, VT2);
|
|
||||||
SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
|
||||||
ID.AddOperand(Op1);
|
|
||||||
ID.AddOperand(Op2);
|
|
||||||
ID.AddOperand(Op3);
|
|
||||||
ID.AddOperand(Op4);
|
|
||||||
void *IP = 0;
|
|
||||||
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
|
||||||
return ON;
|
|
||||||
|
|
||||||
RemoveNodeFromCSEMaps(N);
|
|
||||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
|
||||||
N->setValueTypes(VTs);
|
|
||||||
N->setOperands(Op1, Op2, Op3, Op4);
|
|
||||||
|
|
||||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
|
||||||
return N;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
|
|
||||||
MVT::ValueType VT1, MVT::ValueType VT2,
|
|
||||||
SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4,
|
|
||||||
SDOperand Op5) {
|
|
||||||
// If an identical node already exists, use it.
|
|
||||||
SDVTList VTs = getVTList(VT1, VT2);
|
|
||||||
SelectionDAGCSEMap::NodeID ID(ISD::BUILTIN_OP_END+TargetOpc, VTs);
|
|
||||||
ID.AddOperand(Op1);
|
|
||||||
ID.AddOperand(Op2);
|
|
||||||
ID.AddOperand(Op3);
|
|
||||||
ID.AddOperand(Op4);
|
|
||||||
ID.AddOperand(Op5);
|
|
||||||
void *IP = 0;
|
|
||||||
if (SDNode *ON = CSEMap.FindNodeOrInsertPos(ID, IP))
|
|
||||||
return ON;
|
|
||||||
|
|
||||||
RemoveNodeFromCSEMaps(N);
|
|
||||||
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
|
|
||||||
N->setValueTypes(VTs);
|
|
||||||
N->setOperands(Op1, Op2, Op3, Op4, Op5);
|
|
||||||
|
|
||||||
CSEMap.InsertNode(N, IP); // Memoize the new node.
|
|
||||||
return N;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// getTargetNode - These are used for target selectors to create a new node
|
/// getTargetNode - These are used for target selectors to create a new node
|
||||||
/// with specified return type(s), target opcode, and operands.
|
/// with specified return type(s), target opcode, and operands.
|
||||||
@ -2146,37 +1989,6 @@ SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3) {
|
SDOperand Op1, SDOperand Op2, SDOperand Op3) {
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Op1, Op2, Op3).Val;
|
return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Op1, Op2, Op3).Val;
|
||||||
}
|
}
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4) {
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Op1, Op2, Op3, Op4).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5) {
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Op1, Op2, Op3, Op4, Op5).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5,
|
|
||||||
SDOperand Op6) {
|
|
||||||
SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6 };
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Ops, 6).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5, SDOperand Op6,
|
|
||||||
SDOperand Op7) {
|
|
||||||
SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6, Op7 };
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Ops, 7).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
|
||||||
SDOperand Op1, SDOperand Op2, SDOperand Op3,
|
|
||||||
SDOperand Op4, SDOperand Op5, SDOperand Op6,
|
|
||||||
SDOperand Op7, SDOperand Op8) {
|
|
||||||
SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6, Op7, Op8 };
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Ops, 8).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT,
|
||||||
const SDOperand *Ops, unsigned NumOps) {
|
const SDOperand *Ops, unsigned NumOps) {
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Ops, NumOps).Val;
|
return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Ops, NumOps).Val;
|
||||||
@ -2201,37 +2013,10 @@ SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 3).Val;
|
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 3).Val;
|
||||||
}
|
}
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
||||||
MVT::ValueType VT2, SDOperand Op1,
|
MVT::ValueType VT2,
|
||||||
SDOperand Op2, SDOperand Op3,
|
const SDOperand *Ops, unsigned NumOps) {
|
||||||
SDOperand Op4) {
|
|
||||||
const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
|
const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
|
||||||
SDOperand Ops[] = { Op1, Op2, Op3, Op4 };
|
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, NumOps).Val;
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 4).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, SDOperand Op1,
|
|
||||||
SDOperand Op2, SDOperand Op3, SDOperand Op4,
|
|
||||||
SDOperand Op5) {
|
|
||||||
const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
|
|
||||||
SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5 };
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 5).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, SDOperand Op1,
|
|
||||||
SDOperand Op2, SDOperand Op3, SDOperand Op4,
|
|
||||||
SDOperand Op5, SDOperand Op6) {
|
|
||||||
const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
|
|
||||||
SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6 };
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 6).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, SDOperand Op1,
|
|
||||||
SDOperand Op2, SDOperand Op3, SDOperand Op4,
|
|
||||||
SDOperand Op5, SDOperand Op6,
|
|
||||||
SDOperand Op7) {
|
|
||||||
const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
|
|
||||||
SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6, Op7 };
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, 7).Val;
|
|
||||||
}
|
}
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
||||||
MVT::ValueType VT2, MVT::ValueType VT3,
|
MVT::ValueType VT2, MVT::ValueType VT3,
|
||||||
@ -2242,36 +2027,9 @@ SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|||||||
}
|
}
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
||||||
MVT::ValueType VT2, MVT::ValueType VT3,
|
MVT::ValueType VT2, MVT::ValueType VT3,
|
||||||
SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4,
|
|
||||||
SDOperand Op5) {
|
|
||||||
const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2, VT3);
|
|
||||||
SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5 };
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, 5).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, MVT::ValueType VT3,
|
|
||||||
SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4, SDOperand Op5,
|
|
||||||
SDOperand Op6) {
|
|
||||||
const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2, VT3);
|
|
||||||
SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6 };
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, 6).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2, MVT::ValueType VT3,
|
|
||||||
SDOperand Op1, SDOperand Op2,
|
|
||||||
SDOperand Op3, SDOperand Op4, SDOperand Op5,
|
|
||||||
SDOperand Op6, SDOperand Op7) {
|
|
||||||
const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2, VT3);
|
|
||||||
SDOperand Ops[] = { Op1, Op2, Op3, Op4, Op5, Op6, Op7 };
|
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, 7).Val;
|
|
||||||
}
|
|
||||||
SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
|
|
||||||
MVT::ValueType VT2,
|
|
||||||
const SDOperand *Ops, unsigned NumOps) {
|
const SDOperand *Ops, unsigned NumOps) {
|
||||||
const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2);
|
const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2, VT3);
|
||||||
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 2, Ops, NumOps).Val;
|
return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, NumOps).Val;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead.
|
/// ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead.
|
||||||
|
Loading…
Reference in New Issue
Block a user