Revert of [x86] Use AVX in Crankshaft when available. (patchset #1 id:1 of https...
authormachenbach <machenbach@chromium.org>
Thu, 22 Jan 2015 21:27:35 +0000 (13:27 -0800)
committerCommit bot <commit-bot@chromium.org>
Thu, 22 Jan 2015 21:27:46 +0000 (21:27 +0000)
Reason for revert:
Breaks chromium vista and XP browser tests:
http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_vista_rel_ng/builds/23

Original issue's description:
> [x86] Use AVX in Crankshaft when available.
>
> R=verwaest@chromium.org
>
> Committed: https://crrev.com/622be8f71e70b6ece4ea6a89bcfa1bc4be5e70c1
> Cr-Commit-Position: refs/heads/master@{#26159}

TBR=verwaest@chromium.org,bmeurer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/863423002

Cr-Commit-Position: refs/heads/master@{#26230}

src/ia32/lithium-codegen-ia32.cc
src/ia32/lithium-ia32.cc
src/x64/lithium-codegen-x64.cc
src/x64/lithium-x64.cc

index ff35b8a..2fd8289 100644 (file)
@@ -1981,43 +1981,19 @@ void LCodeGen::DoArithmeticD(LArithmeticD* instr) {
   XMMRegister result = ToDoubleRegister(instr->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: {
       // Pass two doubles as arguments on the stack.
index 51a9b62..1bd771e 100644 (file)
@@ -765,8 +765,7 @@ LInstruction* LChunkBuilder::DoArithmeticD(Token::Value op,
     LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand());
     LOperand* right = UseRegisterAtStart(instr->BetterRightOperand());
     LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
-    return CpuFeatures::IsSupported(AVX) ? DefineAsRegister(result)
-                                         : DefineSameAsFirst(result);
+    return DefineSameAsFirst(result);
   }
 }
 
index c9ac471..7760b46 100644 (file)
@@ -2002,45 +2002,23 @@ void LCodeGen::DoArithmeticD(LArithmeticD* instr) {
   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();
index 045cc10..8d79ba6 100644 (file)
@@ -748,8 +748,7 @@ LInstruction* LChunkBuilder::DoArithmeticD(Token::Value op,
     LOperand* left = UseRegisterAtStart(instr->BetterLeftOperand());
     LOperand* right = UseRegisterAtStart(instr->BetterRightOperand());
     LArithmeticD* result = new(zone()) LArithmeticD(op, left, right);
-    return CpuFeatures::IsSupported(AVX) ? DefineAsRegister(result)
-                                         : DefineSameAsFirst(result);
+    return DefineSameAsFirst(result);
   }
 }