Browse Source
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.binutils-2_31-branch
17 changed files with 5512 additions and 5249 deletions
@ -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 |
|||
@ -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 |
|||
@ -0,0 +1,8 @@ |
|||
# Check 32bit WAITPKG instructions. |
|||
|
|||
.text |
|||
_start: |
|||
umonitor %eax |
|||
umonitor %cx |
|||
umwait %ecx |
|||
tpause %ecx |
|||
@ -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 |
|||
@ -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 |
|||
@ -0,0 +1,11 @@ |
|||
# Check 64bit WAITPKG instructions. |
|||
|
|||
.text |
|||
_start: |
|||
umonitor %rax |
|||
umonitor %r10 |
|||
umonitor %r10d |
|||
umwait %rcx |
|||
umwait %r10 |
|||
tpause %rcx |
|||
tpause %r10 |
|||
File diff suppressed because it is too large
File diff suppressed because it is too large
Loading…
Reference in new issue