mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Fixes disassembler crashes on 2013 Haswell RTM instructions.
rdar://13318048 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176828 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d5bb20805e
commit
12dccaed9c
@ -22,7 +22,7 @@ def XBEGIN : I<0, Pseudo, (outs GR32:$dst), (ins),
|
||||
|
||||
let isBranch = 1, isTerminator = 1, Defs = [EAX] in
|
||||
def XBEGIN_4 : Ii32PCRel<0xc7, MRM_F8, (outs), (ins brtarget:$dst),
|
||||
"xbegin\t$dst", []>;
|
||||
"xbegin\t$dst", []>, Requires<[HasRTM]>;
|
||||
|
||||
def XEND : I<0x01, MRM_D5, (outs), (ins),
|
||||
"xend", [(int_x86_xend)]>, TB, Requires<[HasRTM]>;
|
||||
|
@ -103,3 +103,12 @@
|
||||
|
||||
# CHECK: adoxq (%rax), %rax
|
||||
0xf3 0x48 0x0f 0x38 0xf6 0x00
|
||||
|
||||
# CHECK: xbegin 53
|
||||
0xc7 0xf8 0x35 0x00 0x00 0x00
|
||||
|
||||
# CHECK: xend
|
||||
0x0f 0x01 0xd5
|
||||
|
||||
# CHECK: xabort $13
|
||||
0xc6 0xf8 0x0d
|
||||
|
@ -764,6 +764,17 @@ void RecognizableInstr::emitInstructionSpecifier(DisassemblerTables &tables) {
|
||||
HANDLE_OPERAND(immediate)
|
||||
HANDLE_OPERAND(immediate)
|
||||
break;
|
||||
case X86Local::MRM_F8:
|
||||
if (Opcode == 0xc6) {
|
||||
assert(numPhysicalOperands == 1 &&
|
||||
"Unexpected number of operands for X86Local::MRM_F8");
|
||||
HANDLE_OPERAND(immediate)
|
||||
} else if (Opcode == 0xc7) {
|
||||
assert(numPhysicalOperands == 1 &&
|
||||
"Unexpected number of operands for X86Local::MRM_F8");
|
||||
HANDLE_OPERAND(relocation)
|
||||
}
|
||||
break;
|
||||
case X86Local::MRMInitReg:
|
||||
// Ignored.
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user