mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-02 00:36:36 +00:00
Fix int->float conversion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1314 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
430aa9ec1c
commit
b9959d8058
@ -189,7 +189,8 @@ UltraSparcInstrInfo::CreateCodeToCopyIntToFloat(Method* method,
|
||||
|
||||
// Store instruction stores `val' to [%fp+offset].
|
||||
// The store and load opCodes are based on the value being copied, and
|
||||
// they use the integer type that matches the destination type in size:
|
||||
// they use integer and float types that accomodate the
|
||||
// larger of the source type and the destination type:
|
||||
// On SparcV9: int for float, long for double.
|
||||
//
|
||||
Type* tmpType = (dest->getType() == Type::FloatTy)? Type::IntTy
|
||||
@ -202,7 +203,7 @@ UltraSparcInstrInfo::CreateCodeToCopyIntToFloat(Method* method,
|
||||
|
||||
// Load instruction loads [%fp+offset] to `dest'.
|
||||
//
|
||||
MachineInstr* load = new MachineInstr(ChooseLoadInstruction(tmpType));
|
||||
MachineInstr* load =new MachineInstr(ChooseLoadInstruction(dest->getType()));
|
||||
load->SetMachineOperand(0, target.getRegInfo().getFramePointer());
|
||||
load->SetMachineOperand(1, MachineOperand::MO_SignExtendedImmed, offset);
|
||||
load->SetMachineOperand(2, MachineOperand::MO_VirtualRegister, dest);
|
||||
@ -239,7 +240,7 @@ UltraSparcInstrInfo::CreateCodeToCopyFloatToInt(Method* method,
|
||||
//
|
||||
Type* tmpType = (val->getType() == Type::FloatTy)? Type::IntTy
|
||||
: Type::LongTy;
|
||||
MachineInstr* store = new MachineInstr(ChooseStoreInstruction(tmpType));
|
||||
MachineInstr* store=new MachineInstr(ChooseStoreInstruction(val->getType()));
|
||||
store->SetMachineOperand(0, MachineOperand::MO_VirtualRegister, val);
|
||||
store->SetMachineOperand(1, target.getRegInfo().getFramePointer());
|
||||
store->SetMachineOperand(2, MachineOperand::MO_SignExtendedImmed, offset);
|
||||
|
Loading…
Reference in New Issue
Block a user