diff options
author | Cui,Lili <lili.cui@intel.com> | 2020-06-09 10:43:39 +0800 |
---|---|---|
committer | Cui,Lili <lili.cui@intel.com> | 2020-09-24 10:38:15 +0800 |
commit | 81d54bb7aec30fa09ee564c9a51765dc7c019799 (patch) | |
tree | c07124d5a8d2d6c9f4011f118afe10445ef2cc25 /gas | |
parent | 7469ddd78f8a5adc46dd1a8f883a74066ae4185b (diff) | |
download | binutils-81d54bb7aec30fa09ee564c9a51765dc7c019799.zip binutils-81d54bb7aec30fa09ee564c9a51765dc7c019799.tar.gz binutils-81d54bb7aec30fa09ee564c9a51765dc7c019799.tar.bz2 |
Add support for Intel TDX instructions.
gas/
* NEWS: Add TDX.
* config/tc-i386.c (cpu_arch): Add .tdx.
(cpu_noarch): Likewise.
* doc/c-i386.texi: Document tdx.
* testsuite/gas/i386/i386.exp: Run tdx tests.
* testsuite/gas/i386/tdx.d: Likewise.
* testsuite/gas/i386/tdx.s: Likewise.
* testsuite/gas/i386/x86-64-tdx.d: Likewise.
* testsuite/gas/i386/x86-64-tdx.s: Likewise.
opcodes/
* i386-dis.c (enum): Add PREFIX_0F01_REG_1_RM_5,
PREFIX_0F01_REG_1_RM_6, PREFIX_0F01_REG_1_RM_7,
X86_64_0F01_REG_1_RM_5_P_2, X86_64_0F01_REG_1_RM_6_P_2,
X86_64_0F01_REG_1_RM_7_P_2.
(prefix_table): Likewise.
(x86_64_table): Likewise.
(rm_table): Likewise.
* i386-gen.c (cpu_flag_init): Add CPU_TDX_FLAGS
and CPU_ANY_TDX_FLAGS.
(cpu_flags): Add CpuTDX.
* i386-opc.h (enum): Add CpuTDX.
(i386_cpu_flags): Add cputdx.
* i386-opc.tbl: Add TDX insns.
* i386-init.h: Regenerate.
* i386-tbl.h: Likewise.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 14 | ||||
-rw-r--r-- | gas/NEWS | 1 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 3 | ||||
-rw-r--r-- | gas/doc/c-i386.texi | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/i386.exp | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/tdx.d | 12 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/tdx.s | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-tdx.d | 15 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-tdx.s | 8 |
9 files changed, 62 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index b713493..02e6300 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,4 +1,16 @@ -20200-09-17 Cooper Qu <cooper.qu@linux.alibaba.com> +2020-09-24 Lili Cui <lili.cui@intel.com> + + * NEWS: Add TDX. + * config/tc-i386.c (cpu_arch): Add .tdx. + (cpu_noarch): Likewise. + * doc/c-i386.texi: Document tdx. + * testsuite/gas/i386/i386.exp: Run tdx tests. + * testsuite/gas/i386/tdx.d: Likewise. + * testsuite/gas/i386/tdx.s: Likewise. + * testsuite/gas/i386/x86-64-tdx.d: Likewise. + * testsuite/gas/i386/x86-64-tdx.s: Likewise. + +2020-09-17 Cooper Qu <cooper.qu@linux.alibaba.com> * config/tc-csky.c (parse_type_ctrlreg): Use function csky_get_control_regno to operand. @@ -1,4 +1,5 @@ -*- text -*- +* Add support for Intel TDX instructions. * Add support for Intel Key Locker instructions. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 60b2fea..4891c45a 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1220,6 +1220,8 @@ static const arch_entry cpu_arch[] = CPU_AVX512_BF16_FLAGS, 0 }, { STRING_COMMA_LEN (".avx512_vp2intersect"), PROCESSOR_UNKNOWN, CPU_AVX512_VP2INTERSECT_FLAGS, 0 }, + { STRING_COMMA_LEN (".tdx"), PROCESSOR_UNKNOWN, + CPU_TDX_FLAGS, 0 }, { STRING_COMMA_LEN (".enqcmd"), PROCESSOR_UNKNOWN, CPU_ENQCMD_FLAGS, 0 }, { STRING_COMMA_LEN (".serialize"), PROCESSOR_UNKNOWN, @@ -1282,6 +1284,7 @@ static const noarch_entry cpu_noarch[] = { STRING_COMMA_LEN ("noavx512_bf16"), CPU_ANY_AVX512_BF16_FLAGS }, { STRING_COMMA_LEN ("noavx512_vp2intersect"), CPU_ANY_AVX512_VP2INTERSECT_FLAGS }, + { STRING_COMMA_LEN ("notdx"), CPU_ANY_TDX_FLAGS }, { STRING_COMMA_LEN ("noenqcmd"), CPU_ANY_ENQCMD_FLAGS }, { STRING_COMMA_LEN ("noserialize"), CPU_ANY_SERIALIZE_FLAGS }, { STRING_COMMA_LEN ("notsxldtrk"), CPU_ANY_TSXLDTRK_FLAGS }, diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi index 2bb0955..776fed8 100644 --- a/gas/doc/c-i386.texi +++ b/gas/doc/c-i386.texi @@ -209,6 +209,7 @@ accept various extension mnemonics. For example, @code{avx512_vnni}, @code{avx512_bitalg}, @code{avx512_vp2intersect}, +@code{tdx}, @code{avx512_bf16}, @code{noavx512f}, @code{noavx512cd}, @@ -226,6 +227,7 @@ accept various extension mnemonics. For example, @code{noavx512_vnni}, @code{noavx512_bitalg}, @code{noavx512_vp2intersect}, +@code{notdx}, @code{noavx512_bf16}, @code{noenqcmd}, @code{noserialize}, @@ -1503,6 +1505,7 @@ supported on the CPU specified. The choices for @var{cpu_type} are: @item @samp{.avx512vbmi} @tab @samp{.avx512_4fmaps} @tab @samp{.avx512_4vnniw} @item @samp{.avx512_vpopcntdq} @tab @samp{.avx512_vbmi2} @tab @samp{.avx512_vnni} @item @samp{.avx512_bitalg} @tab @samp{.avx512_bf16} @tab @samp{.avx512_vp2intersect} +@item @samp{.tdx} @item @samp{.clwb} @tab @samp{.rdpid} @tab @samp{.ptwrite} @tab @item @samp{.ibt} @item @samp{.wbnoinvd} @tab @samp{.pconfig} @tab @samp{.waitpkg} @tab @samp{.cldemote} @item @samp{.shstk} @tab @samp{.gfni} @tab @samp{.vaes} @tab @samp{.vpclmulqdq} diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index d34fed2..8d77c9f 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -489,6 +489,7 @@ if [gas_32_check] then { run_dump_test "enqcmd-intel" run_list_test "enqcmd-inval" run_dump_test "serialize" + run_dump_test "tdx" run_dump_test "tsxldtrk" run_dump_test "vp2intersect" run_dump_test "vp2intersect-intel" @@ -1097,6 +1098,7 @@ if [gas_64_check] then { run_dump_test "x86-64-enqcmd-intel" run_list_test "x86-64-enqcmd-inval" run_dump_test "x86-64-serialize" + run_dump_test "x86-64-tdx" run_dump_test "x86-64-tsxldtrk" run_dump_test "x86-64-vp2intersect" run_dump_test "x86-64-vp2intersect-intel" diff --git a/gas/testsuite/gas/i386/tdx.d b/gas/testsuite/gas/i386/tdx.d new file mode 100644 index 0000000..35263be --- /dev/null +++ b/gas/testsuite/gas/i386/tdx.d @@ -0,0 +1,12 @@ +#as: +#objdump: -dw +#name: TDX insns +#source: tdx.s + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +[ ]*[a-f0-9]+: 66 0f 01 cc + tdcall * +#pass diff --git a/gas/testsuite/gas/i386/tdx.s b/gas/testsuite/gas/i386/tdx.s new file mode 100644 index 0000000..6097fe3 --- /dev/null +++ b/gas/testsuite/gas/i386/tdx.s @@ -0,0 +1,5 @@ +# Check TDX instructions. + + .text +_start: + tdcall diff --git a/gas/testsuite/gas/i386/x86-64-tdx.d b/gas/testsuite/gas/i386/x86-64-tdx.d new file mode 100644 index 0000000..ea3e83c --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-tdx.d @@ -0,0 +1,15 @@ +#as: +#objdump: -dw +#name: x86_64 TDX insns +#source: x86-64-tdx.s + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +[ ]*[a-f0-9]+: 66 0f 01 cc + tdcall * +[ ]*[a-f0-9]+: 66 0f 01 cd + seamret * +[ ]*[a-f0-9]+: 66 0f 01 ce + seamops * +[ ]*[a-f0-9]+: 66 0f 01 cf + seamcall * +#pass diff --git a/gas/testsuite/gas/i386/x86-64-tdx.s b/gas/testsuite/gas/i386/x86-64-tdx.s new file mode 100644 index 0000000..1cf4035 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-tdx.s @@ -0,0 +1,8 @@ +# Check TDX instructions. + + .text +_start: + tdcall + seamret + seamops + seamcall |