diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-10-02 06:37:13 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-10-02 06:37:13 +0000 |
| commit | a17e6c486c4e3ca05cdcec75aaf2b4bd43808fe7 (patch) | |
| tree | 03f286118f25fb6a84296e533e90484947301e34 /llvm/lib/Target/PowerPC/PPCISelLowering.cpp | |
| parent | a038d901fb93e557cf79289affa477050783d445 (diff) | |
| download | bcm5719-llvm-a17e6c486c4e3ca05cdcec75aaf2b4bd43808fe7.tar.gz bcm5719-llvm-a17e6c486c4e3ca05cdcec75aaf2b4bd43808fe7.zip | |
fix an f32/f64 type mismatch
llvm-svn: 23587
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp index fdefef7c237..9bab6ed8be3 100644 --- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp @@ -130,13 +130,17 @@ SDOperand PPC32TargetLowering::LowerOperation(SDOperand Op, SelectionDAG &DAG) { default: assert(0 && "Wasn't expecting to be able to lower this!"); case ISD::FP_TO_SINT: { assert(MVT::isFloatingPoint(Op.getOperand(0).getValueType())); + SDOperand Src = Op.getOperand(0); + if (Src.getValueType() == MVT::f32) + Src = DAG.getNode(ISD::FP_EXTEND, MVT::f64, Src); + switch (Op.getValueType()) { default: assert(0 && "Unhandled FP_TO_SINT type in custom expander!"); case MVT::i32: - Op = DAG.getNode(PPCISD::FCTIWZ, MVT::f64, Op.getOperand(0)); + Op = DAG.getNode(PPCISD::FCTIWZ, MVT::f64, Src); break; case MVT::i64: - Op = DAG.getNode(PPCISD::FCTIDZ, MVT::f64, Op.getOperand(0)); + Op = DAG.getNode(PPCISD::FCTIDZ, MVT::f64, Src); break; } |

