Fix movw in x86_64 assembler.
Change-Id: Ibceb03fd57adea09643aa77a9399be196fa14709
diff --git a/compiler/utils/x86_64/assembler_x86_64.cc b/compiler/utils/x86_64/assembler_x86_64.cc
index 0d14376..7684271 100644
--- a/compiler/utils/x86_64/assembler_x86_64.cc
+++ b/compiler/utils/x86_64/assembler_x86_64.cc
@@ -283,8 +283,8 @@
void X86_64Assembler::movw(const Address& dst, CpuRegister src) {
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
- EmitOptionalRex32(src, dst);
EmitOperandSizeOverride();
+ EmitOptionalRex32(src, dst);
EmitUint8(0x89);
EmitOperand(src.LowBits(), dst);
}
diff --git a/compiler/utils/x86_64/assembler_x86_64_test.cc b/compiler/utils/x86_64/assembler_x86_64_test.cc
index dc1758f..1f4d727 100644
--- a/compiler/utils/x86_64/assembler_x86_64_test.cc
+++ b/compiler/utils/x86_64/assembler_x86_64_test.cc
@@ -135,6 +135,13 @@
DriverStr(expected, "movl");
}
+TEST_F(AssemblerX86_64Test, Movw) {
+ GetAssembler()->movw(x86_64::Address(x86_64::CpuRegister(x86_64::RAX), 0),
+ x86_64::CpuRegister(x86_64::R9));
+ const char* expected = "movw %R9w, 0(%RAX)\n";
+ DriverStr(expected, "movw");
+}
+
std::string setcc_test_fn(x86_64::X86_64Assembler* assembler) {
// From Condition