Add support for target DAG nodes that take 4 operands, such as PowerPC's

rlwinm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22856 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nate Begeman 2005-08-18 07:30:15 +00:00
parent 131a880520
commit 294a0a103d
3 changed files with 19 additions and 0 deletions

View File

@ -226,6 +226,8 @@ public:
SDOperand Op1, SDOperand Op2);
void SelectNodeTo(SDNode *N, MVT::ValueType VT, unsigned TargetOpc,
SDOperand Op1, SDOperand Op2, SDOperand Op3);
void SelectNodeTo(SDNode *N, MVT::ValueType VT, unsigned TargetOpc,
SDOperand Op1, SDOperand Op2, SDOperand Op3, SDOperand Op4);
SDOperand getTargetNode(unsigned Opcode, MVT::ValueType VT,
SDOperand Op1) {

View File

@ -664,6 +664,15 @@ protected:
Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
Op2.Val->Uses.push_back(this);
}
void setOperands(SDOperand Op0, SDOperand Op1, SDOperand Op2, SDOperand Op3) {
Operands.reserve(4);
Operands.push_back(Op0);
Operands.push_back(Op1);
Operands.push_back(Op2);
Operands.push_back(Op3);
Op0.Val->Uses.push_back(this); Op1.Val->Uses.push_back(this);
Op2.Val->Uses.push_back(this); Op3.Val->Uses.push_back(this);
}
void addUser(SDNode *User) {
Uses.push_back(User);
}

View File

@ -1810,6 +1810,14 @@ void SelectionDAG::SelectNodeTo(SDNode *N, MVT::ValueType VT,
N->setValueTypes(VT);
N->setOperands(Op1, Op2, Op3);
}
void SelectionDAG::SelectNodeTo(SDNode *N, MVT::ValueType VT,
unsigned TargetOpc, SDOperand Op1,
SDOperand Op2, SDOperand Op3, SDOperand Op4) {
RemoveNodeFromCSEMaps(N);
N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc);
N->setValueTypes(VT);
N->setOperands(Op1, Op2, Op3, Op4);
}
/// ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead.
/// This can cause recursive merging of nodes in the DAG.