Reviewers: Jakob,
Message:
There is obvious performance improvement on IA32 when using xorps to solve
the
cvtsi2sd partially written issue. The most benefit case is the
audio-oscillator
of kraken, which is improved by more than 15% and there is no negative
impact on
other cases. And for octane, It seems overall there is also slight
improvement
(about 1%, measure 3 times to calculate its average value) on my x86 PC.
Description:
Use xorps to break the cvtsi2sd unnecessary dependence due to its partially
written
BUG=
Please review this at https://codereview.chromium.org/23654026/
SVN Base: git://github.com/v8/v8.git@master
Affected files (+3, -1 lines):
M src/ia32/lithium-codegen-ia32.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
536f952b1d13f1d6f45cddd8b76df31c73958eec..f9f89150491f4cc3750efc09668f06946522d566
100644
--- a/src/ia32/lithium-codegen-ia32.cc
+++ b/src/ia32/lithium-codegen-ia32.cc
@@ -4974,7 +4974,9 @@ void
LCodeGen::DoInteger32ToDouble(LInteger32ToDouble* instr) {
ASSERT(output->IsDoubleRegister());
if (CpuFeatures::IsSupported(SSE2)) {
CpuFeatureScope scope(masm(), SSE2);
- __ cvtsi2sd(ToDoubleRegister(output), ToOperand(input));
+ XMMRegister output_reg = ToDoubleRegister(output);
+ __ xorps(output_reg, output_reg);
+ __ cvtsi2sd(output_reg, ToOperand(input));
} else if (input->IsRegister()) {
Register input_reg = ToRegister(input);
__ push(input_reg);
--
--
v8-dev mailing list
v8-dev@googlegroups.com
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 v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.