Revision: 5138
Author: [email protected]
Date: Tue Jul 27 05:02:21 2010
Log: X64: Fix order of operands on movq(reg, xmm).
Fixes bug 792, and the Transcendental cache is the only use of this operation.

Review URL: http://codereview.chromium.org/2806080
http://code.google.com/p/v8/source/detail?r=5138

Modified:
 /branches/bleeding_edge/src/x64/assembler-x64.cc
 /branches/bleeding_edge/src/x64/disasm-x64.cc

=======================================
--- /branches/bleeding_edge/src/x64/assembler-x64.cc Tue Jul 13 06:06:33 2010 +++ /branches/bleeding_edge/src/x64/assembler-x64.cc Tue Jul 27 05:02:21 2010
@@ -2529,10 +2529,10 @@
   EnsureSpace ensure_space(this);
   last_pc_ = pc_;
   emit(0x66);
-  emit_optional_rex_32(dst, src);
+  emit_optional_rex_32(src, dst);
   emit(0x0F);
   emit(0x7E);
-  emit_sse_operand(dst, src);
+  emit_sse_operand(src, dst);
 }


@@ -2551,10 +2551,10 @@
   EnsureSpace ensure_space(this);
   last_pc_ = pc_;
   emit(0x66);
-  emit_rex_64(dst, src);
+  emit_rex_64(src, dst);
   emit(0x0F);
   emit(0x7E);
-  emit_sse_operand(dst, src);
+  emit_sse_operand(src, dst);
 }


=======================================
--- /branches/bleeding_edge/src/x64/disasm-x64.cc       Tue Jun 29 07:03:11 2010
+++ /branches/bleeding_edge/src/x64/disasm-x64.cc       Tue Jul 27 05:02:21 2010
@@ -1019,10 +1019,10 @@
                        NameOfXMMRegister(regop));
         current += PrintRightOperand(current);
       } else if (opcode == 0x7E) {
-        AppendToBuffer("mov%c %s,",
-                       rex_w() ? 'q' : 'd',
-                       NameOfCPURegister(regop));
-        current += PrintRightXMMOperand(current);
+        AppendToBuffer("mov%c ",
+                       rex_w() ? 'q' : 'd');
+        current += PrintRightOperand(current);
+        AppendToBuffer(", %s", NameOfXMMRegister(regop));
       } else {
         const char* mnemonic = "?";
         if (opcode == 0x57) {

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to