From 73bb672904d9111ae7357929966ee584547f5199 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 21 Jan 2010 17:30:14 +0000 Subject: Add xsave64 and xrstor64. gas/testsuite/ 2010-02-21 H.J. Lu * gas/i386/x86-64-xsave.s: Add tests for xsave64 and xrstor64. * gas/i386/x86-64-xsave-intel.d: Updated. * gas/i386/x86-64-xsave.d: Likewise. opcodes/ 2010-02-21 H.J. Lu * i386-dis.c (mod_table): Use FXSAVE on xsave and xrstor. * i386-opc.tbl: Add xsave64 and xrstor64. * i386-tbl.h: Regenerated. --- gas/testsuite/ChangeLog | 7 +++++ gas/testsuite/gas/i386/x86-64-xsave-intel.d | 42 +++++++++++++++++++++++++--- gas/testsuite/gas/i386/x86-64-xsave.d | 42 +++++++++++++++++++++++++--- gas/testsuite/gas/i386/x86-64-xsave.s | 43 ++++++++++++++++++++++++++--- 4 files changed, 122 insertions(+), 12 deletions(-) (limited to 'gas') diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 28b4713..925191e 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2010-02-21 H.J. Lu + + * gas/i386/x86-64-xsave.s: Add tests for xsave64 and xrstor64. + + * gas/i386/x86-64-xsave-intel.d: Updated. + * gas/i386/x86-64-xsave.d: Likewise. + 2010-01-20 Nick Clifton PR 11109 diff --git a/gas/testsuite/gas/i386/x86-64-xsave-intel.d b/gas/testsuite/gas/i386/x86-64-xsave-intel.d index 4659a2e..ae506d6 100644 --- a/gas/testsuite/gas/i386/x86-64-xsave-intel.d +++ b/gas/testsuite/gas/i386/x86-64-xsave-intel.d @@ -8,10 +8,44 @@ Disassembly of section .text: 0+ <_start>: -[ ]*[a-f0-9]+: 41 0f ae 29 xrstor \[r9\] -[ ]*[a-f0-9]+: 41 0f ae 21 xsave \[r9\] [ ]*[a-f0-9]+: 0f 01 d0 xgetbv [ ]*[a-f0-9]+: 0f 01 d1 xsetbv -[ ]*[a-f0-9]+: 0f ae 29 xrstor \[rcx\] -[ ]*[a-f0-9]+: 0f ae 21 xsave \[rcx\] +[ ]*[a-f0-9]+: 0f ae 20 xsave \[rax\] +[ ]*[a-f0-9]+: 41 0f ae 20 xsave \[r8\] +[ ]*[a-f0-9]+: 41 0f ae 24 00 xsave \[r8\+rax\*1\] +[ ]*[a-f0-9]+: 42 0f ae 24 00 xsave \[rax\+r8\*1\] +[ ]*[a-f0-9]+: 43 0f ae 24 38 xsave \[r8\+r15\*1\] +[ ]*[a-f0-9]+: 48 0f ae 20 xsave64 \[rax\] +[ ]*[a-f0-9]+: 49 0f ae 20 xsave64 \[r8\] +[ ]*[a-f0-9]+: 49 0f ae 24 00 xsave64 \[r8\+rax\*1\] +[ ]*[a-f0-9]+: 4a 0f ae 24 00 xsave64 \[rax\+r8\*1\] +[ ]*[a-f0-9]+: 0f ae 28 xrstor \[rax\] +[ ]*[a-f0-9]+: 41 0f ae 28 xrstor \[r8\] +[ ]*[a-f0-9]+: 41 0f ae 2c 00 xrstor \[r8\+rax\*1\] +[ ]*[a-f0-9]+: 42 0f ae 2c 00 xrstor \[rax\+r8\*1\] +[ ]*[a-f0-9]+: 43 0f ae 2c 38 xrstor \[r8\+r15\*1\] +[ ]*[a-f0-9]+: 48 0f ae 28 xrstor64 \[rax\] +[ ]*[a-f0-9]+: 49 0f ae 28 xrstor64 \[r8\] +[ ]*[a-f0-9]+: 49 0f ae 2c 00 xrstor64 \[r8\+rax\*1\] +[ ]*[a-f0-9]+: 4a 0f ae 2c 00 xrstor64 \[rax\+r8\*1\] +[ ]*[a-f0-9]+: 4b 0f ae 2c 38 xrstor64 \[r8\+r15\*1\] +[ ]*[a-f0-9]+: 0f ae 20 xsave \[rax\] +[ ]*[a-f0-9]+: 41 0f ae 20 xsave \[r8\] +[ ]*[a-f0-9]+: 41 0f ae 24 00 xsave \[r8\+rax\*1\] +[ ]*[a-f0-9]+: 42 0f ae 24 00 xsave \[rax\+r8\*1\] +[ ]*[a-f0-9]+: 43 0f ae 24 38 xsave \[r8\+r15\*1\] +[ ]*[a-f0-9]+: 48 0f ae 20 xsave64 \[rax\] +[ ]*[a-f0-9]+: 49 0f ae 20 xsave64 \[r8\] +[ ]*[a-f0-9]+: 49 0f ae 24 00 xsave64 \[r8\+rax\*1\] +[ ]*[a-f0-9]+: 4a 0f ae 24 00 xsave64 \[rax\+r8\*1\] +[ ]*[a-f0-9]+: 0f ae 28 xrstor \[rax\] +[ ]*[a-f0-9]+: 41 0f ae 28 xrstor \[r8\] +[ ]*[a-f0-9]+: 41 0f ae 2c 00 xrstor \[r8\+rax\*1\] +[ ]*[a-f0-9]+: 42 0f ae 2c 00 xrstor \[rax\+r8\*1\] +[ ]*[a-f0-9]+: 43 0f ae 2c 38 xrstor \[r8\+r15\*1\] +[ ]*[a-f0-9]+: 48 0f ae 28 xrstor64 \[rax\] +[ ]*[a-f0-9]+: 49 0f ae 28 xrstor64 \[r8\] +[ ]*[a-f0-9]+: 49 0f ae 2c 00 xrstor64 \[r8\+rax\*1\] +[ ]*[a-f0-9]+: 4a 0f ae 2c 00 xrstor64 \[rax\+r8\*1\] +[ ]*[a-f0-9]+: 4b 0f ae 2c 38 xrstor64 \[r8\+r15\*1\] #pass diff --git a/gas/testsuite/gas/i386/x86-64-xsave.d b/gas/testsuite/gas/i386/x86-64-xsave.d index cf07cda..05114fb 100644 --- a/gas/testsuite/gas/i386/x86-64-xsave.d +++ b/gas/testsuite/gas/i386/x86-64-xsave.d @@ -6,10 +6,44 @@ Disassembly of section .text: 0+ <_start>: -[ ]*[a-f0-9]+: 41 0f ae 29 xrstor \(%r9\) -[ ]*[a-f0-9]+: 41 0f ae 21 xsave \(%r9\) [ ]*[a-f0-9]+: 0f 01 d0 xgetbv [ ]*[a-f0-9]+: 0f 01 d1 xsetbv -[ ]*[a-f0-9]+: 0f ae 29 xrstor \(%rcx\) -[ ]*[a-f0-9]+: 0f ae 21 xsave \(%rcx\) +[ ]*[a-f0-9]+: 0f ae 20 xsave \(%rax\) +[ ]*[a-f0-9]+: 41 0f ae 20 xsave \(%r8\) +[ ]*[a-f0-9]+: 41 0f ae 24 00 xsave \(%r8,%rax,1\) +[ ]*[a-f0-9]+: 42 0f ae 24 00 xsave \(%rax,%r8,1\) +[ ]*[a-f0-9]+: 43 0f ae 24 38 xsave \(%r8,%r15,1\) +[ ]*[a-f0-9]+: 48 0f ae 20 xsave64 \(%rax\) +[ ]*[a-f0-9]+: 49 0f ae 20 xsave64 \(%r8\) +[ ]*[a-f0-9]+: 49 0f ae 24 00 xsave64 \(%r8,%rax,1\) +[ ]*[a-f0-9]+: 4a 0f ae 24 00 xsave64 \(%rax,%r8,1\) +[ ]*[a-f0-9]+: 0f ae 28 xrstor \(%rax\) +[ ]*[a-f0-9]+: 41 0f ae 28 xrstor \(%r8\) +[ ]*[a-f0-9]+: 41 0f ae 2c 00 xrstor \(%r8,%rax,1\) +[ ]*[a-f0-9]+: 42 0f ae 2c 00 xrstor \(%rax,%r8,1\) +[ ]*[a-f0-9]+: 43 0f ae 2c 38 xrstor \(%r8,%r15,1\) +[ ]*[a-f0-9]+: 48 0f ae 28 xrstor64 \(%rax\) +[ ]*[a-f0-9]+: 49 0f ae 28 xrstor64 \(%r8\) +[ ]*[a-f0-9]+: 49 0f ae 2c 00 xrstor64 \(%r8,%rax,1\) +[ ]*[a-f0-9]+: 4a 0f ae 2c 00 xrstor64 \(%rax,%r8,1\) +[ ]*[a-f0-9]+: 4b 0f ae 2c 38 xrstor64 \(%r8,%r15,1\) +[ ]*[a-f0-9]+: 0f ae 20 xsave \(%rax\) +[ ]*[a-f0-9]+: 41 0f ae 20 xsave \(%r8\) +[ ]*[a-f0-9]+: 41 0f ae 24 00 xsave \(%r8,%rax,1\) +[ ]*[a-f0-9]+: 42 0f ae 24 00 xsave \(%rax,%r8,1\) +[ ]*[a-f0-9]+: 43 0f ae 24 38 xsave \(%r8,%r15,1\) +[ ]*[a-f0-9]+: 48 0f ae 20 xsave64 \(%rax\) +[ ]*[a-f0-9]+: 49 0f ae 20 xsave64 \(%r8\) +[ ]*[a-f0-9]+: 49 0f ae 24 00 xsave64 \(%r8,%rax,1\) +[ ]*[a-f0-9]+: 4a 0f ae 24 00 xsave64 \(%rax,%r8,1\) +[ ]*[a-f0-9]+: 0f ae 28 xrstor \(%rax\) +[ ]*[a-f0-9]+: 41 0f ae 28 xrstor \(%r8\) +[ ]*[a-f0-9]+: 41 0f ae 2c 00 xrstor \(%r8,%rax,1\) +[ ]*[a-f0-9]+: 42 0f ae 2c 00 xrstor \(%rax,%r8,1\) +[ ]*[a-f0-9]+: 43 0f ae 2c 38 xrstor \(%r8,%r15,1\) +[ ]*[a-f0-9]+: 48 0f ae 28 xrstor64 \(%rax\) +[ ]*[a-f0-9]+: 49 0f ae 28 xrstor64 \(%r8\) +[ ]*[a-f0-9]+: 49 0f ae 2c 00 xrstor64 \(%r8,%rax,1\) +[ ]*[a-f0-9]+: 4a 0f ae 2c 00 xrstor64 \(%rax,%r8,1\) +[ ]*[a-f0-9]+: 4b 0f ae 2c 38 xrstor64 \(%r8,%r15,1\) #pass diff --git a/gas/testsuite/gas/i386/x86-64-xsave.s b/gas/testsuite/gas/i386/x86-64-xsave.s index 076706f..b32dc6e 100644 --- a/gas/testsuite/gas/i386/x86-64-xsave.s +++ b/gas/testsuite/gas/i386/x86-64-xsave.s @@ -1,11 +1,46 @@ # Check 64bit xsave/xrstor .text _start: - xrstor (%r9) - xsave (%r9) xgetbv xsetbv + xsave (%rax) + xsave (%r8) + xsave (%r8, %rax) + xsave (%rax, %r8) + xsave (%r8, %r15) + xsave64 (%rax) + xsave64 (%r8) + xsave64 (%r8, %rax) + xsave64 (%rax, %r8) + xrstor (%rax) + xrstor (%r8) + xrstor (%r8, %rax) + xrstor (%rax, %r8) + xrstor (%r8, %r15) + xrstor64 (%rax) + xrstor64 (%r8) + xrstor64 (%r8, %rax) + xrstor64 (%rax, %r8) + xrstor64 (%r8, %r15) + .intel_syntax noprefix - xrstor [rcx] - xsave [rcx] + xsave [rax] + xsave [r8] + xsave [r8+rax*1] + xsave [rax+r8*1] + xsave [r8+r15*1] + xsave64 [rax] + xsave64 [r8] + xsave64 [r8+rax*1] + xsave64 [rax+r8*1] + xrstor [rax] + xrstor [r8] + xrstor [r8+rax*1] + xrstor [rax+r8*1] + xrstor [r8+r15*1] + xrstor64 [rax] + xrstor64 [r8] + xrstor64 [r8+rax*1] + xrstor64 [rax+r8*1] + xrstor64 [r8+r15*1] -- cgit v1.1