1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00

Fix disassembling of INVEPT and INVVPID to take operands

llvm-svn: 140955
This commit is contained in:
Craig Topper 2011-10-01 21:20:14 +00:00
parent 99ad3cc23e
commit 43fd621df8
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;