diff options
| author | Misha Brukman <brukman+llvm@gmail.com> | 2004-07-12 23:49:47 +0000 |
|---|---|---|
| committer | Misha Brukman <brukman+llvm@gmail.com> | 2004-07-12 23:49:47 +0000 |
| commit | be1b680f546a932e9534c4a643a3da7a682ae23c (patch) | |
| tree | c724919e90574edc4e654f7a16b8ce38a351d74a /llvm/lib | |
| parent | 9dacda651f11fc4f729cb6a230e5c3fb8d92d0d9 (diff) | |
| download | bcm5719-llvm-be1b680f546a932e9534c4a643a3da7a682ae23c.tar.gz bcm5719-llvm-be1b680f546a932e9534c4a643a3da7a682ae23c.zip | |
Correctly load FP constants out of the constant pool.
llvm-svn: 14782
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp | 9 | ||||
| -rw-r--r-- | llvm/lib/Target/PowerPC/PowerPCISelSimple.cpp | 9 |
2 files changed, 6 insertions, 12 deletions
diff --git a/llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp b/llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp index 64fcc6b7527..7d9e7cc12a2 100644 --- a/llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp +++ b/llvm/lib/Target/PowerPC/PPC32ISelSimple.cpp @@ -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; } diff --git a/llvm/lib/Target/PowerPC/PowerPCISelSimple.cpp b/llvm/lib/Target/PowerPC/PowerPCISelSimple.cpp index 64fcc6b7527..7d9e7cc12a2 100644 --- a/llvm/lib/Target/PowerPC/PowerPCISelSimple.cpp +++ b/llvm/lib/Target/PowerPC/PowerPCISelSimple.cpp @@ -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; } |

