1*9880d681SAndroid Build Coastguard Worker//===-- X86InstrVMX.td - VMX Instruction Set Extension -----*- tablegen -*-===// 2*9880d681SAndroid Build Coastguard Worker// 3*9880d681SAndroid Build Coastguard Worker// The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker// 5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker// 8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker// 10*9880d681SAndroid Build Coastguard Worker// This file describes the instructions that make up the Intel VMX instruction 11*9880d681SAndroid Build Coastguard Worker// set. 12*9880d681SAndroid Build Coastguard Worker// 13*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 16*9880d681SAndroid Build Coastguard Worker// VMX instructions 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker// 66 0F 38 80 19*9880d681SAndroid Build Coastguard Workerdef INVEPT32 : I<0x80, MRMSrcMem, (outs), (ins GR32:$src1, i128mem:$src2), 20*9880d681SAndroid Build Coastguard Worker "invept\t{$src2, $src1|$src1, $src2}", []>, T8PD, 21*9880d681SAndroid Build Coastguard Worker Requires<[Not64BitMode]>; 22*9880d681SAndroid Build Coastguard Workerdef INVEPT64 : I<0x80, MRMSrcMem, (outs), (ins GR64:$src1, i128mem:$src2), 23*9880d681SAndroid Build Coastguard Worker "invept\t{$src2, $src1|$src1, $src2}", []>, T8PD, 24*9880d681SAndroid Build Coastguard Worker Requires<[In64BitMode]>; 25*9880d681SAndroid Build Coastguard Worker// 66 0F 38 81 26*9880d681SAndroid Build Coastguard Workerdef INVVPID32 : I<0x81, MRMSrcMem, (outs), (ins GR32:$src1, i128mem:$src2), 27*9880d681SAndroid Build Coastguard Worker "invvpid\t{$src2, $src1|$src1, $src2}", []>, T8PD, 28*9880d681SAndroid Build Coastguard Worker Requires<[Not64BitMode]>; 29*9880d681SAndroid Build Coastguard Workerdef INVVPID64 : I<0x81, MRMSrcMem, (outs), (ins GR64:$src1, i128mem:$src2), 30*9880d681SAndroid Build Coastguard Worker "invvpid\t{$src2, $src1|$src1, $src2}", []>, T8PD, 31*9880d681SAndroid Build Coastguard Worker Requires<[In64BitMode]>; 32*9880d681SAndroid Build Coastguard Worker// 0F 01 C1 33*9880d681SAndroid Build Coastguard Workerdef VMCALL : I<0x01, MRM_C1, (outs), (ins), "vmcall", []>, TB; 34*9880d681SAndroid Build Coastguard Workerdef VMCLEARm : I<0xC7, MRM6m, (outs), (ins i64mem:$vmcs), 35*9880d681SAndroid Build Coastguard Worker "vmclear\t$vmcs", []>, PD; 36*9880d681SAndroid Build Coastguard Worker// OF 01 D4 37*9880d681SAndroid Build Coastguard Workerdef VMFUNC : I<0x01, MRM_D4, (outs), (ins), "vmfunc", []>, TB; 38*9880d681SAndroid Build Coastguard Worker// 0F 01 C2 39*9880d681SAndroid Build Coastguard Workerdef VMLAUNCH : I<0x01, MRM_C2, (outs), (ins), "vmlaunch", []>, TB; 40*9880d681SAndroid Build Coastguard Worker// 0F 01 C3 41*9880d681SAndroid Build Coastguard Workerdef VMRESUME : I<0x01, MRM_C3, (outs), (ins), "vmresume", []>, TB; 42*9880d681SAndroid Build Coastguard Workerdef VMPTRLDm : I<0xC7, MRM6m, (outs), (ins i64mem:$vmcs), 43*9880d681SAndroid Build Coastguard Worker "vmptrld\t$vmcs", []>, PS; 44*9880d681SAndroid Build Coastguard Workerdef VMPTRSTm : I<0xC7, MRM7m, (outs), (ins i64mem:$vmcs), 45*9880d681SAndroid Build Coastguard Worker "vmptrst\t$vmcs", []>, TB; 46*9880d681SAndroid Build Coastguard Workerdef VMREAD64rm : I<0x78, MRMDestMem, (outs), (ins i64mem:$dst, GR64:$src), 47*9880d681SAndroid Build Coastguard Worker "vmread{q}\t{$src, $dst|$dst, $src}", []>, PS, Requires<[In64BitMode]>; 48*9880d681SAndroid Build Coastguard Workerdef VMREAD64rr : I<0x78, MRMDestReg, (outs GR64:$dst), (ins GR64:$src), 49*9880d681SAndroid Build Coastguard Worker "vmread{q}\t{$src, $dst|$dst, $src}", []>, PS, Requires<[In64BitMode]>; 50*9880d681SAndroid Build Coastguard Workerdef VMREAD32rm : I<0x78, MRMDestMem, (outs), (ins i32mem:$dst, GR32:$src), 51*9880d681SAndroid Build Coastguard Worker "vmread{l}\t{$src, $dst|$dst, $src}", []>, PS, Requires<[Not64BitMode]>; 52*9880d681SAndroid Build Coastguard Workerdef VMREAD32rr : I<0x78, MRMDestReg, (outs GR32:$dst), (ins GR32:$src), 53*9880d681SAndroid Build Coastguard Worker "vmread{l}\t{$src, $dst|$dst, $src}", []>, PS, Requires<[Not64BitMode]>; 54*9880d681SAndroid Build Coastguard Workerdef VMWRITE64rm : I<0x79, MRMSrcMem, (outs GR64:$dst), (ins i64mem:$src), 55*9880d681SAndroid Build Coastguard Worker "vmwrite{q}\t{$src, $dst|$dst, $src}", []>, PS, Requires<[In64BitMode]>; 56*9880d681SAndroid Build Coastguard Workerdef VMWRITE64rr : I<0x79, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src), 57*9880d681SAndroid Build Coastguard Worker "vmwrite{q}\t{$src, $dst|$dst, $src}", []>, PS, Requires<[In64BitMode]>; 58*9880d681SAndroid Build Coastguard Workerdef VMWRITE32rm : I<0x79, MRMSrcMem, (outs GR32:$dst), (ins i32mem:$src), 59*9880d681SAndroid Build Coastguard Worker "vmwrite{l}\t{$src, $dst|$dst, $src}", []>, PS, Requires<[Not64BitMode]>; 60*9880d681SAndroid Build Coastguard Workerdef VMWRITE32rr : I<0x79, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src), 61*9880d681SAndroid Build Coastguard Worker "vmwrite{l}\t{$src, $dst|$dst, $src}", []>, PS, Requires<[Not64BitMode]>; 62*9880d681SAndroid Build Coastguard Worker// 0F 01 C4 63*9880d681SAndroid Build Coastguard Workerdef VMXOFF : I<0x01, MRM_C4, (outs), (ins), "vmxoff", []>, TB; 64*9880d681SAndroid Build Coastguard Workerdef VMXON : I<0xC7, MRM6m, (outs), (ins i64mem:$vmxon), 65*9880d681SAndroid Build Coastguard Worker "vmxon\t$vmxon", []>, XS; 66*9880d681SAndroid Build Coastguard Worker 67