Jia Liu | b22310f | 2012-02-18 12:03:15 +0000 | [diff] [blame] | 1 | //===-- X86InstrSVM.td - SVM Instruction Set Extension -----*- tablegen -*-===// |
| 2 | // |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 3 | // The LLVM Compiler Infrastructure |
| 4 | // |
| 5 | // This file is distributed under the University of Illinois Open Source |
| 6 | // License. See LICENSE.TXT for details. |
Jia Liu | b22310f | 2012-02-18 12:03:15 +0000 | [diff] [blame] | 7 | // |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 8 | //===----------------------------------------------------------------------===// |
| 9 | // |
| 10 | // This file describes the instructions that make up the AMD SVM instruction |
| 11 | // set. |
| 12 | // |
| 13 | //===----------------------------------------------------------------------===// |
| 14 | |
| 15 | //===----------------------------------------------------------------------===// |
| 16 | // SVM instructions |
| 17 | |
Simon Pilgrim | 6b7cd86 | 2017-12-07 14:35:17 +0000 | [diff] [blame] | 18 | let SchedRW = [WriteSystem] in { |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 19 | // 0F 01 D9 |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 20 | def VMMCALL : I<0x01, MRM_D9, (outs), (ins), "vmmcall", []>, TB; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 21 | |
| 22 | // 0F 01 DC |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 23 | def STGI : I<0x01, MRM_DC, (outs), (ins), "stgi", []>, TB; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 24 | |
| 25 | // 0F 01 DD |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 26 | def CLGI : I<0x01, MRM_DD, (outs), (ins), "clgi", []>, TB; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 27 | |
| 28 | // 0F 01 DE |
| 29 | let Uses = [EAX] in |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 30 | def SKINIT : I<0x01, MRM_DE, (outs), (ins), "skinit\t{%eax|eax}", []>, TB; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 31 | |
| 32 | // 0F 01 D8 |
| 33 | let Uses = [EAX] in |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 34 | def VMRUN32 : I<0x01, MRM_D8, (outs), (ins), "vmrun\t{%eax|eax}", []>, TB, |
| 35 | Requires<[Not64BitMode]>; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 36 | let Uses = [RAX] in |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 37 | def VMRUN64 : I<0x01, MRM_D8, (outs), (ins), "vmrun\t{%rax|rax}", []>, TB, |
| 38 | Requires<[In64BitMode]>; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 39 | |
| 40 | // 0F 01 DA |
| 41 | let Uses = [EAX] in |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 42 | def VMLOAD32 : I<0x01, MRM_DA, (outs), (ins), "vmload\t{%eax|eax}", []>, TB, |
| 43 | Requires<[Not64BitMode]>; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 44 | let Uses = [RAX] in |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 45 | def VMLOAD64 : I<0x01, MRM_DA, (outs), (ins), "vmload\t{%rax|rax}", []>, TB, |
| 46 | Requires<[In64BitMode]>; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 47 | |
| 48 | // 0F 01 DB |
| 49 | let Uses = [EAX] in |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 50 | def VMSAVE32 : I<0x01, MRM_DB, (outs), (ins), "vmsave\t{%eax|eax}", []>, TB, |
| 51 | Requires<[Not64BitMode]>; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 52 | let Uses = [RAX] in |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 53 | def VMSAVE64 : I<0x01, MRM_DB, (outs), (ins), "vmsave\t{%rax|rax}", []>, TB, |
| 54 | Requires<[In64BitMode]>; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 55 | |
| 56 | // 0F 01 DF |
| 57 | let Uses = [EAX, ECX] in |
| 58 | def INVLPGA32 : I<0x01, MRM_DF, (outs), (ins), |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 59 | "invlpga\t{%eax, %ecx|eax, ecx}", []>, TB, Requires<[Not64BitMode]>; |
Craig Topper | 57d3aae | 2012-02-18 08:34:12 +0000 | [diff] [blame] | 60 | let Uses = [RAX, ECX] in |
| 61 | def INVLPGA64 : I<0x01, MRM_DF, (outs), (ins), |
Simon Pilgrim | 0cd0fbd | 2018-04-12 12:09:24 +0000 | [diff] [blame] | 62 | "invlpga\t{%rax, %ecx|rax, ecx}", []>, TB, Requires<[In64BitMode]>; |
Simon Pilgrim | 4164009 | 2017-11-27 14:39:50 +0000 | [diff] [blame] | 63 | } // SchedRW |