diff options
author | Dan Gohman <gohman@apple.com> | 2008-03-08 00:19:12 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-03-08 00:19:12 +0000 |
commit | d2ab5fd713eb933c48876c1cb9f627a99c64f2b9 (patch) | |
tree | c0a613a45d8c9fc7210eadfb408330d79a49413b /llvm/lib/Target/PowerPC/PPCISelLowering.cpp | |
parent | d6951455e46780384219d686a6f6b72c57d5b7db (diff) | |
download | bcm5719-llvm-d2ab5fd713eb933c48876c1cb9f627a99c64f2b9.tar.gz bcm5719-llvm-d2ab5fd713eb933c48876c1cb9f627a99c64f2b9.zip |
Add support for calls with i128 return values on ppc64.
llvm-svn: 48041
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelLowering.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp index 7773fc9ee50..06098de0635 100644 --- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp @@ -2015,9 +2015,19 @@ SDOperand PPCTargetLowering::LowerCALL(SDOperand Op, SelectionDAG &DAG, NodeTys.push_back(MVT::i32); break; case MVT::i64: - Chain = DAG.getCopyFromReg(Chain, PPC::X3, MVT::i64, InFlag).getValue(1); - ResultVals[0] = Chain.getValue(0); - NumResults = 1; + if (Op.Val->getValueType(1) == MVT::i64) { + Chain = DAG.getCopyFromReg(Chain, PPC::X3, MVT::i64, InFlag).getValue(1); + ResultVals[0] = Chain.getValue(0); + Chain = DAG.getCopyFromReg(Chain, PPC::X4, MVT::i64, + Chain.getValue(2)).getValue(1); + ResultVals[1] = Chain.getValue(0); + NumResults = 2; + NodeTys.push_back(MVT::i64); + } else { + Chain = DAG.getCopyFromReg(Chain, PPC::X3, MVT::i64, InFlag).getValue(1); + ResultVals[0] = Chain.getValue(0); + NumResults = 1; + } NodeTys.push_back(MVT::i64); break; case MVT::f64: |