From 6d369ccae002bd0f1e506545b7f4590b081d778d Mon Sep 17 00:00:00 2001 From: Nate Begeman Date: Fri, 1 Apr 2005 01:08:07 +0000 Subject: [PATCH] Add support for adding 0.0 and -0.0 to the constant pool, since we lie and say that we support them, for the purposes of generating fsel instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20970 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/PPCISelPattern.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/Target/PowerPC/PPCISelPattern.cpp b/lib/Target/PowerPC/PPCISelPattern.cpp index fd4d89db2f3..558232669e7 100644 --- a/lib/Target/PowerPC/PPCISelPattern.cpp +++ b/lib/Target/PowerPC/PPCISelPattern.cpp @@ -760,9 +760,17 @@ unsigned ISel::SelectExprFP(SDOperand N, unsigned Result) BuildMI(BB, PPC::FMR, 1, Result).addReg(Tmp1); return Result; - case ISD::ConstantFP: - assert(0 && "ISD::ConstantFP Unimplemented"); - abort(); + case ISD::ConstantFP: { + Tmp1 = MakeReg(MVT::i32); + ConstantFPSDNode *CN = cast(N); + MachineConstantPool *CP = BB->getParent()->getConstantPool(); + ConstantFP *CFP = ConstantFP::get(Type::DoubleTy, CN->getValue()); + unsigned CPI = CP->getConstantPoolIndex(CFP); + BuildMI(BB, PPC::LOADHiAddr, 2, Tmp1).addReg(getGlobalBaseReg()) + .addConstantPoolIndex(CPI); + BuildMI(BB, PPC::LFD, 2, Result).addConstantPoolIndex(CPI).addReg(Tmp1); + return Result; + } case ISD::MUL: case ISD::ADD: