From f03fe4c1100351b498e353d4f3ec126df634e2ca Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 12 Feb 2008 05:35:36 +0000 Subject: [PATCH] gas/ 2008-02-11 H.J. Lu * config/tc-i386.c (cpu_arch): Add .xsave. (md_show_usage): Add .xsave. * doc/c-i386.texi: Add xsave to -march=. gas/testsuite/ 2008-02-11 H.J. Lu * gas/i386/arch-10.s: Add xgetbv. * gas/i386/arch-10.d: Updated. * gas/i386/arch-10-1.l: Likewise. * gas/i386/arch-10-2.l: Likewise. * gas/i386/arch-10-3.l: Likewise. * gas/i386/arch-10-4.l: Likewise. * gas/i386/x86-64-arch-10.d: Likewise. opcodes/ 2008-02-11 H.J. Lu * i386-gen.c (cpu_flag_init): Add CPU_XSAVE_FLAGS. * i386-init.h: Updated. --- gas/ChangeLog | 7 ++++++ gas/config/tc-i386.c | 6 +++-- gas/doc/c-i386.texi | 1 + gas/testsuite/ChangeLog | 11 +++++++++ gas/testsuite/gas/i386/arch-10-1.l | 31 ++++++++++++++----------- gas/testsuite/gas/i386/arch-10-2.l | 31 ++++++++++++++----------- gas/testsuite/gas/i386/arch-10-3.l | 31 ++++++++++++++----------- gas/testsuite/gas/i386/arch-10-4.l | 31 ++++++++++++++----------- gas/testsuite/gas/i386/arch-10.d | 3 ++- gas/testsuite/gas/i386/arch-10.s | 2 ++ gas/testsuite/gas/i386/x86-64-arch-10.d | 3 ++- opcodes/ChangeLog | 5 ++++ opcodes/i386-gen.c | 2 ++ opcodes/i386-init.h | 4 ++++ 14 files changed, 108 insertions(+), 60 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 1286b3a524..c55b1928d6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2008-02-11 H.J. Lu + + * config/tc-i386.c (cpu_arch): Add .xsave. + (md_show_usage): Add .xsave. + + * doc/c-i386.texi: Add xsave to -march=. + 2008-02-07 Alan Modra * read.c (s_weakref): Don't pass unadorned NULL to concat. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index c68fde75a4..2170aed787 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -623,6 +623,8 @@ static const arch_entry cpu_arch[] = CPU_VMX_FLAGS }, { ".smx", PROCESSOR_UNKNOWN, CPU_SMX_FLAGS }, + { ".xsave", PROCESSOR_UNKNOWN, + CPU_XSAVE_FLAGS }, { ".3dnow", PROCESSOR_UNKNOWN, CPU_3DNOW_FLAGS }, { ".3dnowa", PROCESSOR_UNKNOWN, @@ -7408,8 +7410,8 @@ md_show_usage (stream) generic32, generic64\n\ EXTENSION is combination of:\n\ mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, sse4,\n\ - vmx, smx, 3dnow, 3dnowa, sse4a, sse5, svme, abm,\n\ - padlock\n")); + vmx, smx, xsave, 3dnow, 3dnowa, sse4a, sse5, svme,\n\ + abm, padlock\n")); fprintf (stream, _("\ -mtune=CPU optimize for CPU, CPU is one of:\n\ i8086, i186, i286, i386, i486, pentium, pentiumpro,\n\ diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi index 721d857f65..838d72e0d7 100644 --- a/gas/doc/c-i386.texi +++ b/gas/doc/c-i386.texi @@ -122,6 +122,7 @@ accept various extension mnemonics. For example, @code{sse4}, @code{vmx}, @code{smx}, +@code{xsave}, @code{3dnow}, @code{3dnowa}, @code{sse4a}, diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index a24e8bc0d2..dde198707e 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2008-02-11 H.J. Lu + + * gas/i386/arch-10.s: Add xgetbv. + + * gas/i386/arch-10.d: Updated. + * gas/i386/arch-10-1.l: Likewise. + * gas/i386/arch-10-2.l: Likewise. + * gas/i386/arch-10-3.l: Likewise. + * gas/i386/arch-10-4.l: Likewise. + * gas/i386/x86-64-arch-10.d: Likewise. + 2002-02-11 H.J. Lu * gas/i386/i386.exp: Run xsave, xsave-intel, x86-64-xsave diff --git a/gas/testsuite/gas/i386/arch-10-1.l b/gas/testsuite/gas/i386/arch-10-1.l index c5fc40e829..8feaf904a6 100644 --- a/gas/testsuite/gas/i386/arch-10-1.l +++ b/gas/testsuite/gas/i386/arch-10-1.l @@ -16,6 +16,7 @@ .*:32: Error: .* .*:34: Error: .* .*:36: Error: .* +.*:38: Error: .* GAS LISTING .* @@ -42,17 +43,19 @@ GAS LISTING .* [ ]*20[ ]+vmxoff [ ]*21[ ]+\# SMX [ ]*22[ ]+getsec -[ ]*23[ ]+\# 3DNow -[ ]*24[ ]+pmulhrw %mm4,%mm3 -[ ]*25[ ]+\# 3DNow Extensions -[ ]*26[ ]+pswapd %mm4,%mm3 -[ ]*27[ ]+\# SSE4a -[ ]*28[ ]+insertq %xmm2,%xmm1 -[ ]*29[ ]+\# SVME -[ ]*30[ ]+vmload -[ ]*31[ ]+\# ABM -[ ]*32[ ]+lzcnt %ecx,%ebx -[ ]*33[ ]+\# SSE5 -[ ]*34[ ]+frczss %xmm2, %xmm1 -[ ]*35[ ]+\# PadLock -[ ]*36[ ]+xstorerng +[ ]*23[ ]+\# Xsave +[ ]*24[ ]+xgetbv +[ ]*25[ ]+\# 3DNow +[ ]*26[ ]+pmulhrw %mm4,%mm3 +[ ]*27[ ]+\# 3DNow Extensions +[ ]*28[ ]+pswapd %mm4,%mm3 +[ ]*29[ ]+\# SSE4a +[ ]*30[ ]+insertq %xmm2,%xmm1 +[ ]*31[ ]+\# SVME +[ ]*32[ ]+vmload +[ ]*33[ ]+\# ABM +[ ]*34[ ]+lzcnt %ecx,%ebx +[ ]*35[ ]+\# SSE5 +[ ]*36[ ]+frczss %xmm2, %xmm1 +[ ]*37[ ]+\# PadLock +[ ]*38[ ]+xstorerng diff --git a/gas/testsuite/gas/i386/arch-10-2.l b/gas/testsuite/gas/i386/arch-10-2.l index 5c174dd8ad..430b0c2094 100644 --- a/gas/testsuite/gas/i386/arch-10-2.l +++ b/gas/testsuite/gas/i386/arch-10-2.l @@ -15,6 +15,7 @@ .*:32: Error: .* .*:34: Error: .* .*:36: Error: .* +.*:38: Error: .* GAS LISTING .* @@ -41,17 +42,19 @@ GAS LISTING .* [ ]*20[ ]+vmxoff [ ]*21[ ]+\# SMX [ ]*22[ ]+getsec -[ ]*23[ ]+\# 3DNow -[ ]*24[ ]+pmulhrw %mm4,%mm3 -[ ]*25[ ]+\# 3DNow Extensions -[ ]*26[ ]+pswapd %mm4,%mm3 -[ ]*27[ ]+\# SSE4a -[ ]*28[ ]+insertq %xmm2,%xmm1 -[ ]*29[ ]+\# SVME -[ ]*30[ ]+vmload -[ ]*31[ ]+\# ABM -[ ]*32[ ]+lzcnt %ecx,%ebx -[ ]*33[ ]+\# SSE5 -[ ]*34[ ]+frczss %xmm2, %xmm1 -[ ]*35[ ]+\# PadLock -[ ]*36[ ]+xstorerng +[ ]*23[ ]+\# Xsave +[ ]*24[ ]+xgetbv +[ ]*25[ ]+\# 3DNow +[ ]*26[ ]+pmulhrw %mm4,%mm3 +[ ]*27[ ]+\# 3DNow Extensions +[ ]*28[ ]+pswapd %mm4,%mm3 +[ ]*29[ ]+\# SSE4a +[ ]*30[ ]+insertq %xmm2,%xmm1 +[ ]*31[ ]+\# SVME +[ ]*32[ ]+vmload +[ ]*33[ ]+\# ABM +[ ]*34[ ]+lzcnt %ecx,%ebx +[ ]*35[ ]+\# SSE5 +[ ]*36[ ]+frczss %xmm2, %xmm1 +[ ]*37[ ]+\# PadLock +[ ]*38[ ]+xstorerng diff --git a/gas/testsuite/gas/i386/arch-10-3.l b/gas/testsuite/gas/i386/arch-10-3.l index e628e8b257..f7320e50b3 100644 --- a/gas/testsuite/gas/i386/arch-10-3.l +++ b/gas/testsuite/gas/i386/arch-10-3.l @@ -8,6 +8,7 @@ .*:32: Error: .* .*:34: Error: .* .*:36: Error: .* +.*:38: Error: .* GAS LISTING .* @@ -37,17 +38,19 @@ GAS LISTING .* [ ]*20[ ]+vmxoff [ ]*21[ ]+\# SMX [ ]*22[ ]+getsec -[ ]*23[ ]+\# 3DNow -[ ]*24[ ]+pmulhrw %mm4,%mm3 -[ ]*25[ ]+\# 3DNow Extensions -[ ]*26[ ]+pswapd %mm4,%mm3 -[ ]*27[ ]+\# SSE4a -[ ]*28[ ]+insertq %xmm2,%xmm1 -[ ]*29[ ]+\# SVME -[ ]*30[ ]+vmload -[ ]*31[ ]+\# ABM -[ ]*32[ ]+lzcnt %ecx,%ebx -[ ]*33[ ]+\# SSE5 -[ ]*34[ ]+frczss %xmm2, %xmm1 -[ ]*35[ ]+\# PadLock -[ ]*36[ ]+xstorerng +[ ]*23[ ]+\# Xsave +[ ]*24[ ]+xgetbv +[ ]*25[ ]+\# 3DNow +[ ]*26[ ]+pmulhrw %mm4,%mm3 +[ ]*27[ ]+\# 3DNow Extensions +[ ]*28[ ]+pswapd %mm4,%mm3 +[ ]*29[ ]+\# SSE4a +[ ]*30[ ]+insertq %xmm2,%xmm1 +[ ]*31[ ]+\# SVME +[ ]*32[ ]+vmload +[ ]*33[ ]+\# ABM +[ ]*34[ ]+lzcnt %ecx,%ebx +[ ]*35[ ]+\# SSE5 +[ ]*36[ ]+frczss %xmm2, %xmm1 +[ ]*37[ ]+\# PadLock +[ ]*38[ ]+xstorerng diff --git a/gas/testsuite/gas/i386/arch-10-4.l b/gas/testsuite/gas/i386/arch-10-4.l index 670f8e7035..3cda861ea5 100644 --- a/gas/testsuite/gas/i386/arch-10-4.l +++ b/gas/testsuite/gas/i386/arch-10-4.l @@ -6,6 +6,7 @@ .*:32: Error: .* .*:34: Error: .* .*:36: Error: .* +.*:38: Error: .* GAS LISTING .* @@ -35,17 +36,19 @@ GAS LISTING .* [ ]*20[ ]+\?\?\?\? 0F01C4 vmxoff [ ]*21[ ]+\# SMX [ ]*22[ ]+\?\?\?\? 0F37 getsec -[ ]*23[ ]+\# 3DNow -[ ]*24[ ]+pmulhrw %mm4,%mm3 -[ ]*25[ ]+\# 3DNow Extensions -[ ]*26[ ]+pswapd %mm4,%mm3 -[ ]*27[ ]+\# SSE4a -[ ]*28[ ]+insertq %xmm2,%xmm1 -[ ]*29[ ]+\# SVME -[ ]*30[ ]+vmload -[ ]*31[ ]+\# ABM -[ ]*32[ ]+lzcnt %ecx,%ebx -[ ]*33[ ]+\# SSE5 -[ ]*34[ ]+frczss %xmm2, %xmm1 -[ ]*35[ ]+\# PadLock -[ ]*36[ ]+xstorerng +[ ]*23[ ]+\# Xsave +[ ]*24[ ]+xgetbv +[ ]*25[ ]+\# 3DNow +[ ]*26[ ]+pmulhrw %mm4,%mm3 +[ ]*27[ ]+\# 3DNow Extensions +[ ]*28[ ]+pswapd %mm4,%mm3 +[ ]*29[ ]+\# SSE4a +[ ]*30[ ]+insertq %xmm2,%xmm1 +[ ]*31[ ]+\# SVME +[ ]*32[ ]+vmload +[ ]*33[ ]+\# ABM +[ ]*34[ ]+lzcnt %ecx,%ebx +[ ]*35[ ]+\# SSE5 +[ ]*36[ ]+frczss %xmm2, %xmm1 +[ ]*37[ ]+\# PadLock +[ ]*38[ ]+xstorerng diff --git a/gas/testsuite/gas/i386/arch-10.d b/gas/testsuite/gas/i386/arch-10.d index c089b76d7a..81e659895f 100644 --- a/gas/testsuite/gas/i386/arch-10.d +++ b/gas/testsuite/gas/i386/arch-10.d @@ -1,4 +1,4 @@ -#as: -march=i686+sse4+vmx+smx+sse5+3dnowa+svme+padlock +#as: -march=i686+sse4+vmx+smx+xsave+sse5+3dnowa+svme+padlock #objdump: -dw #name: i386 arch 10 @@ -17,6 +17,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: f2 0f 38 f1 d9 crc32l %ecx,%ebx [ ]*[a-f0-9]+: 0f 01 c4 vmxoff [ ]*[a-f0-9]+: 0f 37 getsec +[ ]*[a-f0-9]+: 0f 01 d0 xgetbv [ ]*[a-f0-9]+: 0f 0f dc b7 pmulhrw %mm4,%mm3 [ ]*[a-f0-9]+: 0f 0f dc bb pswapd %mm4,%mm3 [ ]*[a-f0-9]+: f2 0f 79 ca insertq %xmm2,%xmm1 diff --git a/gas/testsuite/gas/i386/arch-10.s b/gas/testsuite/gas/i386/arch-10.s index 97478ed0d5..e5e799d584 100644 --- a/gas/testsuite/gas/i386/arch-10.s +++ b/gas/testsuite/gas/i386/arch-10.s @@ -20,6 +20,8 @@ crc32 %ecx,%ebx vmxoff # SMX getsec +# Xsave +xgetbv # 3DNow pmulhrw %mm4,%mm3 # 3DNow Extensions diff --git a/gas/testsuite/gas/i386/x86-64-arch-10.d b/gas/testsuite/gas/i386/x86-64-arch-10.d index 1e1a31e720..dd4689d06a 100644 --- a/gas/testsuite/gas/i386/x86-64-arch-10.d +++ b/gas/testsuite/gas/i386/x86-64-arch-10.d @@ -1,5 +1,5 @@ #source: arch-10.s -#as: -march=generic64+sse4+vmx+smx+sse5+3dnowa+svme+padlock +#as: -march=generic64+sse4+vmx+smx+xsave+sse5+3dnowa+svme+padlock #objdump: -dw #name: x86-64 arch 10 @@ -18,6 +18,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: f2 0f 38 f1 d9 crc32l %ecx,%ebx [ ]*[a-f0-9]+: 0f 01 c4 vmxoff [ ]*[a-f0-9]+: 0f 37 getsec +[ ]*[a-f0-9]+: 0f 01 d0 xgetbv [ ]*[a-f0-9]+: 0f 0f dc b7 pmulhrw %mm4,%mm3 [ ]*[a-f0-9]+: 0f 0f dc bb pswapd %mm4,%mm3 [ ]*[a-f0-9]+: f2 0f 79 ca insertq %xmm2,%xmm1 diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 69a13a6a4b..1477e8cfbc 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2008-02-11 H.J. Lu + + * i386-gen.c (cpu_flag_init): Add CPU_XSAVE_FLAGS. + * i386-init.h: Updated. + 2008-02-11 H.J. Lu * i386-gen.c (cpu_flags): Add CpuXsave. diff --git a/opcodes/i386-gen.c b/opcodes/i386-gen.c index d4acab1f5a..269759b8b3 100644 --- a/opcodes/i386-gen.c +++ b/opcodes/i386-gen.c @@ -100,6 +100,8 @@ static initializer cpu_flag_init [] = "CpuVMX" }, { "CPU_SMX_FLAGS", "CpuSMX" }, + { "CPU_XSAVE_FLAGS", + "CpuXsave" }, { "CPU_3DNOW_FLAGS", "CpuMMX|Cpu3dnow" }, { "CPU_3DNOWA_FLAGS", diff --git a/opcodes/i386-init.h b/opcodes/i386-init.h index e338099937..831f7f843c 100644 --- a/opcodes/i386-init.h +++ b/opcodes/i386-init.h @@ -138,6 +138,10 @@ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } +#define CPU_XSAVE_FLAGS \ + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } } + #define CPU_3DNOW_FLAGS \ { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } -- 2.34.1