xref: /aosp_15_r20/external/llvm/lib/Target/X86/X86InstrVMX.td (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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