Fix disassembling of INVEPT and INVVPID to take operands

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140955 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Craig Topper 2011-10-01 21:20:14 +00:00
parent e1b4a1a07e
commit 846a2dcada
4 changed files with 21 additions and 2 deletions

View File

@ -16,9 +16,15 @@
// VMX instructions
// 66 0F 38 80
def INVEPT : I<0x80, RawFrm, (outs), (ins), "invept", []>, OpSize, T8;
def INVEPT32 : I<0x80, MRMSrcMem, (outs), (ins GR32:$src1, i128mem:$src2),
"invept {$src2, $src1|$src1, $src2}", []>, OpSize, T8;
def INVEPT64 : I<0x80, MRMSrcMem, (outs), (ins GR64:$src1, i128mem:$src2),
"invept {$src2, $src1|$src1, $src2}", []>, OpSize, T8;
// 66 0F 38 81
def INVVPID : I<0x81, RawFrm, (outs), (ins), "invvpid", []>, OpSize, T8;
def INVVPID32 : I<0x81, MRMSrcMem, (outs), (ins GR32:$src1, i128mem:$src2),
"invvpid {$src2, $src1|$src1, $src2}", []>, OpSize, T8;
def INVVPID64 : I<0x81, MRMSrcMem, (outs), (ins GR64:$src1, i128mem:$src2),
"invvpid {$src2, $src1|$src1, $src2}", []>, OpSize, T8;
// 0F 01 C1
def VMCALL : I<0x01, MRM_C1, (outs), (ins), "vmcall", []>, TB;
def VMCLEARm : I<0xC7, MRM6m, (outs), (ins i64mem:$vmcs),

View File

@ -302,3 +302,9 @@
# CHECK: crc32q %rax, %rax
0xf2 0x48 0x0f 0x38 0xf1 0xc0
# CHECK: invept (%rax), %rax
0x66 0x0f 0x38 0x80 0x00
# CHECK: invvpid (%rax), %rax
0x66 0x0f 0x38 0x81 0x00

View File

@ -322,3 +322,8 @@
# CHECK: vroundsd $0, %xmm0, %xmm0, %xmm0
0xc4 0xe3 0x79 0x0b 0xc0 0x00
# CHECK: invept (%eax), %eax
0x66 0x0f 0x38 0x80 0x00
# CHECK: invvpid (%eax), %eax
0x66 0x0f 0x38 0x81 0x00

View File

@ -255,6 +255,8 @@ RecognizableInstr::RecognizableInstr(DisassemblerTables &tables,
Rec->getName() == "REX64_PREFIX" ||
Rec->getName().find("VMREAD64") != Name.npos ||
Rec->getName().find("VMWRITE64") != Name.npos ||
Rec->getName().find("INVEPT64") != Name.npos ||
Rec->getName().find("INVVPID64") != Name.npos ||
Rec->getName().find("MOV64") != Name.npos ||
Rec->getName().find("PUSH64") != Name.npos ||
Rec->getName().find("POP64") != Name.npos;