[llvm] bc7f6c6 - [X86] Add TDX instructions.
Freddy Ye via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 23 18:36:05 PDT 2020
Author: Freddy Ye
Date: 2020-09-24T09:35:44+08:00
New Revision: bc7f6c6dd8252370e6b485b8193093004644a16d
URL: https://github.com/llvm/llvm-project/commit/bc7f6c6dd8252370e6b485b8193093004644a16d
DIFF: https://github.com/llvm/llvm-project/commit/bc7f6c6dd8252370e6b485b8193093004644a16d.diff
LOG: [X86] Add TDX instructions.
For more details about these instructions, please refer to the latest TDX document: https://software.intel.com/content/www/us/en/develop/articles/intel-trust-domain-extensions.html
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D88006
Added:
llvm/lib/Target/X86/X86InstrTDX.td
Modified:
llvm/lib/Target/X86/X86InstrInfo.td
llvm/test/MC/Disassembler/X86/x86-32.txt
llvm/test/MC/Disassembler/X86/x86-64.txt
llvm/test/MC/X86/x86-32-coverage.s
llvm/test/MC/X86/x86-64.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86InstrInfo.td b/llvm/lib/Target/X86/X86InstrInfo.td
index 14ca9f889e17..99a9ce2fc7e6 100644
--- a/llvm/lib/Target/X86/X86InstrInfo.td
+++ b/llvm/lib/Target/X86/X86InstrInfo.td
@@ -3092,6 +3092,8 @@ include "X86InstrSVM.td"
include "X86InstrTSX.td"
include "X86InstrSGX.td"
+include "X86InstrTDX.td"
+
// AMX instructions
include "X86InstrAMX.td"
diff --git a/llvm/lib/Target/X86/X86InstrTDX.td b/llvm/lib/Target/X86/X86InstrTDX.td
new file mode 100644
index 000000000000..8d7cd6082095
--- /dev/null
+++ b/llvm/lib/Target/X86/X86InstrTDX.td
@@ -0,0 +1,39 @@
+//===- X86InstrTDX.td - TDX Instruction Set Extension -*- tablegen -*===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file describes the instructions that make up the Intel TDX instruction
+// set.
+//
+//===----------------------------------------------------------------------===//
+
+//===----------------------------------------------------------------------===//
+// TDX instructions
+
+// 64-bit only instructions
+let SchedRW = [WriteSystem], Predicates = [In64BitMode] in {
+// SEAMCALL - Call to SEAM VMX-root Operation Module
+def SEAMCALL : I<0x01, MRM_CF, (outs), (ins),
+ "seamcall", []>, PD;
+
+// SEAMRET - Return to Legacy VMX-root Operation
+def SEAMRET : I<0x01, MRM_CD, (outs), (ins),
+ "seamret", []>, PD;
+
+// SEAMOPS - SEAM Operations
+def SEAMOPS : I<0x01, MRM_CE, (outs), (ins),
+ "seamops", []>, PD;
+
+} // SchedRW
+
+// common instructions
+let SchedRW = [WriteSystem] in {
+// TDCALL - Call SEAM Module Functions
+def TDCALL : I<0x01, MRM_CC, (outs), (ins),
+ "tdcall", []>, PD;
+
+} // SchedRW
diff --git a/llvm/test/MC/Disassembler/X86/x86-32.txt b/llvm/test/MC/Disassembler/X86/x86-32.txt
index baa12bf0c179..d223a7214422 100644
--- a/llvm/test/MC/Disassembler/X86/x86-32.txt
+++ b/llvm/test/MC/Disassembler/X86/x86-32.txt
@@ -997,3 +997,6 @@
# CHECK: xresldtrk
0xf2 0x0f 0x01 0xe9
+
+#CHECK: tdcall
+0x66 0x0f 0x01 0xcc
diff --git a/llvm/test/MC/Disassembler/X86/x86-64.txt b/llvm/test/MC/Disassembler/X86/x86-64.txt
index 22374841b0ac..d02cf4c40add 100644
--- a/llvm/test/MC/Disassembler/X86/x86-64.txt
+++ b/llvm/test/MC/Disassembler/X86/x86-64.txt
@@ -700,3 +700,15 @@
# CHECK: xresldtrk
0xf2 0x0f 0x01 0xe9
+
+#CHECK: seamcall
+0x66 0x0f 0x01 0xcf
+
+#CHECK: seamret
+0x66 0x0f 0x01 0xcd
+
+#CHECK: seamops
+0x66 0x0f 0x01 0xce
+
+#CHECK: tdcall
+0x66 0x0f 0x01 0xcc
diff --git a/llvm/test/MC/X86/x86-32-coverage.s b/llvm/test/MC/X86/x86-32-coverage.s
index 4e199c7af188..906d5946313c 100644
--- a/llvm/test/MC/X86/x86-32-coverage.s
+++ b/llvm/test/MC/X86/x86-32-coverage.s
@@ -10888,3 +10888,7 @@ xsusldtrk
// CHECK: xresldtrk
// CHECK: encoding: [0xf2,0x0f,0x01,0xe9]
xresldtrk
+
+// CHECK: tdcall
+// CHECK: encoding: [0x66,0x0f,0x01,0xcc]
+tdcall
\ No newline at end of file
diff --git a/llvm/test/MC/X86/x86-64.s b/llvm/test/MC/X86/x86-64.s
index 911aa294fbd0..eb4ac1d8ef04 100644
--- a/llvm/test/MC/X86/x86-64.s
+++ b/llvm/test/MC/X86/x86-64.s
@@ -1998,3 +1998,19 @@ movl $1, (%rbp,%rbx,4)
movl $1, (%r13,%rbx,4)
{disp8} movl $1, (%r13,%rbx,4)
{disp32} movl $1, (%r13,%rbx,4)
+
+// CHECK: seamcall
+// CHECK: encoding: [0x66,0x0f,0x01,0xcf]
+seamcall
+
+// CHECK: seamret
+// CHECK: encoding: [0x66,0x0f,0x01,0xcd]
+seamret
+
+// CHECK: seamops
+// CHECK: encoding: [0x66,0x0f,0x01,0xce]
+seamops
+
+// CHECK: tdcall
+// CHECK: encoding: [0x66,0x0f,0x01,0xcc]
+tdcall
More information about the llvm-commits
mailing list