Index: lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp =================================================================== --- lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp +++ lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp @@ -961,8 +961,10 @@ attrMask |= ATTR_XD; } - if (insn->rexPrefix & 0x08) + if (insn->rexPrefix & 0x08) { attrMask |= ATTR_REXW; + attrMask &= ~ATTR_ADSIZE; + } /* * JCXZ/JECXZ need special handling for 16-bit mode because the meaning Index: test/MC/Disassembler/X86/x86-64.txt =================================================================== --- test/MC/Disassembler/X86/x86-64.txt +++ test/MC/Disassembler/X86/x86-64.txt @@ -486,3 +486,9 @@ # CHECK: nopq %rax 0x48 0x0f 0x1f 0xC0 + +# CHECK: popq %r14 +0x67 0x49 0x5e + +# CHECK: pushq %r14 +0x67 0x49 0x56