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