diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-08-30 01:56:13 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-08-30 01:56:13 +0000 |
| commit | 709190d540cd3d902e4173363810945162fb6c67 (patch) | |
| tree | d832b2628f09597e1a910067f957017827acc921 | |
| parent | e413b60632f1383d2e0b1b7cdb621333514096da (diff) | |
| download | bcm5719-llvm-709190d540cd3d902e4173363810945162fb6c67.tar.gz bcm5719-llvm-709190d540cd3d902e4173363810945162fb6c67.zip | |
add some method variants
llvm-svn: 23142
| -rw-r--r-- | llvm/include/llvm/CodeGen/SelectionDAG.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/llvm/include/llvm/CodeGen/SelectionDAG.h b/llvm/include/llvm/CodeGen/SelectionDAG.h index bf6a11be118..8008a4b59a1 100644 --- a/llvm/include/llvm/CodeGen/SelectionDAG.h +++ b/llvm/include/llvm/CodeGen/SelectionDAG.h @@ -112,6 +112,22 @@ public: getRegister(Reg, N.getValueType()), N); } + // This version of the getCopyToReg method takes an extra operand, which + // indicates that there is potentially an incoming flag value (if Flag is not + // null) and that there should be a flag result. + SDOperand getCopyToReg(SDOperand Chain, unsigned Reg, SDOperand N, + SDOperand Flag) { + std::vector<MVT::ValueType> VTs; + VTs.push_back(MVT::Other); + VTs.push_back(MVT::Flag); + std::vector<SDOperand> Ops; + Ops.push_back(Chain); + Ops.push_back(getRegister(Reg, N.getValueType())); + Ops.push_back(N); + if (Flag.Val) Ops.push_back(Flag); + return getNode(ISD::CopyToReg, VTs, Ops); + } + SDOperand getCopyFromReg(SDOperand Chain, unsigned Reg, MVT::ValueType VT) { std::vector<MVT::ValueType> ResultTys; ResultTys.push_back(VT); @@ -121,6 +137,22 @@ public: Ops.push_back(getRegister(Reg, VT)); return getNode(ISD::CopyFromReg, ResultTys, Ops); } + + // This version of the getCopyFromReg method takes an extra operand, which + // indicates that there is potentially an incoming flag value (if Flag is not + // null) and that there should be a flag result. + SDOperand getCopyFromReg(SDOperand Chain, unsigned Reg, MVT::ValueType VT, + SDOperand Flag) { + std::vector<MVT::ValueType> ResultTys; + ResultTys.push_back(VT); + ResultTys.push_back(MVT::Other); + ResultTys.push_back(MVT::Flag); + std::vector<SDOperand> Ops; + Ops.push_back(Chain); + Ops.push_back(getRegister(Reg, VT)); + if (Flag.Val) Ops.push_back(Flag); + return getNode(ISD::CopyFromReg, ResultTys, Ops); + } SDOperand getImplicitDef(SDOperand Chain, unsigned Reg, MVT::ValueType VT) { return getNode(ISD::ImplicitDef, MVT::Other, Chain, getRegister(Reg, VT)); @@ -277,6 +309,13 @@ public: std::vector<SDOperand> &Ops) { return getNode(ISD::BUILTIN_OP_END+Opcode, VT, Ops); } + SDOperand getTargetNode(unsigned Opcode, MVT::ValueType VT1, + MVT::ValueType VT2, std::vector<SDOperand> &Ops) { + std::vector<MVT::ValueType> ResultTys; + ResultTys.push_back(VT1); + ResultTys.push_back(VT2); + return getNode(ISD::BUILTIN_OP_END+Opcode, ResultTys, Ops); + } /// ReplaceAllUsesWith - Modify anything using 'From' to use 'To' instead. /// This can cause recursive merging of nodes in the DAG. Use the first |

