Index: src/compiler/ia32/code-generator-ia32.cc |
diff --git a/src/compiler/ia32/code-generator-ia32.cc b/src/compiler/ia32/code-generator-ia32.cc |
index 7a63ff044348f806b965f68491ed76a9d0757cbb..fe86e3aaac635e3d2b91e695ed30d94f245cd434 100644 |
--- a/src/compiler/ia32/code-generator-ia32.cc |
+++ b/src/compiler/ia32/code-generator-ia32.cc |
@@ -462,6 +462,12 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
case kSSEFloat64Div: |
__ divsd(i.InputDoubleRegister(0), i.InputOperand(1)); |
break; |
+ case kSSEFloat64Max: |
+ __ maxsd(i.InputDoubleRegister(0), i.InputOperand(1)); |
+ break; |
+ case kSSEFloat64Min: |
+ __ minsd(i.InputDoubleRegister(0), i.InputOperand(1)); |
+ break; |
case kSSEFloat64Mod: { |
// TODO(dcarney): alignment is wrong. |
__ sub(esp, Immediate(kDoubleSize)); |
@@ -567,6 +573,18 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
i.InputOperand(1)); |
break; |
} |
+ case kAVXFloat64Max: { |
+ CpuFeatureScope avx_scope(masm(), AVX); |
+ __ vmaxsd(i.OutputDoubleRegister(), i.InputDoubleRegister(0), |
+ i.InputOperand(1)); |
+ break; |
+ } |
+ case kAVXFloat64Min: { |
+ CpuFeatureScope avx_scope(masm(), AVX); |
+ __ vminsd(i.OutputDoubleRegister(), i.InputDoubleRegister(0), |
+ i.InputOperand(1)); |
+ break; |
+ } |
case kIA32Movsxbl: |
__ movsx_b(i.OutputRegister(), i.MemoryOperand()); |
break; |