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.