| Index: src/compiler/x87/code-generator-x87.cc
|
| diff --git a/src/compiler/x87/code-generator-x87.cc b/src/compiler/x87/code-generator-x87.cc
|
| index 596b7ab775343b251f55e1014dfce84ddcbe78e0..c0a6303dd8bb9d9fe2a072d10b6dc26d7fa842de 100644
|
| --- a/src/compiler/x87/code-generator-x87.cc
|
| +++ b/src/compiler/x87/code-generator-x87.cc
|
| @@ -1069,6 +1069,28 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
|
| }
|
| break;
|
| }
|
| + case kX87BitcastFI: {
|
| + __ fstp(0);
|
| + __ mov(i.OutputRegister(), MemOperand(esp, 0));
|
| + __ lea(esp, Operand(esp, kFloatSize));
|
| + break;
|
| + }
|
| + case kX87BitcastIF: {
|
| + if (instr->InputAt(0)->IsRegister()) {
|
| + __ lea(esp, Operand(esp, -kFloatSize));
|
| + __ mov(MemOperand(esp, 0), i.InputRegister(0));
|
| + __ fstp(0);
|
| + __ fld_s(MemOperand(esp, 0));
|
| + __ lea(esp, Operand(esp, kFloatSize));
|
| + } else {
|
| + __ lea(esp, Operand(esp, -kDoubleSize));
|
| + __ mov(MemOperand(esp, 0), i.InputRegister(0));
|
| + __ fstp(0);
|
| + __ fld_d(MemOperand(esp, 0));
|
| + __ lea(esp, Operand(esp, kDoubleSize));
|
| + }
|
| + break;
|
| + }
|
| case kX87Lea: {
|
| AddressingMode mode = AddressingModeField::decode(instr->opcode());
|
| // Shorten "leal" to "addl", "subl" or "shll" if the register allocation
|
|
|