diff options
author | Terry Guo <xuepeng.guo@intel.com> | 2018-11-05 13:28:48 +0800 |
---|---|---|
committer | Cui,Lili <lili.cui@intel.com> | 2020-09-23 10:47:44 +0800 |
commit | c4694f172b51a2168b8cc15109ab1b97fc0bcb9c (patch) | |
tree | 1c50e8425fdad64ae7dd733b0f377e392fa3ee52 /gas | |
parent | 9fcff415820e37db422500d80c78df32fa2f34f6 (diff) | |
download | gdb-c4694f172b51a2168b8cc15109ab1b97fc0bcb9c.zip gdb-c4694f172b51a2168b8cc15109ab1b97fc0bcb9c.tar.gz gdb-c4694f172b51a2168b8cc15109ab1b97fc0bcb9c.tar.bz2 |
Enable support to Intel Keylocker instructions
gas/
* NEWS: Add Key Locker.
* config/tc-i386.c (cpu_arch): Add .kl and .wide_kl.
(cpu_noarch): Likewise.
* doc/c-i386.texi: Document kl and wide_kl.
* testsuite/gas/i386/i386.exp: Run keylocker tests.
* testsuite/gas/i386/keylocker-intel.d: New test.
* testsuite/gas/i386/keylocker.d: Likewise.
* testsuite/gas/i386/keylocker.s: Likewise.
* testsuite/gas/i386/x86-64-keylocker-intel.d: Likewise.
* testsuite/gas/i386/x86-64-keylocker.d: Likewise.
* testsuite/gas/i386/x86-64-keylocker.s: Likewise.
* testsuite/gas/i386/x86-64-property-10.d: Likewise.
* testsuite/gas/i386/property-10.d: Likewise.
* testsuite/gas/i386/property-10.s: Likewise.
opcodes/
* i386-dis.c (enum): Add REG_0F38D8_PREFIX_1,
MOD_0F38FA_PREFIX_1, MOD_0F38FB_PREFIX_1,
MOD_0F38DC_PREFIX_1, MOD_0F38DD_PREFIX_1,
MOD_0F38DE_PREFIX_1, MOD_0F38DF_PREFIX_1,
PREFIX_0F38D8, PREFIX_0F38FA, PREFIX_0F38FB.
(reg_table): New instructions (see prefixes above).
(prefix_table): Likewise.
(three_byte_table): Likewise.
(mod_table): Likewise
* i386-gen.c (cpu_flag_init): Add CPU_KL_FLAGS, CPU_WIDE_KL_FLAGS,
CPU_ANY_KL_FLAGS and CPU_ANY_WIDE_KL_FLAGS.
(cpu_flags): Likewise.
(operand_type_init): Likewise.
* i386-opc.h (enum): Add CpuKL and CpuWide_KL.
(i386_cpu_flags): Add cpukl and cpuwide_kl.
* i386-opc.tbl: Add KL and WIDE_KL insns.
* i386-init.h: Regenerate.
* i386-tbl.h: Likewise.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 18 | ||||
-rw-r--r-- | gas/NEWS | 2 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 10 | ||||
-rw-r--r-- | gas/doc/c-i386.texi | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/i386.exp | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/keylocker-intel.d | 34 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/keylocker.d | 34 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/keylocker.s | 33 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/property-10.d | 9 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/property-10.s | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-keylocker-intel.d | 34 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-keylocker.d | 34 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-keylocker.s | 33 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-property-10.d | 10 |
14 files changed, 263 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index ff8fa22..c04b90a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,21 @@ + +2020-09-23 Lili Cui <lili.cui@intel.com> + + * NEWS: Add Key Locker. + * config/tc-i386.c (cpu_arch): Add .kl and .wide_kl. + (cpu_noarch): Likewise. + * doc/c-i386.texi: Document kl and wide_kl. + * testsuite/gas/i386/i386.exp: Run keylocker tests. + * testsuite/gas/i386/keylocker-intel.d: New test. + * testsuite/gas/i386/keylocker.d: Likewise. + * testsuite/gas/i386/keylocker.s: Likewise. + * testsuite/gas/i386/x86-64-keylocker-intel.d: Likewise. + * testsuite/gas/i386/x86-64-keylocker.d: Likewise. + * testsuite/gas/i386/x86-64-keylocker.s: Likewise. + * testsuite/gas/i386/x86-64-property-10.d: Likewise. + * testsuite/gas/i386/property-10.d: Likewise. + * testsuite/gas/i386/property-10.s: Likewise. + 2020-09-21 Alan Modra <amodra@gmail.com> PR 26569 @@ -1,5 +1,7 @@ -*- text -*- +* Add support for Intel Key Locker instructions. + * Added a .nop directive to generate a single no-op instruction in a target neutral manner. This instruction does have an effect on DWARF line number generation, if that is active. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index d237352..60b2fea 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -1232,6 +1232,10 @@ static const arch_entry cpu_arch[] = CPU_SEV_ES_FLAGS, 0 }, { STRING_COMMA_LEN (".tsxldtrk"), PROCESSOR_UNKNOWN, CPU_TSXLDTRK_FLAGS, 0 }, + { STRING_COMMA_LEN (".kl"), PROCESSOR_UNKNOWN, + CPU_KL_FLAGS, 0 }, + { STRING_COMMA_LEN (".widekl"), PROCESSOR_UNKNOWN, + CPU_WIDEKL_FLAGS, 0 }, }; static const noarch_entry cpu_noarch[] = @@ -1281,6 +1285,8 @@ static const noarch_entry cpu_noarch[] = { STRING_COMMA_LEN ("noenqcmd"), CPU_ANY_ENQCMD_FLAGS }, { STRING_COMMA_LEN ("noserialize"), CPU_ANY_SERIALIZE_FLAGS }, { STRING_COMMA_LEN ("notsxldtrk"), CPU_ANY_TSXLDTRK_FLAGS }, + { STRING_COMMA_LEN ("nokl"), CPU_ANY_KL_FLAGS }, + { STRING_COMMA_LEN ("nowidekl"), CPU_ANY_WIDEKL_FLAGS }, }; #ifdef I386COFF @@ -9199,7 +9205,9 @@ output_insn (void) || i.tm.base_opcode == 0xf77 /* emms */ || i.tm.base_opcode == 0xf0e /* femms */) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_MMX; - if ((i.xstate & xstate_xmm)) + if ((i.xstate & xstate_xmm) + || i.tm.cpu_flags.bitfield.cpuwidekl + || i.tm.cpu_flags.bitfield.cpukl) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_XMM; if ((i.xstate & xstate_ymm) == xstate_ymm) x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_YMM; diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi index 64a563a..2bb0955 100644 --- a/gas/doc/c-i386.texi +++ b/gas/doc/c-i386.texi @@ -189,6 +189,10 @@ accept various extension mnemonics. For example, @code{enqcmd}, @code{serialize}, @code{tsxldtrk}, +@code{kl}, +@code{nokl}, +@code{widekl}, +@code{nowidekl}, @code{avx512f}, @code{avx512cd}, @code{avx512er}, @@ -1504,6 +1508,7 @@ supported on the CPU specified. The choices for @var{cpu_type} are: @item @samp{.shstk} @tab @samp{.gfni} @tab @samp{.vaes} @tab @samp{.vpclmulqdq} @item @samp{.movdiri} @tab @samp{.movdir64b} @tab @samp{.enqcmd} @tab @samp{.tsxldtrk} @item @samp{.amx_int8} @tab @samp{.amx_bf16} @tab @samp{.amx_tile} +@item @samp{.kl} @tab @samp{.widekl} @item @samp{.3dnow} @tab @samp{.3dnowa} @tab @samp{.sse4a} @tab @samp{.sse5} @item @samp{.syscall} @tab @samp{.rdtscp} @tab @samp{.svme} @item @samp{.lwp} @tab @samp{.fma4} @tab @samp{.xop} @tab @samp{.cx16} diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 132e5d7..d34fed2 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -493,6 +493,8 @@ if [gas_32_check] then { run_dump_test "vp2intersect" run_dump_test "vp2intersect-intel" run_list_test "vp2intersect-inval-bcast" + run_dump_test "keylocker" + run_dump_test "keylocker-intel" run_list_test "avx512vl-1" "-al" run_list_test "avx512vl-2" "-al" run_list_test "avx512vl-ambig" @@ -639,6 +641,7 @@ if [gas_32_check] then { run_dump_test "property-4" run_dump_test "property-5" run_dump_test "property-6" + run_dump_test "property-10" if {[istarget "*-*-linux*"]} then { run_dump_test "align-branch-3" @@ -1098,6 +1101,8 @@ if [gas_64_check] then { run_dump_test "x86-64-vp2intersect" run_dump_test "x86-64-vp2intersect-intel" run_list_test "x86-64-vp2intersect-inval-bcast" + run_dump_test "x86-64-keylocker" + run_dump_test "x86-64-keylocker-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" @@ -1244,6 +1249,7 @@ if [gas_64_check] then { run_dump_test "x86-64-property-7" run_dump_test "x86-64-property-8" run_dump_test "x86-64-property-9" + run_dump_test "x86-64-property-10" if {[istarget "*-*-linux*"]} then { run_dump_test "x86-64-align-branch-3" diff --git a/gas/testsuite/gas/i386/keylocker-intel.d b/gas/testsuite/gas/i386/keylocker-intel.d new file mode 100644 index 0000000..50061c2 --- /dev/null +++ b/gas/testsuite/gas/i386/keylocker-intel.d @@ -0,0 +1,34 @@ +#as: +#objdump: -dw -Mintel +#name: i386 KEYLOCKER insns (Intel disassembly) +#source: keylocker.s + +.*: +file format .* + + +Disassembly of section \.text: + +00000000 <_start>: +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc f2[ ]*loadiwkey xmm6,xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fa d0[ ]*encodekey128 edx,eax +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fb d0[ ]*encodekey256 edx,eax +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc 52 7e[ ]*aesenc128kl xmm2,\[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 de 52 7e[ ]*aesenc256kl xmm2,\[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dd 52 7e[ ]*aesdec128kl xmm2,\[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 df 52 7e[ ]*aesdec256kl xmm2,\[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 42 7e[ ]*aesencwide128kl \[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 52 7e[ ]*aesencwide256kl \[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 4a 7e[ ]*aesdecwide128kl \[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 5a 7e[ ]*aesdecwide256kl \[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc f2[ ]*loadiwkey xmm6,xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fa d0[ ]*encodekey128 edx,eax +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fb d0[ ]*encodekey256 edx,eax +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc 52 7e[ ]*aesenc128kl xmm2,\[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 de 52 7e[ ]*aesenc256kl xmm2,\[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dd 52 7e[ ]*aesdec128kl xmm2,\[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 df 52 7e[ ]*aesdec256kl xmm2,\[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 42 7e[ ]*aesencwide128kl \[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 52 7e[ ]*aesencwide256kl \[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 4a 7e[ ]*aesdecwide128kl \[edx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 5a 7e[ ]*aesdecwide256kl \[edx\+0x7e\] +#pass diff --git a/gas/testsuite/gas/i386/keylocker.d b/gas/testsuite/gas/i386/keylocker.d new file mode 100644 index 0000000..f372a81 --- /dev/null +++ b/gas/testsuite/gas/i386/keylocker.d @@ -0,0 +1,34 @@ +#as: +#objdump: -dw +#name: i386 KEYLOCKER insns +#source: keylocker.s + +.*: +file format .* + + +Disassembly of section \.text: + +00000000 <_start>: +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc f2[ ]*loadiwkey %xmm2,%xmm6 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fa d0[ ]*encodekey128 %eax,%edx +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fb d0[ ]*encodekey256 %eax,%edx +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc 52 7e[ ]*aesenc128kl 0x7e\(%edx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 de 52 7e[ ]*aesenc256kl 0x7e\(%edx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dd 52 7e[ ]*aesdec128kl 0x7e\(%edx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 df 52 7e[ ]*aesdec256kl 0x7e\(%edx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 42 7e[ ]*aesencwide128kl 0x7e\(%edx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 52 7e[ ]*aesencwide256kl 0x7e\(%edx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 4a 7e[ ]*aesdecwide128kl 0x7e\(%edx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 5a 7e[ ]*aesdecwide256kl 0x7e\(%edx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc f2[ ]*loadiwkey %xmm2,%xmm6 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fa d0[ ]*encodekey128 %eax,%edx +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fb d0[ ]*encodekey256 %eax,%edx +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc 52 7e[ ]*aesenc128kl 0x7e\(%edx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 de 52 7e[ ]*aesenc256kl 0x7e\(%edx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dd 52 7e[ ]*aesdec128kl 0x7e\(%edx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 df 52 7e[ ]*aesdec256kl 0x7e\(%edx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 42 7e[ ]*aesencwide128kl 0x7e\(%edx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 52 7e[ ]*aesencwide256kl 0x7e\(%edx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 4a 7e[ ]*aesdecwide128kl 0x7e\(%edx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 5a 7e[ ]*aesdecwide256kl 0x7e\(%edx\) +#pass diff --git a/gas/testsuite/gas/i386/keylocker.s b/gas/testsuite/gas/i386/keylocker.s new file mode 100644 index 0000000..3b8532c --- /dev/null +++ b/gas/testsuite/gas/i386/keylocker.s @@ -0,0 +1,33 @@ +# Check 32bit KEYLOCKER instructions + + .text +_start: + loadiwkey %xmm2, %xmm6 + encodekey128 %eax, %edx + encodekey256 %eax, %edx + + aesenc128kl 126(%edx), %xmm2 + aesenc256kl 126(%edx), %xmm2 + aesdec128kl 126(%edx), %xmm2 + aesdec256kl 126(%edx), %xmm2 + + aesencwide128kl 126(%edx) + aesencwide256kl 126(%edx) + aesdecwide128kl 126(%edx) + aesdecwide256kl 126(%edx) + + .intel_syntax noprefix + + loadiwkey xmm6, xmm2 + encodekey128 edx, eax + encodekey256 edx, eax + + aesenc128kl xmm2, [edx+126] + aesenc256kl xmm2, [edx+126] + aesdec128kl xmm2, [edx+126] + aesdec256kl xmm2, [edx+126] + + aesencwide128kl [edx+126] + aesencwide256kl [edx+126] + aesdecwide128kl [edx+126] + aesdecwide256kl [edx+126] diff --git a/gas/testsuite/gas/i386/property-10.d b/gas/testsuite/gas/i386/property-10.d new file mode 100644 index 0000000..ad87ca7 --- /dev/null +++ b/gas/testsuite/gas/i386/property-10.d @@ -0,0 +1,9 @@ +#name: i386 property 10 +#as: -mx86-used-note=yes --generate-missing-build-notes=no +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA used: <None> + x86 feature used: x86, XMM diff --git a/gas/testsuite/gas/i386/property-10.s b/gas/testsuite/gas/i386/property-10.s new file mode 100644 index 0000000..8f5e21c --- /dev/null +++ b/gas/testsuite/gas/i386/property-10.s @@ -0,0 +1,2 @@ + .text + aesencwide128kl (%eax) diff --git a/gas/testsuite/gas/i386/x86-64-keylocker-intel.d b/gas/testsuite/gas/i386/x86-64-keylocker-intel.d new file mode 100644 index 0000000..eb463ea --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-keylocker-intel.d @@ -0,0 +1,34 @@ +#as: +#objdump: -dw -Mintel +#name: x86_64 KEYLOCKER insns (Intel disassembly) +#source: x86-64-keylocker.s + +.*: +file format .* + + +Disassembly of section \.text: + +0+ <_start>: +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc f2[ ]*loadiwkey xmm6,xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fa d0[ ]*encodekey128 edx,eax +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fb d0[ ]*encodekey256 edx,eax +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc 52 7e[ ]*aesenc128kl xmm2,\[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 de 52 7e[ ]*aesenc256kl xmm2,\[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dd 52 7e[ ]*aesdec128kl xmm2,\[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 df 52 7e[ ]*aesdec256kl xmm2,\[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 42 7e[ ]*aesencwide128kl \[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 52 7e[ ]*aesencwide256kl \[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 4a 7e[ ]*aesdecwide128kl \[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 5a 7e[ ]*aesdecwide256kl \[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc f2[ ]*loadiwkey xmm6,xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fa d0[ ]*encodekey128 edx,eax +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fb d0[ ]*encodekey256 edx,eax +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc 52 7e[ ]*aesenc128kl xmm2,\[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 de 52 7e[ ]*aesenc256kl xmm2,\[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dd 52 7e[ ]*aesdec128kl xmm2,\[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 df 52 7e[ ]*aesdec256kl xmm2,\[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 42 7e[ ]*aesencwide128kl \[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 52 7e[ ]*aesencwide256kl \[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 4a 7e[ ]*aesdecwide128kl \[rdx\+0x7e\] +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 5a 7e[ ]*aesdecwide256kl \[rdx\+0x7e\] +#pass diff --git a/gas/testsuite/gas/i386/x86-64-keylocker.d b/gas/testsuite/gas/i386/x86-64-keylocker.d new file mode 100644 index 0000000..a52714e --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-keylocker.d @@ -0,0 +1,34 @@ +#as: +#objdump: -dw +#name: x86_64 KEYLOCKER insns +#source: x86-64-keylocker.s + +.*: +file format .* + + +Disassembly of section \.text: + +0+ <_start>: +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc f2[ ]*loadiwkey %xmm2,%xmm6 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fa d0[ ]*encodekey128 %eax,%edx +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fb d0[ ]*encodekey256 %eax,%edx +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc 52 7e[ ]*aesenc128kl 0x7e\(%rdx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 de 52 7e[ ]*aesenc256kl 0x7e\(%rdx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dd 52 7e[ ]*aesdec128kl 0x7e\(%rdx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 df 52 7e[ ]*aesdec256kl 0x7e\(%rdx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 42 7e[ ]*aesencwide128kl 0x7e\(%rdx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 52 7e[ ]*aesencwide256kl 0x7e\(%rdx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 4a 7e[ ]*aesdecwide128kl 0x7e\(%rdx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 5a 7e[ ]*aesdecwide256kl 0x7e\(%rdx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc f2[ ]*loadiwkey %xmm2,%xmm6 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fa d0[ ]*encodekey128 %eax,%edx +[ ]*[a-f0-9]+:[ ]*f3 0f 38 fb d0[ ]*encodekey256 %eax,%edx +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dc 52 7e[ ]*aesenc128kl 0x7e\(%rdx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 de 52 7e[ ]*aesenc256kl 0x7e\(%rdx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 dd 52 7e[ ]*aesdec128kl 0x7e\(%rdx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 df 52 7e[ ]*aesdec256kl 0x7e\(%rdx\),%xmm2 +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 42 7e[ ]*aesencwide128kl 0x7e\(%rdx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 52 7e[ ]*aesencwide256kl 0x7e\(%rdx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 4a 7e[ ]*aesdecwide128kl 0x7e\(%rdx\) +[ ]*[a-f0-9]+:[ ]*f3 0f 38 d8 5a 7e[ ]*aesdecwide256kl 0x7e\(%rdx\) +#pass diff --git a/gas/testsuite/gas/i386/x86-64-keylocker.s b/gas/testsuite/gas/i386/x86-64-keylocker.s new file mode 100644 index 0000000..d55fe03 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-keylocker.s @@ -0,0 +1,33 @@ +# Check 64bit AVX512VBMI2 instructions + + .text +_start: + loadiwkey %xmm2, %xmm6 + encodekey128 %eax, %edx + encodekey256 %eax, %edx + + aesenc128kl 126(%rdx), %xmm2 + aesenc256kl 126(%rdx), %xmm2 + aesdec128kl 126(%rdx), %xmm2 + aesdec256kl 126(%rdx), %xmm2 + + aesencwide128kl 126(%rdx) + aesencwide256kl 126(%rdx) + aesdecwide128kl 126(%rdx) + aesdecwide256kl 126(%rdx) + + .intel_syntax noprefix + + loadiwkey xmm6, xmm2 + encodekey128 edx, eax + encodekey256 edx, eax + + aesenc128kl xmm2, [rdx+126] + aesenc256kl xmm2, [rdx+126] + aesdec128kl xmm2, [rdx+126] + aesdec256kl xmm2, [rdx+126] + + aesencwide128kl [rdx+126] + aesencwide256kl [rdx+126] + aesdecwide128kl [rdx+126] + aesdecwide256kl [rdx+126] diff --git a/gas/testsuite/gas/i386/x86-64-property-10.d b/gas/testsuite/gas/i386/x86-64-property-10.d new file mode 100644 index 0000000..c401ca2 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-property-10.d @@ -0,0 +1,10 @@ +#name: x86-64 property 10 +#source: property-10.s +#as: -mx86-used-note=yes --generate-missing-build-notes=no +#readelf: -n + +Displaying notes found in: .note.gnu.property +[ ]+Owner[ ]+Data size[ ]+Description + GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA used: <None> + x86 feature used: x86, XMM |