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.

Reply via email to