diff options
| author | 2015-09-18 14:36:49 +0100 | |
|---|---|---|
| committer | 2015-09-18 14:47:38 +0100 | |
| commit | 46fe0650be6a69f63b54c0967194350c6a145557 (patch) | |
| tree | 951c08c8993ad0da72dd96a651617a00a00d102e /compiler | |
| parent | 46aa836b632b5f01e8b4c8e5d8eed2199e8f35d0 (diff) | |
Fix x64's cmpw.
Change-Id: If700f2994990864c8b34aa52eb7a767153a1f917
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/utils/x86_64/assembler_x86_64.cc | 2 | ||||
| -rw-r--r-- | compiler/utils/x86_64/assembler_x86_64_test.cc | 26 |
2 files changed, 26 insertions, 2 deletions
diff --git a/compiler/utils/x86_64/assembler_x86_64.cc b/compiler/utils/x86_64/assembler_x86_64.cc index 89d7915f04..6e7d74d528 100644 --- a/compiler/utils/x86_64/assembler_x86_64.cc +++ b/compiler/utils/x86_64/assembler_x86_64.cc @@ -1213,8 +1213,8 @@ void X86_64Assembler::xchgl(CpuRegister reg, const Address& address) { void X86_64Assembler::cmpw(const Address& address, const Immediate& imm) { AssemblerBuffer::EnsureCapacity ensured(&buffer_); + EmitOperandSizeOverride(); EmitOptionalRex32(address); - EmitUint8(0x66); EmitComplex(7, address, imm); } diff --git a/compiler/utils/x86_64/assembler_x86_64_test.cc b/compiler/utils/x86_64/assembler_x86_64_test.cc index 82378f724a..00bb5ca36b 100644 --- a/compiler/utils/x86_64/assembler_x86_64_test.cc +++ b/compiler/utils/x86_64/assembler_x86_64_test.cc @@ -755,10 +755,34 @@ TEST_F(AssemblerX86_64Test, 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"; + GetAssembler()->movw(x86_64::Address(x86_64::CpuRegister(x86_64::RAX), 0), + x86_64::Immediate(0)); + GetAssembler()->movw(x86_64::Address(x86_64::CpuRegister(x86_64::R9), 0), + x86_64::Immediate(0)); + GetAssembler()->movw(x86_64::Address(x86_64::CpuRegister(x86_64::R14), 0), + x86_64::Immediate(0)); + const char* expected = + "movw %R9w, 0(%RAX)\n" + "movw $0, 0(%RAX)\n" + "movw $0, 0(%R9)\n" + "movw $0, 0(%R14)\n"; DriverStr(expected, "movw"); } +TEST_F(AssemblerX86_64Test, Cmpw) { + GetAssembler()->cmpw(x86_64::Address(x86_64::CpuRegister(x86_64::RAX), 0), + x86_64::Immediate(0)); + GetAssembler()->cmpw(x86_64::Address(x86_64::CpuRegister(x86_64::R9), 0), + x86_64::Immediate(0)); + GetAssembler()->cmpw(x86_64::Address(x86_64::CpuRegister(x86_64::R14), 0), + x86_64::Immediate(0)); + const char* expected = + "cmpw $0, 0(%RAX)\n" + "cmpw $0, 0(%R9)\n" + "cmpw $0, 0(%R14)\n"; + DriverStr(expected, "cmpw"); +} + TEST_F(AssemblerX86_64Test, MovqAddrImm) { GetAssembler()->movq(x86_64::Address(x86_64::CpuRegister(x86_64::RAX), 0), x86_64::Immediate(-5)); |