Reviewers: Benedikt Meurer,

Description:
Version 4.2.21.1 (cherry-pick)

Merged 37b6ce795d87f1de147b1ec935749ccbfde7c89f

Revert of [x86] Use AVX in Crankshaft when available. (patchset #1 id:1 of
https://codereview.chromium.org/860003002/)

[email protected]
BUG=

Please review this at https://codereview.chromium.org/873433002/

Base URL: https://chromium.googlesource.com/v8/v8.git@candidates

Affected files (+19, -67 lines):
  M src/ia32/lithium-codegen-ia32.cc
  M src/ia32/lithium-ia32.cc
  M src/version.cc
  M src/x64/lithium-codegen-x64.cc
  M src/x64/lithium-x64.cc


Index: src/ia32/lithium-codegen-ia32.cc
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc index 076ae7200894551a776f59dfd7a41a23b308f9e7..c884bff23c6e2302e5f70aa247910fb9e40e991b 100644
--- a/src/ia32/lithium-codegen-ia32.cc
+++ b/src/ia32/lithium-codegen-ia32.cc
@@ -1982,43 +1982,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: src/ia32/lithium-ia32.cc
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc
index 51a9b62fb25b1fda34be603146569fc310595329..1bd771efbf6d14baa8a03e72e6ba4b884b4d4b90 100644
--- a/src/ia32/lithium-ia32.cc
+++ b/src/ia32/lithium-ia32.cc
@@ -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: src/version.cc
diff --git a/src/version.cc b/src/version.cc
index 47e29ba6dda178ed01529c0948a91381630ac139..cc381ebc73e3c6242c9b9ad716f9bce042d2559a 100644
--- a/src/version.cc
+++ b/src/version.cc
@@ -35,7 +35,7 @@
 #define MAJOR_VERSION     4
 #define MINOR_VERSION     2
 #define BUILD_NUMBER      21
-#define PATCH_LEVEL       0
+#define PATCH_LEVEL       1
 // Use 1 for candidates and 0 otherwise.
 // (Boolean macro values are not supported by all preprocessors.)
 #define IS_CANDIDATE_VERSION 0
Index: src/x64/lithium-codegen-x64.cc
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
index 7716eae8a4b2fc492129c530b6e76712f9951c31..89f6ebca98e03679ffda02dd75b3a5033077a821 100644
--- a/src/x64/lithium-codegen-x64.cc
+++ b/src/x64/lithium-codegen-x64.cc
@@ -2003,45 +2003,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: src/x64/lithium-x64.cc
diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc
index 045cc108bb24c888a9e7346a70fe22f684ce46cf..8d79ba6512b5442c3937f63f2c9d95f746ed4fbb 100644
--- a/src/x64/lithium-x64.cc
+++ b/src/x64/lithium-x64.cc
@@ -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);
   }
 }



--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to