Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index ffe1a5291000382daced4ccefc326de2dbe9a8a8..8e1f65c771800d5e501d0e8989dc9af8b9741ca2 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -2015,45 +2015,23 @@ |
XMMRegister left = ToDoubleRegister(instr->left()); |
XMMRegister right = ToDoubleRegister(instr->right()); |
XMMRegister result = ToDoubleRegister(instr->result()); |
+ // All operations except MOD are computed in-place. |
+ DCHECK(instr->op() == Token::MOD || left.is(result)); |
switch (instr->op()) { |
case Token::ADD: |
- if (CpuFeatures::IsSupported(AVX)) { |
- CpuFeatureScope scope(masm(), AVX); |
- __ vaddsd(result, left, right); |
- } else { |
- DCHECK(result.is(left)); |
- __ addsd(left, right); |
- } |
+ __ addsd(left, right); |
break; |
case Token::SUB: |
- if (CpuFeatures::IsSupported(AVX)) { |
- CpuFeatureScope scope(masm(), AVX); |
- __ vsubsd(result, left, right); |
- } else { |
- DCHECK(result.is(left)); |
- __ subsd(left, right); |
- } |
+ __ subsd(left, right); |
break; |
case Token::MUL: |
- if (CpuFeatures::IsSupported(AVX)) { |
- CpuFeatureScope scope(masm(), AVX); |
- __ vmulsd(result, left, right); |
- } else { |
- DCHECK(result.is(left)); |
- __ mulsd(left, right); |
- } |
+ __ mulsd(left, right); |
break; |
case Token::DIV: |
- if (CpuFeatures::IsSupported(AVX)) { |
- CpuFeatureScope scope(masm(), AVX); |
- __ vdivsd(result, left, right); |
- } else { |
- DCHECK(result.is(left)); |
- __ divsd(left, right); |
- // Don't delete this mov. It may improve performance on some CPUs, |
- // when there is a mulsd depending on the result |
- __ movaps(left, left); |
- } |
+ __ divsd(left, right); |
+ // Don't delete this mov. It may improve performance on some CPUs, |
+ // when there is a mulsd depending on the result |
+ __ movaps(left, left); |
break; |
case Token::MOD: { |
XMMRegister xmm_scratch = double_scratch0(); |