From 8eab413676a0222a863f45ff606f3db69bb7afc4 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 9 Dec 2015 08:01:57 -0800 Subject: Implement Intel OSPKE instructions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch implements Intel OSPKE instructions documented in Intel64 and IA-32 Architectures Software Developer’s Manual Volume 2, September 2015. gas/testsuite/ * gas/i386/i386.exp: Run ospke and x86-64-ospke. * gas/i386/ospke.d: New file. * gas/i386/ospke.s: Likewise. * gas/i386/x86-64-ospke.d: Likewise. opcodes/ * i386-dis.c (MOD_0F01_REG_5): New. (RM_0F01_REG_5): Likewise. (reg_table): Use MOD_0F01_REG_5. (mod_table): Add MOD_0F01_REG_5. (rm_table): Add RM_0F01_REG_5. * i386-gen.c (cpu_flag_init): Add CPU_OSPKE_FLAGS. (cpu_flags): Add CpuOSPKE. * i386-opc.h (CpuOSPKE): New. (i386_cpu_flags): Add cpuospke. * i386-opc.tbl: Add rdpkru and wrpkru instructions. * i386-init.h: Regenerated. * i386-tbl.h: Likewise. --- gas/config/tc-i386.c | 2 ++ gas/testsuite/ChangeLog | 7 +++++++ gas/testsuite/gas/i386/i386.exp | 2 ++ gas/testsuite/gas/i386/ospke.d | 12 ++++++++++++ gas/testsuite/gas/i386/ospke.s | 6 ++++++ gas/testsuite/gas/i386/x86-64-ospke.d | 13 +++++++++++++ 6 files changed, 42 insertions(+) create mode 100644 gas/testsuite/gas/i386/ospke.d create mode 100644 gas/testsuite/gas/i386/ospke.s create mode 100644 gas/testsuite/gas/i386/x86-64-ospke.d (limited to 'gas') diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index d341193..1573043 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -950,6 +950,8 @@ static const arch_entry cpu_arch[] = CPU_CLZERO_FLAGS, 0, 0 }, { STRING_COMMA_LEN (".mwaitx"), PROCESSOR_UNKNOWN, CPU_MWAITX_FLAGS, 0, 0 }, + { STRING_COMMA_LEN (".ospke"), PROCESSOR_UNKNOWN, + CPU_OSPKE_FLAGS, 0, 0 }, }; #ifdef I386COFF diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 5978a3f..d0f5dea 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2015-12-09 H.J. Lu + + * gas/i386/i386.exp: Run ospke and x86-64-ospke. + * gas/i386/ospke.d: New file. + * gas/i386/ospke.s: Likewise. + * gas/i386/x86-64-ospke.d: Likewise. + 2015-12-09 Jan Beulich * gas/elf/file.d: Allow arbitrary entries at the beginning of diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 1739ba9..d881cd8 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -343,6 +343,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] run_dump_test "disassem" run_dump_test "mwaitx-bdver4" run_list_test "mwaitx-reg" + run_dump_test "ospke" # These tests require support for 8 and 16 bit relocs, # so we only run them for ELF and COFF targets. @@ -729,6 +730,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t run_dump_test "x86-64-clzero" run_dump_test "x86-64-mwaitx-bdver4" run_list_test "x86-64-mwaitx-reg" + run_dump_test "x86-64-ospke" if { ![istarget "*-*-aix*"] && ![istarget "*-*-beos*"] diff --git a/gas/testsuite/gas/i386/ospke.d b/gas/testsuite/gas/i386/ospke.d new file mode 100644 index 0000000..6e0afb0 --- /dev/null +++ b/gas/testsuite/gas/i386/ospke.d @@ -0,0 +1,12 @@ +#name: i386 OSPKE insns +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +0+ <_start>: +[ ]*[a-f0-9]+: 0f 01 ee rdpkru +[ ]*[a-f0-9]+: 0f 01 ef wrpkru +#pass diff --git a/gas/testsuite/gas/i386/ospke.s b/gas/testsuite/gas/i386/ospke.s new file mode 100644 index 0000000..76b66e7 --- /dev/null +++ b/gas/testsuite/gas/i386/ospke.s @@ -0,0 +1,6 @@ +# Check OSPKE instructions. + + .text +_start: + rdpkru + wrpkru diff --git a/gas/testsuite/gas/i386/x86-64-ospke.d b/gas/testsuite/gas/i386/x86-64-ospke.d new file mode 100644 index 0000000..88e7ec0 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-ospke.d @@ -0,0 +1,13 @@ +#source: ospke.s +#name: x86-64 OSPKE insns +#objdump: -dw + +.*: +file format .* + + +Disassembly of section .text: + +0+ <_start>: +[ ]*[a-f0-9]+: 0f 01 ee rdpkru +[ ]*[a-f0-9]+: 0f 01 ef wrpkru +#pass -- cgit v1.1