+2008-02-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * 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 <amodra@bigpond.net.au>
* read.c (s_weakref): Don't pass unadorned NULL to concat.
CPU_VMX_FLAGS },
{ ".smx", PROCESSOR_UNKNOWN,
CPU_SMX_FLAGS },
+ { ".xsave", PROCESSOR_UNKNOWN,
+ CPU_XSAVE_FLAGS },
{ ".3dnow", PROCESSOR_UNKNOWN,
CPU_3DNOW_FLAGS },
{ ".3dnowa", PROCESSOR_UNKNOWN,
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\
@code{sse4},
@code{vmx},
@code{smx},
+@code{xsave},
@code{3dnow},
@code{3dnowa},
@code{sse4a},
+2008-02-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * 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 <hongjiu.lu@intel.com>
* gas/i386/i386.exp: Run xsave, xsave-intel, x86-64-xsave
.*:32: Error: .*
.*:34: Error: .*
.*:36: Error: .*
+.*:38: Error: .*
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
.*:32: Error: .*
.*:34: Error: .*
.*:36: Error: .*
+.*:38: Error: .*
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
.*:32: Error: .*
.*:34: Error: .*
.*:36: Error: .*
+.*:38: Error: .*
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
.*:32: Error: .*
.*:34: Error: .*
.*:36: Error: .*
+.*:38: Error: .*
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
-#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
[ ]*[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
vmxoff
# SMX
getsec
+# Xsave
+xgetbv
# 3DNow
pmulhrw %mm4,%mm3
# 3DNow Extensions
#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
[ ]*[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
+2008-02-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * i386-gen.c (cpu_flag_init): Add CPU_XSAVE_FLAGS.
+ * i386-init.h: Updated.
+
2008-02-11 H.J. Lu <hongjiu.lu@intel.com>
* i386-gen.c (cpu_flags): Add CpuXsave.
"CpuVMX" },
{ "CPU_SMX_FLAGS",
"CpuSMX" },
+ { "CPU_XSAVE_FLAGS",
+ "CpuXsave" },
{ "CPU_3DNOW_FLAGS",
"CpuMMX|Cpu3dnow" },
{ "CPU_3DNOWA_FLAGS",
{ { 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 } }