diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp index 6e316f6ec1a26fda15a70a6056c63f2e85a95f8d..f07e83357f313a9c2f8a8c538603b0a85bd7f0c2 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)