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 316333ba89aa481830499c5e0b3df95c6d5c4308..1d29372115d31c89dc482af74b297adbbf9776bc 100644 |
--- a/src/compiler/ia32/code-generator-ia32.cc |
+++ b/src/compiler/ia32/code-generator-ia32.cc |
@@ -450,6 +450,30 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
case kIA32Lzcnt: |
__ Lzcnt(i.OutputRegister(), i.InputOperand(0)); |
break; |
+ case kSSEFloat32Cmp: |
+ __ ucomiss(i.InputDoubleRegister(0), i.InputOperand(1)); |
+ break; |
+ case kSSEFloat32Add: |
+ __ addss(i.InputDoubleRegister(0), i.InputOperand(1)); |
+ break; |
+ case kSSEFloat32Sub: |
+ __ subss(i.InputDoubleRegister(0), i.InputOperand(1)); |
+ break; |
+ case kSSEFloat32Mul: |
+ __ mulss(i.InputDoubleRegister(0), i.InputOperand(1)); |
+ break; |
+ case kSSEFloat32Div: |
+ __ divss(i.InputDoubleRegister(0), i.InputOperand(1)); |
+ break; |
+ case kSSEFloat32Max: |
+ __ maxss(i.InputDoubleRegister(0), i.InputOperand(1)); |
+ break; |
+ case kSSEFloat32Min: |
+ __ minss(i.InputDoubleRegister(0), i.InputOperand(1)); |
+ break; |
+ case kSSEFloat32Sqrt: |
+ __ sqrtss(i.OutputDoubleRegister(), i.InputOperand(0)); |
+ break; |
case kSSEFloat64Cmp: |
__ ucomisd(i.InputDoubleRegister(0), i.InputOperand(1)); |
break; |
@@ -506,10 +530,10 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
__ roundsd(i.OutputDoubleRegister(), i.InputDoubleRegister(0), mode); |
break; |
} |
- case kSSECvtss2sd: |
+ case kSSEFloat32ToFloat64: |
__ cvtss2sd(i.OutputDoubleRegister(), i.InputOperand(0)); |
break; |
- case kSSECvtsd2ss: |
+ case kSSEFloat64ToFloat32: |
__ cvtsd2ss(i.OutputDoubleRegister(), i.InputOperand(0)); |
break; |
case kSSEFloat64ToInt32: |
@@ -552,6 +576,42 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
case kSSEFloat64LoadLowWord32: |
__ movd(i.OutputDoubleRegister(), i.InputOperand(0)); |
break; |
+ case kAVXFloat32Add: { |
+ CpuFeatureScope avx_scope(masm(), AVX); |
+ __ vaddss(i.OutputDoubleRegister(), i.InputDoubleRegister(0), |
+ i.InputOperand(1)); |
+ break; |
+ } |
+ case kAVXFloat32Sub: { |
+ CpuFeatureScope avx_scope(masm(), AVX); |
+ __ vsubss(i.OutputDoubleRegister(), i.InputDoubleRegister(0), |
+ i.InputOperand(1)); |
+ break; |
+ } |
+ case kAVXFloat32Mul: { |
+ CpuFeatureScope avx_scope(masm(), AVX); |
+ __ vmulss(i.OutputDoubleRegister(), i.InputDoubleRegister(0), |
+ i.InputOperand(1)); |
+ break; |
+ } |
+ case kAVXFloat32Div: { |
+ CpuFeatureScope avx_scope(masm(), AVX); |
+ __ vdivss(i.OutputDoubleRegister(), i.InputDoubleRegister(0), |
+ i.InputOperand(1)); |
+ break; |
+ } |
+ case kAVXFloat32Max: { |
+ CpuFeatureScope avx_scope(masm(), AVX); |
+ __ vmaxss(i.OutputDoubleRegister(), i.InputDoubleRegister(0), |
+ i.InputOperand(1)); |
+ break; |
+ } |
+ case kAVXFloat32Min: { |
+ CpuFeatureScope avx_scope(masm(), AVX); |
+ __ vminss(i.OutputDoubleRegister(), i.InputDoubleRegister(0), |
+ i.InputOperand(1)); |
+ break; |
+ } |
case kAVXFloat64Add: { |
CpuFeatureScope avx_scope(masm(), AVX); |
__ vaddsd(i.OutputDoubleRegister(), i.InputDoubleRegister(0), |
@@ -747,7 +807,7 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
break; |
} |
} |
-} |
+} // NOLINT(readability/fn_size) |
// Assembles a branch after an instruction. |