diff options
| author | Dale Johannesen <dalej@apple.com> | 2007-10-05 20:04:43 +0000 |
|---|---|---|
| committer | Dale Johannesen <dalej@apple.com> | 2007-10-05 20:04:43 +0000 |
| commit | c0154c06d6a4d2458cd6b67722658635fab342a0 (patch) | |
| tree | ecc36a578c9c8d27c7830a511ef362c4ad6287a4 /llvm/lib/Target/PowerPC/PPCISelLowering.cpp | |
| parent | e61bfa8bb421561dc587078c2f9fecfb619872a0 (diff) | |
| download | bcm5719-llvm-c0154c06d6a4d2458cd6b67722658635fab342a0.tar.gz bcm5719-llvm-c0154c06d6a4d2458cd6b67722658635fab342a0.zip | |
First round of ppc long double. call/return and
basic arithmetic works.
Rename RTLIB long double functions to distinguish
different flavors of long double; the lib functions
have different names, alas.
llvm-svn: 42644
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp index cfebef1edd6..ec1046fcb14 100644 --- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp @@ -1812,8 +1812,20 @@ static SDOperand LowerCALL(SDOperand Op, SelectionDAG &DAG, NumResults = 1; NodeTys.push_back(MVT::i64); break; - case MVT::f32: case MVT::f64: + if (Op.Val->getValueType(1) == MVT::f64) { + Chain = DAG.getCopyFromReg(Chain, PPC::F1, MVT::f64, InFlag).getValue(1); + ResultVals[0] = Chain.getValue(0); + Chain = DAG.getCopyFromReg(Chain, PPC::F2, MVT::f64, + Chain.getValue(2)).getValue(1); + ResultVals[1] = Chain.getValue(0); + NumResults = 2; + NodeTys.push_back(MVT::f64); + NodeTys.push_back(MVT::f64); + break; + } + // else fall through + case MVT::f32: Chain = DAG.getCopyFromReg(Chain, PPC::F1, Op.Val->getValueType(0), InFlag).getValue(1); ResultVals[0] = Chain.getValue(0); |

