diff options
author | Igor Tsimbalist <igor.v.tsimbalist@intel.com> | 2018-04-09 12:58:50 +0200 |
---|---|---|
committer | Igor Tsimbalist <igor.v.tsimbalist@intel.com> | 2018-04-11 21:37:12 +0200 |
commit | de89d0a34d52a2d2d28a4ce569e926dd9c7a7d13 (patch) | |
tree | 5212398a0073a3382baa45e65cf6b091762e3111 /gas | |
parent | 6295b6da16f73d5113d24424d1897edbce42bc6a (diff) | |
download | gdb-de89d0a34d52a2d2d28a4ce569e926dd9c7a7d13.zip gdb-de89d0a34d52a2d2d28a4ce569e926dd9c7a7d13.tar.gz gdb-de89d0a34d52a2d2d28a4ce569e926dd9c7a7d13.tar.bz2 |
Enable Intel WAITPKG instructions.
Intel has disclosed a set of new instructions for Tremont processor.
The spec is
https://software.intel.com/en-us/intel-architecture-instruction-set-extensions-programming-reference
This patch enables Intel WAITPKG instructions.
gas/
* config/tc-i386.c (cpu_arch): Add WAITPKG.
(cpu_noarch): Likewise.
* doc/c-i386.texi: Document WAITPKG.
* i386/i386.exp: Run WAITPKG tests.
* testsuite/gas/i386/waitpkg-intel.d: New test.
* testsuite/gas/i386/waitpkg.d: Likewise.
* testsuite/gas/i386/waitpkg.s: Likewise.
* testsuite/gas/i386/x86-64-waitpkg-intel.d: Likewise.
* testsuite/gas/i386/x86-64-waitpkg.d: Likewise.
* testsuite/gas/i386/x86-64-waitpkg.s: Likewise.
opcodes/
* i386-dis.c (enum): Add PREFIX_MOD_0_0FAE_REG_6,
PREFIX_MOD_1_0FAE_REG_6.
(va_mode): New.
(OP_E_register): Use va_mode.
* i386-dis-evex.h (prefix_table):
New instructions (see prefixes above).
* i386-gen.c (cpu_flag_init): Add WAITPKG.
(cpu_flags): Likewise.
* i386-opc.h (enum): Likewise.
(i386_cpu_flags): Likewise.
* i386-opc.tbl: Add umonitor, umwait, tpause.
* i386-init.h: Regenerate.
* i386-tbl.h: Likewise.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 13 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 2 | ||||
-rw-r--r-- | gas/doc/c-i386.texi | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/i386.exp | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/waitpkg-intel.d | 16 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/waitpkg.d | 16 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/waitpkg.s | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-waitpkg-intel.d | 19 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-waitpkg.d | 19 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-waitpkg.s | 11 |
10 files changed, 110 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 894ad7d..d308c04 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,16 @@ +2018-04-11 Igor Tsimbalist <igor.v.tsimbalist@intel.com> + + * config/tc-i386.c (cpu_arch): Add WAITPKG. + (cpu_noarch): Likewise. + * doc/c-i386.texi: Document WAITPKG. + * i386/i386.exp: Run WAITPKG tests. + * testsuite/gas/i386/waitpkg-intel.d: New test. + * testsuite/gas/i386/waitpkg.d: Likewise. + * testsuite/gas/i386/waitpkg.s: Likewise. + * testsuite/gas/i386/x86-64-waitpkg-intel.d: Likewise. + * testsuite/gas/i386/x86-64-waitpkg.d: Likewise. + * testsuite/gas/i386/x86-64-waitpkg.s: Likewise. + 2018-04-11 Alan Modra <amodra@gmail.com> * config/aout_gnu.h: Delete. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index dd7660d..028e062 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1026,6 +1026,8 @@ static const arch_entry cpu_arch[] = CPU_WBNOINVD_FLAGS, 0 }, { STRING_COMMA_LEN (".pconfig"), PROCESSOR_UNKNOWN, CPU_PCONFIG_FLAGS, 0 }, + { STRING_COMMA_LEN (".waitpkg"), PROCESSOR_UNKNOWN, + CPU_WAITPKG_FLAGS, 0 }, }; static const noarch_entry cpu_noarch[] = diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi index 965e0ff..a6e9d04 100644 --- a/gas/doc/c-i386.texi +++ b/gas/doc/c-i386.texi @@ -231,6 +231,7 @@ accept various extension mnemonics. For example, @code{clzero}, @code{wbnoinvd}, @code{pconfig}, +@code{waitpkg}, @code{lwp}, @code{fma4}, @code{xop}, @@ -1272,7 +1273,7 @@ supported on the CPU specified. The choices for @var{cpu_type} are: @item @samp{.avx512_vpopcntdq} @tab @samp{.avx512_vbmi2} @tab @samp{.avx512_vnni} @item @samp{.avx512_bitalg} @item @samp{.clwb} @tab @samp{.rdpid} @tab @samp{.ptwrite} @tab @item @samp{.ibt} -@item @samp{.wbnoinvd} @tab @samp{.pconfig} +@item @samp{.wbnoinvd} @tab @samp{.pconfig} @tab @samp{.waitpkg} @item @samp{.shstk} @tab @samp{.gfni} @tab @samp{.vaes} @tab @samp{.vpclmulqdq} @item @samp{.3dnow} @tab @samp{.3dnowa} @tab @samp{.sse4a} @tab @samp{.sse5} @item @samp{.syscall} @tab @samp{.rdtscp} @tab @samp{.svme} @tab @samp{.abm} diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 035d510..93e3082 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -422,6 +422,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] run_dump_test "wbnoinvd-intel" run_dump_test "pconfig" run_dump_test "pconfig-intel" + run_dump_test "waitpkg" + run_dump_test "waitpkg-intel" run_list_test "avx512vl-1" "-al" run_list_test "avx512vl-2" "-al" run_list_test "avx512vl-plain" "-al" @@ -910,6 +912,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t run_dump_test "x86-64-wbnoinvd-intel" run_dump_test "x86-64-pconfig" run_dump_test "x86-64-pconfig-intel" + run_dump_test "x86-64-waitpkg" + run_dump_test "x86-64-waitpkg-intel" run_dump_test "x86-64-fence-as-lock-add-yes" run_dump_test "x86-64-fence-as-lock-add-no" run_dump_test "x86-64-pr20141" diff --git a/gas/testsuite/gas/i386/waitpkg-intel.d b/gas/testsuite/gas/i386/waitpkg-intel.d new file mode 100644 index 0000000..7930f50 --- /dev/null +++ b/gas/testsuite/gas/i386/waitpkg-intel.d @@ -0,0 +1,16 @@ +#as: +#objdump: -dw -Mintel +#name: i386 WAITPKG insns (Intel disassembly) +#source: waitpkg.s + +.*: +file format .* + + +Disassembly of section \.text: + +00000000 <_start>: +[ ]*[a-f0-9]+:[ ]*f3 0f ae f0[ ]*umonitor eax +[ ]*[a-f0-9]+:[ ]*67 f3 0f ae f1[ ]*umonitor cx +[ ]*[a-f0-9]+:[ ]*f2 0f ae f1[ ]*umwait ecx +[ ]*[a-f0-9]+:[ ]*66 0f ae f1[ ]*tpause ecx +#pass diff --git a/gas/testsuite/gas/i386/waitpkg.d b/gas/testsuite/gas/i386/waitpkg.d new file mode 100644 index 0000000..ec3b9ea --- /dev/null +++ b/gas/testsuite/gas/i386/waitpkg.d @@ -0,0 +1,16 @@ +#as: +#objdump: -dw +#name: i386 WAITPKG insns +#source: waitpkg.s + +.*: +file format .* + + +Disassembly of section \.text: + +00000000 <_start>: +[ ]*[a-f0-9]+:[ ]*f3 0f ae f0[ ]*umonitor %eax +[ ]*[a-f0-9]+:[ ]*67 f3 0f ae f1[ ]*umonitor %cx +[ ]*[a-f0-9]+:[ ]*f2 0f ae f1[ ]*umwait %ecx +[ ]*[a-f0-9]+:[ ]*66 0f ae f1[ ]*tpause %ecx +#pass diff --git a/gas/testsuite/gas/i386/waitpkg.s b/gas/testsuite/gas/i386/waitpkg.s new file mode 100644 index 0000000..f18229e --- /dev/null +++ b/gas/testsuite/gas/i386/waitpkg.s @@ -0,0 +1,8 @@ +# Check 32bit WAITPKG instructions. + + .text +_start: + umonitor %eax + umonitor %cx + umwait %ecx + tpause %ecx diff --git a/gas/testsuite/gas/i386/x86-64-waitpkg-intel.d b/gas/testsuite/gas/i386/x86-64-waitpkg-intel.d new file mode 100644 index 0000000..e70be23 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-waitpkg-intel.d @@ -0,0 +1,19 @@ +#as: +#objdump: -dw -Mintel +#name: x86_64 WAITPKG insns (Intel disassembly) +#source: x86-64-waitpkg.s + +.*: +file format .* + + +Disassembly of section \.text: + +0+ <_start>: +[ ]*[a-f0-9]+:[ ]*f3 0f ae f0[ ]*umonitor rax +[ ]*[a-f0-9]+:[ ]*f3 41 0f ae f2[ ]*umonitor r10 +[ ]*[a-f0-9]+:[ ]*67 f3 41 0f ae f2[ ]*umonitor r10d +[ ]*[a-f0-9]+:[ ]*f2 0f ae f1[ ]*umwait rcx +[ ]*[a-f0-9]+:[ ]*f2 41 0f ae f2[ ]*umwait r10 +[ ]*[a-f0-9]+:[ ]*66 0f ae f1[ ]*tpause rcx +[ ]*[a-f0-9]+:[ ]*66 41 0f ae f2[ ]*tpause r10 +#pass diff --git a/gas/testsuite/gas/i386/x86-64-waitpkg.d b/gas/testsuite/gas/i386/x86-64-waitpkg.d new file mode 100644 index 0000000..0930aa2 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-waitpkg.d @@ -0,0 +1,19 @@ +#as: +#objdump: -dw +#name: x86_64 WAITPKG insns +#source: x86-64-waitpkg.s + +.*: +file format .* + + +Disassembly of section \.text: + +0+ <_start>: +[ ]*[a-f0-9]+:[ ]*f3 0f ae f0[ ]*umonitor %rax +[ ]*[a-f0-9]+:[ ]*f3 41 0f ae f2[ ]*umonitor %r10 +[ ]*[a-f0-9]+:[ ]*67 f3 41 0f ae f2[ ]*umonitor %r10d +[ ]*[a-f0-9]+:[ ]*f2 0f ae f1[ ]*umwait %rcx +[ ]*[a-f0-9]+:[ ]*f2 41 0f ae f2[ ]*umwait %r10 +[ ]*[a-f0-9]+:[ ]*66 0f ae f1[ ]*tpause %rcx +[ ]*[a-f0-9]+:[ ]*66 41 0f ae f2[ ]*tpause %r10 +#pass diff --git a/gas/testsuite/gas/i386/x86-64-waitpkg.s b/gas/testsuite/gas/i386/x86-64-waitpkg.s new file mode 100644 index 0000000..7899c39 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-waitpkg.s @@ -0,0 +1,11 @@ +# Check 64bit WAITPKG instructions. + + .text +_start: + umonitor %rax + umonitor %r10 + umonitor %r10d + umwait %rcx + umwait %r10 + tpause %rcx + tpause %r10 |