From fac2f8829087ccee670ac382e42c21727783ded2 Mon Sep 17 00:00:00 2001 From: Nguyen Anh Quynh <aquynh@gmail.com> Date: Wed, 25 May 2016 13:59:10 +0800 Subject: [PATCH] x86: do not emit extra 0x66 prefix for MOV16sm. this fixes issue #104 --- llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp index 6e316f6..f07e833 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp @@ -1174,8 +1174,10 @@ void X86MCCodeEmitter::EmitOpcodePrefix(uint64_t TSFlags, unsigned &CurByte, { // Emit the operand size opcode prefix as needed. if ((TSFlags & X86II::OpSizeMask) == (is16BitMode(STI) ? X86II::OpSize32 - : X86II::OpSize16)) - EmitByte(0x66, CurByte, OS); + : X86II::OpSize16)) { + if (MI.getOpcode() != X86::MOV16sm) + EmitByte(0x66, CurByte, OS); + } // Emit the LOCK opcode prefix. if (TSFlags & X86II::LOCK) -- GitLab