Add support for adding 0.0 and -0.0 to the constant pool, since we lie and
authorNate Begeman <natebegeman@mac.com>
Fri, 1 Apr 2005 01:08:07 +0000 (01:08 +0000)
committerNate Begeman <natebegeman@mac.com>
Fri, 1 Apr 2005 01:08:07 +0000 (01:08 +0000)
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

index fd4d89db2f33d3e683d2c0f84421d07656dff825..558232669e7f58e2fba5a92ed9ad16233d9dac04 100644 (file)
@@ -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<ConstantFPSDNode>(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: