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 dcd85737da73f60f8c5b2c816909ccaeb51715cb..9b8b823be33beb2d5f76a603c40436a2251e0671 100644 |
--- a/src/compiler/x87/code-generator-x87.cc |
+++ b/src/compiler/x87/code-generator-x87.cc |
@@ -1179,6 +1179,16 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( |
__ lea(esp, Operand(esp, kFloatSize)); |
break; |
} |
+ case kX87Float32Neg: { |
+ if (FLAG_debug_code && FLAG_enable_slow_asserts) { |
+ __ VerifyX87StackDepth(1); |
+ } |
+ __ fstp(0); |
+ __ fld_s(MemOperand(esp, 0)); |
+ __ fchs(); |
+ __ lea(esp, Operand(esp, kFloatSize)); |
+ break; |
+ } |
case kX87Float32Round: { |
RoundingMode mode = |
static_cast<RoundingMode>(MiscField::decode(instr->opcode())); |
@@ -1353,6 +1363,16 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( |
__ lea(esp, Operand(esp, kDoubleSize)); |
break; |
} |
+ case kX87Float64Neg: { |
+ if (FLAG_debug_code && FLAG_enable_slow_asserts) { |
+ __ VerifyX87StackDepth(1); |
+ } |
+ __ fstp(0); |
+ __ fld_d(MemOperand(esp, 0)); |
+ __ fchs(); |
+ __ lea(esp, Operand(esp, kDoubleSize)); |
+ break; |
+ } |
case kX87Int32ToFloat32: { |
InstructionOperand* input = instr->InputAt(0); |
DCHECK(input->IsRegister() || input->IsStackSlot()); |