summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
diff options
context:
space:
mode:
authorMaksim Panchenko <maks@fb.com>2018-07-05 23:32:42 +0000
committerMaksim Panchenko <maks@fb.com>2018-07-05 23:32:42 +0000
commit89e4abe7b740d78ee6b926bf5dac7420bb688983 (patch)
treeb29a37a82259ae9e1bb7f23e57ec35fa72fd55e6 /llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
parent9e412ec8f2996258f9c6b04f96c5b063cb288c7b (diff)
downloadbcm5719-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.cpp3
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))
OpenPOWER on IntegriCloud