Correctly load FP constants out of the constant pool.
authorMisha Brukman <brukman+llvm@gmail.com>
Mon, 12 Jul 2004 23:49:47 +0000 (23:49 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Mon, 12 Jul 2004 23:49:47 +0000 (23:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14782 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPC32ISelSimple.cpp
lib/Target/PowerPC/PowerPCISelSimple.cpp

index 64fcc6b7527c14b2e005fad328d7d49bac828c7e..7d9e7cc12a2d23ec8b31487fba6835317ca42aca 100644 (file)
@@ -1608,20 +1608,17 @@ void ISel::emitBinaryFPOperation(MachineBasicBlock *BB,
     MachineConstantPool *CP = F->getConstantPool();
     unsigned CPI = CP->getConstantPoolIndex(Op1C);
     const Type *Ty = Op1->getType();
+    assert(Ty == Type::FloatTy || Ty == Type::DoubleTy && "Unknown FP type!");
 
     static const unsigned OpcodeTab[][4] = {
       { PPC32::FADDS, PPC32::FSUBS, PPC32::FMULS, PPC32::FDIVS },  // Float
       { PPC32::FADD,  PPC32::FSUB,  PPC32::FMUL,  PPC32::FDIV },   // Double
     };
 
-    assert(Ty == Type::FloatTy || Ty == Type::DoubleTy && "Unknown FP type!");
-    unsigned TempReg = makeAnotherReg(Ty);
-    unsigned LoadOpcode = (Ty == Type::FloatTy) ? PPC32::LFS : PPC32::LFD;
-    addConstantPoolReference(BuildMI(*BB, IP, LoadOpcode, 2, TempReg), CPI);
-
+    unsigned Op1Reg = getReg(Op1C);
     unsigned Opcode = OpcodeTab[Ty != Type::FloatTy][OperatorClass];
     unsigned Op0r = getReg(Op0, BB, IP);
-    BuildMI(*BB, IP, Opcode, DestReg).addReg(Op0r).addReg(TempReg);
+    BuildMI(*BB, IP, Opcode, DestReg).addReg(Op0r).addReg(Op1Reg);
     return;
   }
   
index 64fcc6b7527c14b2e005fad328d7d49bac828c7e..7d9e7cc12a2d23ec8b31487fba6835317ca42aca 100644 (file)
@@ -1608,20 +1608,17 @@ void ISel::emitBinaryFPOperation(MachineBasicBlock *BB,
     MachineConstantPool *CP = F->getConstantPool();
     unsigned CPI = CP->getConstantPoolIndex(Op1C);
     const Type *Ty = Op1->getType();
+    assert(Ty == Type::FloatTy || Ty == Type::DoubleTy && "Unknown FP type!");
 
     static const unsigned OpcodeTab[][4] = {
       { PPC32::FADDS, PPC32::FSUBS, PPC32::FMULS, PPC32::FDIVS },  // Float
       { PPC32::FADD,  PPC32::FSUB,  PPC32::FMUL,  PPC32::FDIV },   // Double
     };
 
-    assert(Ty == Type::FloatTy || Ty == Type::DoubleTy && "Unknown FP type!");
-    unsigned TempReg = makeAnotherReg(Ty);
-    unsigned LoadOpcode = (Ty == Type::FloatTy) ? PPC32::LFS : PPC32::LFD;
-    addConstantPoolReference(BuildMI(*BB, IP, LoadOpcode, 2, TempReg), CPI);
-
+    unsigned Op1Reg = getReg(Op1C);
     unsigned Opcode = OpcodeTab[Ty != Type::FloatTy][OperatorClass];
     unsigned Op0r = getReg(Op0, BB, IP);
-    BuildMI(*BB, IP, Opcode, DestReg).addReg(Op0r).addReg(TempReg);
+    BuildMI(*BB, IP, Opcode, DestReg).addReg(Op0r).addReg(Op1Reg);
     return;
   }