[x64] Use movaps instead of movsd for the move between double registers.
authorweiliang.lin <weiliang.lin@intel.com>
Tue, 3 Mar 2015 06:34:15 +0000 (22:34 -0800)
committerCommit bot <commit-bot@chromium.org>
Tue, 3 Mar 2015 06:34:25 +0000 (06:34 +0000)
Review URL: https://codereview.chromium.org/972053002

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

src/compiler/x64/code-generator-x64.cc

index be28bf74d589b5ef08359d6349af79a277c88ef6..921bf207ae02969cdd310539aa6934dc0d5c6809 100644 (file)
@@ -1353,7 +1353,7 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
     XMMRegister src = g.ToDoubleRegister(source);
     if (destination->IsDoubleRegister()) {
       XMMRegister dst = g.ToDoubleRegister(destination);
-      __ movsd(dst, src);
+      __ movaps(dst, src);
     } else {
       DCHECK(destination->IsDoubleStackSlot());
       Operand dst = g.ToOperand(destination);
@@ -1404,9 +1404,9 @@ void CodeGenerator::AssembleSwap(InstructionOperand* source,
     // available as a fixed scratch register.
     XMMRegister src = g.ToDoubleRegister(source);
     XMMRegister dst = g.ToDoubleRegister(destination);
-    __ movsd(xmm0, src);
-    __ movsd(src, dst);
-    __ movsd(dst, xmm0);
+    __ movaps(xmm0, src);
+    __ movaps(src, dst);
+    __ movaps(dst, xmm0);
   } else if (source->IsDoubleRegister() && destination->IsDoubleStackSlot()) {
     // XMM register-memory swap.  We rely on having xmm0
     // available as a fixed scratch register.