diff options
author | Maksim Panchenko <maks@fb.com> | 2018-07-05 23:32:42 +0000 |
---|---|---|
committer | Maksim Panchenko <maks@fb.com> | 2018-07-05 23:32:42 +0000 |
commit | 89e4abe7b740d78ee6b926bf5dac7420bb688983 (patch) | |
tree | b29a37a82259ae9e1bb7f23e57ec35fa72fd55e6 /llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp | |
parent | 9e412ec8f2996258f9c6b04f96c5b063cb288c7b (diff) | |
download | bcm5719-llvm-89e4abe7b740d78ee6b926bf5dac7420bb688983.tar.gz bcm5719-llvm-89e4abe7b740d78ee6b926bf5dac7420bb688983.zip |
[X86][Disassembler] Fix LOCK prefix disassembler support
Summary:
If LOCK prefix is not the first prefix in an instruction, LLVM
disassembler silently drops the prefix.
The fix is to select a proper instruction with a builtin LOCK prefix if
one exists.
Reviewers: craig.topper
Reviewed By: craig.topper
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D49001
llvm-svn: 336400
Diffstat (limited to 'llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp')
-rw-r--r-- | llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp index 7badda457f4..1ac304f3be0 100644 --- a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp +++ b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp @@ -298,6 +298,9 @@ static bool isREX(struct InternalInstruction *insn, uint8_t prefix) { static void setPrefixPresent(struct InternalInstruction *insn, uint8_t prefix) { uint8_t nextByte; switch (prefix) { + case 0xf0: + insn->hasLockPrefix = true; + break; case 0xf2: case 0xf3: if (lookAtByte(insn, &nextByte)) |