diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index a842a91bbb069..91edc1a81c3f5 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -3471,7 +3471,7 @@ bool X86AsmParser::MatchAndEmitATTInstruction(SMLoc IDLoc, unsigned &Opcode, for (unsigned I = 0, E = array_lengthof(Match); I != E; ++I) { Tmp.back() = Suffixes[I]; - if (MemOp) + if (MemOp && HasVectorReg) MemOp->Mem.Size = MemSize[I]; Match[I] = Match_MnemonicFail; if (MemOp || !HasVectorReg) { diff --git a/llvm/test/MC/X86/x86-64.s b/llvm/test/MC/X86/x86-64.s index a1c7e431cef7e..1b73aced06c7e 100644 --- a/llvm/test/MC/X86/x86-64.s +++ b/llvm/test/MC/X86/x86-64.s @@ -869,6 +869,9 @@ movsx (%rax), %ax // CHECK: encoding: [0x66,0x0f,0xb6,0x00] movzx (%rax), %ax +// CHECK: movzbq 1280(%rbx,%r11), %r12 +// CHECK: encoding: [0x4e,0x0f,0xb6,0xa4,0x1b,0x00,0x05,0x00,0x00] +movzb 1280(%rbx, %r11), %r12 // rdar://7873482 // CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00]