diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-08-24 15:27:11 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-08-24 15:29:39 -0700 |
commit | 6b40c462310066612636ec7434645ec7b46ff135 (patch) | |
tree | 0ecde2251f1c5a73020c5ed2a8f879ca9cfd42fd /gas/testsuite | |
parent | bb1fe4acb8927fc4d451402f3f5fc245144c987e (diff) | |
download | gdb-6b40c462310066612636ec7434645ec7b46ff135.zip gdb-6b40c462310066612636ec7434645ec7b46ff135.tar.gz gdb-6b40c462310066612636ec7434645ec7b46ff135.tar.bz2 |
X86: Add ptwrite instruction
Implement ptwrite instruction defined in Intel64 and IA-32 Architectures
Software Developer’s Manual, June 2016.
gas/
* config/tc-i386.c (cpu_arch): Add .ptwrite.
* doc/c-i386.texi: Document ptwrite and .ptwrite.
* testsuite/gas/i386/i386.exp: Run ptwrite, ptwrite-intel,
x86-64-ptwrite and x86-64-ptwrite-intel.
* testsuite/gas/i386/ptwrite-intel.d: New file.
* testsuite/gas/i386/ptwrite.d: Likewise.
* testsuite/gas/i386/ptwrite.s: Likewise.
* testsuite/gas/i386/x86-64-ptwrite-intel.d: Likewise.
* testsuite/gas/i386/x86-64-ptwrite.d: Likewise.
* testsuite/gas/i386/x86-64-ptwrite.s: Likewise.
opcodes/
* i386-dis.c (PREFIX_MOD_0_0FAE_REG_4): New.
(PREFIX_MOD_3_0FAE_REG_4): Likewise.
(prefix_table): Add PREFIX_MOD_0_0FAE_REG_4 and
PREFIX_MOD_3_0FAE_REG_4.
(mod_table): Use PREFIX_MOD_0_0FAE_REG_4 and
PREFIX_MOD_3_0FAE_REG_4.
* i386-gen.c (cpu_flag_init): Add CPU_PTWRITE_FLAGS.
(cpu_flags): Add CpuPTWRITE.
* i386-opc.h (CpuPTWRITE): New.
(i386_cpu_flags): Add cpuptwrite.
* i386-opc.tbl: Add ptwrite instruction.
* i386-init.h: Regenerated.
* i386-tbl.h: Likewise.
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/gas/i386/i386.exp | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/ptwrite-intel.d | 18 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/ptwrite.d | 18 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/ptwrite.s | 12 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-ptwrite-intel.d | 23 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-ptwrite.d | 23 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-ptwrite.s | 17 |
7 files changed, 115 insertions, 0 deletions
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 61b6b27..a546c26 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -366,6 +366,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] run_dump_test "ospke" run_dump_test "rdpid" run_dump_test "rdpid-intel" + run_dump_test "ptwrite" + run_dump_test "ptwrite-intel" run_list_test "avx512vl-1" "-al" run_list_test "avx512vl-2" "-al" @@ -767,6 +769,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t run_dump_test "x86-64-ospke" run_dump_test "x86-64-rdpid" run_dump_test "x86-64-rdpid-intel" + run_dump_test "x86-64-ptwrite" + run_dump_test "x86-64-ptwrite-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/ptwrite-intel.d b/gas/testsuite/gas/i386/ptwrite-intel.d new file mode 100644 index 0000000..d39609a --- /dev/null +++ b/gas/testsuite/gas/i386/ptwrite-intel.d @@ -0,0 +1,18 @@ +#as: +#objdump: -dw -Mintel +#name: i386 PTWRITE insns (Intel disassembly) +#source: ptwrite.s + +.*: +file format .* + + +Disassembly of section \.text: + +0+ <_start>: + +[a-f0-9]+: f3 0f ae e1 ptwrite ecx + +[a-f0-9]+: f3 0f ae e1 ptwrite ecx + +[a-f0-9]+: f3 0f ae 21 ptwrite DWORD PTR \[ecx\] + +[a-f0-9]+: f3 0f ae 21 ptwrite DWORD PTR \[ecx\] + +[a-f0-9]+: f3 0f ae e1 ptwrite ecx + +[a-f0-9]+: f3 0f ae 21 ptwrite DWORD PTR \[ecx\] +#pass diff --git a/gas/testsuite/gas/i386/ptwrite.d b/gas/testsuite/gas/i386/ptwrite.d new file mode 100644 index 0000000..399c740 --- /dev/null +++ b/gas/testsuite/gas/i386/ptwrite.d @@ -0,0 +1,18 @@ +#as: +#objdump: -dw +#name: i386 PTWRITE insns +#source: ptwrite.s + +.*: +file format .* + + +Disassembly of section \.text: + +0+ <_start>: + +[a-f0-9]+: f3 0f ae e1 ptwrite %ecx + +[a-f0-9]+: f3 0f ae e1 ptwrite %ecx + +[a-f0-9]+: f3 0f ae 21 ptwritel \(%ecx\) + +[a-f0-9]+: f3 0f ae 21 ptwritel \(%ecx\) + +[a-f0-9]+: f3 0f ae e1 ptwrite %ecx + +[a-f0-9]+: f3 0f ae 21 ptwritel \(%ecx\) +#pass diff --git a/gas/testsuite/gas/i386/ptwrite.s b/gas/testsuite/gas/i386/ptwrite.s new file mode 100644 index 0000000..3aa4be7 --- /dev/null +++ b/gas/testsuite/gas/i386/ptwrite.s @@ -0,0 +1,12 @@ +# Check 32bit PTWRITE instructions + + .text +_start: + ptwrite %ecx + ptwritel %ecx + ptwrite (%ecx) + ptwritel (%ecx) + + .intel_syntax noprefix + ptwrite ecx + ptwrite DWORD PTR [ecx] diff --git a/gas/testsuite/gas/i386/x86-64-ptwrite-intel.d b/gas/testsuite/gas/i386/x86-64-ptwrite-intel.d new file mode 100644 index 0000000..37e7945 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-ptwrite-intel.d @@ -0,0 +1,23 @@ +#as: +#objdump: -dw -Mintel +#name: x86_64 PTWRITE insns (Intel disassembly) +#source: x86-64-ptwrite.s + +.*: +file format .* + + +Disassembly of section \.text: + +0+ <_start>: + +[a-f0-9]+: f3 0f ae e1 ptwrite ecx + +[a-f0-9]+: f3 0f ae e1 ptwrite ecx + +[a-f0-9]+: f3 48 0f ae e1 ptwrite rcx + +[a-f0-9]+: f3 48 0f ae e1 ptwrite rcx + +[a-f0-9]+: f3 0f ae 21 ptwrite DWORD PTR \[rcx\] + +[a-f0-9]+: f3 0f ae 21 ptwrite DWORD PTR \[rcx\] + +[a-f0-9]+: f3 48 0f ae 21 ptwrite QWORD PTR \[rcx\] + +[a-f0-9]+: f3 0f ae e1 ptwrite ecx + +[a-f0-9]+: f3 48 0f ae e1 ptwrite rcx + +[a-f0-9]+: f3 0f ae 21 ptwrite DWORD PTR \[rcx\] + +[a-f0-9]+: f3 48 0f ae 21 ptwrite QWORD PTR \[rcx\] +#pass diff --git a/gas/testsuite/gas/i386/x86-64-ptwrite.d b/gas/testsuite/gas/i386/x86-64-ptwrite.d new file mode 100644 index 0000000..75183b0 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-ptwrite.d @@ -0,0 +1,23 @@ +#as: +#objdump: -dw +#name: x86_64 PTWRITE insns +#source: x86-64-ptwrite.s + +.*: +file format .* + + +Disassembly of section \.text: + +0+ <_start>: + +[a-f0-9]+: f3 0f ae e1 ptwrite %ecx + +[a-f0-9]+: f3 0f ae e1 ptwrite %ecx + +[a-f0-9]+: f3 48 0f ae e1 ptwrite %rcx + +[a-f0-9]+: f3 48 0f ae e1 ptwrite %rcx + +[a-f0-9]+: f3 0f ae 21 ptwritel \(%rcx\) + +[a-f0-9]+: f3 0f ae 21 ptwritel \(%rcx\) + +[a-f0-9]+: f3 48 0f ae 21 ptwriteq \(%rcx\) + +[a-f0-9]+: f3 0f ae e1 ptwrite %ecx + +[a-f0-9]+: f3 48 0f ae e1 ptwrite %rcx + +[a-f0-9]+: f3 0f ae 21 ptwritel \(%rcx\) + +[a-f0-9]+: f3 48 0f ae 21 ptwriteq \(%rcx\) +#pass diff --git a/gas/testsuite/gas/i386/x86-64-ptwrite.s b/gas/testsuite/gas/i386/x86-64-ptwrite.s new file mode 100644 index 0000000..2e62b3b --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-ptwrite.s @@ -0,0 +1,17 @@ +# Check 64bit PTWRITE instructions + + .text +_start: + ptwrite %ecx + ptwritel %ecx + ptwrite %rcx + ptwriteq %rcx + ptwrite (%rcx) + ptwritel (%rcx) + ptwriteq (%rcx) + + .intel_syntax noprefix + ptwrite ecx + ptwrite rcx + ptwrite DWORD PTR [rcx] + ptwrite QWORD PTR [rcx] |