summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-08-24 00:47:15 +0000
committerChris Lattner <sabre@nondot.org>2005-08-24 00:47:15 +0000
commitb6d034a841b6b5c83337b28b22aa88a98133d58b (patch)
tree39d4e4388d9059d5c8d7b2468b730b2bc397aa71 /llvm/lib/Target
parent99282c7b9278c9cb411a5e03f68c703623738b24 (diff)
downloadbcm5719-llvm-b6d034a841b6b5c83337b28b22aa88a98133d58b.tar.gz
bcm5719-llvm-b6d034a841b6b5c83337b28b22aa88a98133d58b.zip
Add callseq_begin/end support
Call stil not supported yet llvm-svn: 22998
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
index d949bce741f..5300f59b89f 100644
--- a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
@@ -920,6 +920,16 @@ SDOperand PPC32DAGToDAGISel::Select(SDOperand Op) {
AddrOp1, AddrOp2, Select(N->getOperand(0)));
break;
}
+
+ case ISD::CALLSEQ_START:
+ case ISD::CALLSEQ_END: {
+ unsigned Amt = cast<ConstantSDNode>(N->getOperand(1))->getValue();
+ unsigned Opc = N->getOpcode() == ISD::CALLSEQ_START ?
+ PPC::ADJCALLSTACKDOWN : PPC::ADJCALLSTACKUP;
+ CurDAG->SelectNodeTo(N, MVT::Other, Opc, Select(N->getOperand(0)),
+ getI32Imm(Amt));
+ break;
+ }
case ISD::RET: {
SDOperand Chain = Select(N->getOperand(0)); // Token chain.
OpenPOWER on IntegriCloud