aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2010-07-01 21:55:02 +0000
committerH.J. Lu <hjl.tools@gmail.com>2010-07-01 21:55:02 +0000
commitc7b8aa3a72401a50a5736ed70ad8be809f82321c (patch)
treefa5c00a2fd93fdf002378367c943893fc8b5b898 /gas
parentd41c0fc8a94bc29f0490c841c2823657ad71a279 (diff)
downloadgdb-c7b8aa3a72401a50a5736ed70ad8be809f82321c.zip
gdb-c7b8aa3a72401a50a5736ed70ad8be809f82321c.tar.gz
gdb-c7b8aa3a72401a50a5736ed70ad8be809f82321c.tar.bz2
Support AVX Programming Reference (June, 2010)
gas/ 2010-07-01 H.J. Lu <hongjiu.lu@intel.com> AVX Programming Reference (June, 2010) * config/tc-i386.c (cpu_arch): Add .xsaveopt, .fsgsbase, .rdrnd and .f16c. * doc/c-i386.texi: Document xsaveopt, fsgsbase, rdrnd and f16c. gas/testsuite/ 2010-07-01 H.J. Lu <hongjiu.lu@intel.com> AVX Programming Reference (June, 2010) * gas/i386/arch-10.s: Add xsaveopt. * gas/i386/x86-64-arch-2.s: Likwise. * 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-2.d: Likewise. * gas/i386/f16c-intel.d: New. * gas/i386/f16c.d: Likewise. * gas/i386/f16c.s: Likewise. * gas/i386/fsgs-intel.d: Likewise. * gas/i386/fsgs.d: Likewise. * gas/i386/fsgs.s: Likewise. * gas/i386/rdrnd-intel.d: Likewise. * gas/i386/rdrnd.d: Likewise. * gas/i386/rdrnd.s: Likewise. * gas/i386/x86-64-f16c-intel.d: Likewise. * gas/i386/x86-64-f16c.d: Likewise. * gas/i386/x86-64-f16c.s: Likewise. * gas/i386/x86-64-fsgs-intel.d: Likewise. * gas/i386/x86-64-fsgs.d: Likewise. * gas/i386/x86-64-fsgs.s: Likewise. * gas/i386/x86-64-rdrnd-intel.d: Likewise. * gas/i386/x86-64-rdrnd.d: Likewise. * gas/i386/x86-64-rdrnd.s: Likewise. * gas/i386/i386.exp: Run f16c, f16c-intel, fsgs, fsgs-intel, rdrnd, rdrnd-intel, x86-64-f16c, x86-64-f16c-intel, x86-64-fsgs, x86-64-fsgs-intel, x86-64-rdrnd, x86-64-rdrnd-intel. * gas/i386/x86-64-xsave.s: Add tests for xsaveopt64. * gas/i386/x86-64-xsave-intel.d: Updated. * gas/i386/x86-64-xsave.d: Likewise. opcodes/ 2010-07-01 H.J. Lu <hongjiu.lu@intel.com> AVX Programming Reference (June, 2010) * i386-dis.c (PREFIX_0FAE_REG_0): New. (PREFIX_0FAE_REG_1): Likewise. (PREFIX_0FAE_REG_2): Likewise. (PREFIX_0FAE_REG_3): Likewise. (PREFIX_VEX_3813): Likewise. (PREFIX_VEX_3A1D): Likewise. (prefix_table): Add PREFIX_0FAE_REG_0, PREFIX_0FAE_REG_1, PREFIX_0FAE_REG_2, PREFIX_0FAE_REG_3, PREFIX_VEX_3813 and PREFIX_VEX_3A1D. (vex_table): Add PREFIX_VEX_3813 and PREFIX_VEX_3A1D. (mod_table): Add PREFIX_0FAE_REG_0, PREFIX_0FAE_REG_1, PREFIX_0FAE_REG_2, PREFIX_0FAE_REG_3 xsaveopt and rdrnd. * i386-gen.c (cpu_flag_init): Add CPU_XSAVEOPT_FLAGS, CPU_FSGSBASE_FLAGS, CPU_RDRND_FLAGS and CPU_F16C_FLAGS. (cpu_flags): Add CpuXsaveopt, CpuFSGSBase, CpuRdRnd and CpuF16C. * i386-opc.h (CpuXsaveopt): New. (CpuFSGSBase):Likewise. (CpuRdRnd): Likewise. (CpuF16C): Likewise. (i386_cpu_flags): Add cpuxsaveopt, cpufsgsbase, cpurdrnd and cpuf16c. * i386-opc.tbl: Add xsaveopt, rdfsbase, rdgsbase, rdrnd, wrfsbase, wrgsbase, vcvtph2ps and vcvtps2ph.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/config/tc-i386.c8
-rw-r--r--gas/doc/c-i386.texi11
-rw-r--r--gas/testsuite/ChangeLog41
-rw-r--r--gas/testsuite/gas/i386/arch-10-1.l59
-rw-r--r--gas/testsuite/gas/i386/arch-10-2.l59
-rw-r--r--gas/testsuite/gas/i386/arch-10-3.l59
-rw-r--r--gas/testsuite/gas/i386/arch-10-4.l59
-rw-r--r--gas/testsuite/gas/i386/arch-10.d3
-rw-r--r--gas/testsuite/gas/i386/arch-10.s2
-rw-r--r--gas/testsuite/gas/i386/f16c-intel.d31
-rw-r--r--gas/testsuite/gas/i386/f16c.d30
-rw-r--r--gas/testsuite/gas/i386/f16c.s26
-rw-r--r--gas/testsuite/gas/i386/fsgs-intel.d19
-rw-r--r--gas/testsuite/gas/i386/fsgs.d18
-rw-r--r--gas/testsuite/gas/i386/fsgs.s14
-rw-r--r--gas/testsuite/gas/i386/i386.exp12
-rw-r--r--gas/testsuite/gas/i386/rdrnd-intel.d15
-rw-r--r--gas/testsuite/gas/i386/rdrnd.d14
-rw-r--r--gas/testsuite/gas/i386/rdrnd.s10
-rw-r--r--gas/testsuite/gas/i386/x86-64-arch-2.d3
-rw-r--r--gas/testsuite/gas/i386/x86-64-arch-2.s2
-rw-r--r--gas/testsuite/gas/i386/x86-64-f16c-intel.d31
-rw-r--r--gas/testsuite/gas/i386/x86-64-f16c.d30
-rw-r--r--gas/testsuite/gas/i386/x86-64-f16c.s26
-rw-r--r--gas/testsuite/gas/i386/x86-64-fsgs-intel.d43
-rw-r--r--gas/testsuite/gas/i386/x86-64-fsgs.d42
-rw-r--r--gas/testsuite/gas/i386/x86-64-fsgs.s38
-rw-r--r--gas/testsuite/gas/i386/x86-64-rdrnd-intel.d23
-rw-r--r--gas/testsuite/gas/i386/x86-64-rdrnd.d22
-rw-r--r--gas/testsuite/gas/i386/x86-64-rdrnd.s18
-rw-r--r--gas/testsuite/gas/i386/x86-64-xsave-intel.d18
-rw-r--r--gas/testsuite/gas/i386/x86-64-xsave.d18
-rw-r--r--gas/testsuite/gas/i386/x86-64-xsave.s20
-rw-r--r--gas/testsuite/gas/i386/xsave-intel.d2
-rw-r--r--gas/testsuite/gas/i386/xsave.d2
-rw-r--r--gas/testsuite/gas/i386/xsave.s2
37 files changed, 721 insertions, 117 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 887d7ce..ef3ac8b 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,11 @@
+2010-07-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ AVX Programming Reference (June, 2010)
+ * config/tc-i386.c (cpu_arch): Add .xsaveopt, .fsgsbase, .rdrnd
+ and .f16c.
+
+ * doc/c-i386.texi: Document xsaveopt, fsgsbase, rdrnd and f16c.
+
2010-07-01 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
* config/tc-arm.c (do_t_mov_cmp): Fix reporting of unpredictable and
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index f5c249a..d065b90 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -663,12 +663,20 @@ static const arch_entry cpu_arch[] =
CPU_SMX_FLAGS, 0 },
{ STRING_COMMA_LEN (".xsave"), PROCESSOR_UNKNOWN,
CPU_XSAVE_FLAGS, 0 },
+ { STRING_COMMA_LEN (".xsaveopt"), PROCESSOR_UNKNOWN,
+ CPU_XSAVEOPT_FLAGS, 0 },
{ STRING_COMMA_LEN (".aes"), PROCESSOR_UNKNOWN,
CPU_AES_FLAGS, 0 },
{ STRING_COMMA_LEN (".pclmul"), PROCESSOR_UNKNOWN,
CPU_PCLMUL_FLAGS, 0 },
{ STRING_COMMA_LEN (".clmul"), PROCESSOR_UNKNOWN,
CPU_PCLMUL_FLAGS, 1 },
+ { STRING_COMMA_LEN (".fsgsbase"), PROCESSOR_UNKNOWN,
+ CPU_FSGSBASE_FLAGS, 0 },
+ { STRING_COMMA_LEN (".rdrnd"), PROCESSOR_UNKNOWN,
+ CPU_RDRND_FLAGS, 0 },
+ { STRING_COMMA_LEN (".f16c"), PROCESSOR_UNKNOWN,
+ CPU_F16C_FLAGS, 0 },
{ STRING_COMMA_LEN (".fma"), PROCESSOR_UNKNOWN,
CPU_FMA_FLAGS, 0 },
{ STRING_COMMA_LEN (".fma4"), PROCESSOR_UNKNOWN,
diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi
index db78591..9f4d742 100644
--- a/gas/doc/c-i386.texi
+++ b/gas/doc/c-i386.texi
@@ -136,8 +136,12 @@ accept various extension mnemonics. For example,
@code{vmx},
@code{smx},
@code{xsave},
+@code{xsaveopt},
@code{aes},
@code{pclmul},
+@code{fsgsbase},
+@code{rdrnd},
+@code{f16c},
@code{fma},
@code{movbe},
@code{ept},
@@ -930,9 +934,10 @@ supported on the CPU specified. The choices for @var{cpu_type} are:
@item @samp{generic32} @tab @samp{generic64}
@item @samp{.mmx} @tab @samp{.sse} @tab @samp{.sse2} @tab @samp{.sse3}
@item @samp{.ssse3} @tab @samp{.sse4.1} @tab @samp{.sse4.2} @tab @samp{.sse4}
-@item @samp{.avx} @tab @samp{.vmx} @tab @samp{.smx} @tab @samp{.xsave}
-@item @samp{.aes} @tab @samp{.pclmul} @tab @samp{.fma} @tab @samp{.movbe}
-@item @samp{.ept} @tab @samp{.clflush}
+@item @samp{.avx} @tab @samp{.vmx} @tab @samp{.smx} @tab @samp{.ept}
+@item @samp{.clflush} @tab @samp{.movbe} @tab @samp{.xsave} @tab @samp{.xsaveopt}
+@item @samp{.aes} @tab @samp{.pclmul} @tab @samp{.fma} @tab @samp{.fsgsbase}
+@item @samp{.rdrnd} @tab @samp{.f16c}
@item @samp{.3dnow} @tab @samp{.3dnowa} @tab @samp{.sse4a} @tab @samp{.sse5}
@item @samp{.syscall} @tab @samp{.rdtscp} @tab @samp{.svme} @tab @samp{.abm}
@item @samp{.lwp} @tab @samp{.fma4} @tab @samp{.xop}
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 0fb9b72..c5f4325 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,44 @@
+2010-07-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ AVX Programming Reference (June, 2010)
+ * gas/i386/arch-10.s: Add xsaveopt.
+ * gas/i386/x86-64-arch-2.s: Likwise.
+
+ * 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-2.d: Likewise.
+
+ * gas/i386/f16c-intel.d: New.
+ * gas/i386/f16c.d: Likewise.
+ * gas/i386/f16c.s: Likewise.
+ * gas/i386/fsgs-intel.d: Likewise.
+ * gas/i386/fsgs.d: Likewise.
+ * gas/i386/fsgs.s: Likewise.
+ * gas/i386/rdrnd-intel.d: Likewise.
+ * gas/i386/rdrnd.d: Likewise.
+ * gas/i386/rdrnd.s: Likewise.
+ * gas/i386/x86-64-f16c-intel.d: Likewise.
+ * gas/i386/x86-64-f16c.d: Likewise.
+ * gas/i386/x86-64-f16c.s: Likewise.
+ * gas/i386/x86-64-fsgs-intel.d: Likewise.
+ * gas/i386/x86-64-fsgs.d: Likewise.
+ * gas/i386/x86-64-fsgs.s: Likewise.
+ * gas/i386/x86-64-rdrnd-intel.d: Likewise.
+ * gas/i386/x86-64-rdrnd.d: Likewise.
+ * gas/i386/x86-64-rdrnd.s: Likewise.
+
+ * gas/i386/i386.exp: Run f16c, f16c-intel, fsgs, fsgs-intel,
+ rdrnd, rdrnd-intel, x86-64-f16c, x86-64-f16c-intel, x86-64-fsgs,
+ x86-64-fsgs-intel, x86-64-rdrnd, x86-64-rdrnd-intel.
+
+ * gas/i386/x86-64-xsave.s: Add tests for xsaveopt64.
+
+ * gas/i386/x86-64-xsave-intel.d: Updated.
+ * gas/i386/x86-64-xsave.d: Likewise.
+
2010-07-01 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
* gas/arm/thumb2_bad_reg.s: Update mov register tests.
diff --git a/gas/testsuite/gas/i386/arch-10-1.l b/gas/testsuite/gas/i386/arch-10-1.l
index 2e7e0a5..c0e98bb 100644
--- a/gas/testsuite/gas/i386/arch-10-1.l
+++ b/gas/testsuite/gas/i386/arch-10-1.l
@@ -27,6 +27,7 @@
.*:54: Error: .*
.*:56: Error: .*
.*:58: Error: .*
+.*:60: Error: .*
GAS LISTING .*
@@ -61,34 +62,36 @@ GAS LISTING .*
[ ]*28[ ]+getsec
[ ]*29[ ]+\# Xsave
[ ]*30[ ]+xgetbv
-[ ]*31[ ]+\# AES
-[ ]*32[ ]+aesenc \(%ecx\),%xmm0
-[ ]*33[ ]+\# PCLMUL
-[ ]*34[ ]+pclmulqdq \$8,%xmm1,%xmm0
-[ ]*35[ ]+\# AES \+ AVX
-[ ]*36[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
-[ ]*37[ ]+\# PCLMUL \+ AVX
-[ ]*38[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2
-[ ]*39[ ]+\# FMA
-[ ]*40[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
-[ ]*41[ ]+\# MOVBE
-[ ]*42[ ]+movbe \(%ecx\),%ebx
-[ ]*43[ ]+\# EPT
-[ ]*44[ ]+invept \(%ecx\),%ebx
-[ ]*45[ ]+\# RDTSCP
-[ ]*46[ ]+rdtscp
-[ ]*47[ ]+\# 3DNow
-[ ]*48[ ]+pmulhrw %mm4,%mm3
-[ ]*49[ ]+\# 3DNow Extensions
-[ ]*50[ ]+pswapd %mm4,%mm3
-[ ]*51[ ]+\# SSE4a
-[ ]*52[ ]+insertq %xmm2,%xmm1
-[ ]*53[ ]+\# SVME
-[ ]*54[ ]+vmload
-[ ]*55[ ]+\# ABM
-[ ]*56[ ]+lzcnt %ecx,%ebx
+[ ]*31[ ]+\# Xsaveopt
+[ ]*32[ ]+xsaveopt \(%ecx\)
+[ ]*33[ ]+\# AES
+[ ]*34[ ]+aesenc \(%ecx\),%xmm0
+[ ]*35[ ]+\# PCLMUL
+[ ]*36[ ]+pclmulqdq \$8,%xmm1,%xmm0
+[ ]*37[ ]+\# AES \+ AVX
+[ ]*38[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
+[ ]*39[ ]+\# PCLMUL \+ AVX
+[ ]*40[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2
+[ ]*41[ ]+\# FMA
+[ ]*42[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
+[ ]*43[ ]+\# MOVBE
+[ ]*44[ ]+movbe \(%ecx\),%ebx
+[ ]*45[ ]+\# EPT
+[ ]*46[ ]+invept \(%ecx\),%ebx
+[ ]*47[ ]+\# RDTSCP
+[ ]*48[ ]+rdtscp
+[ ]*49[ ]+\# 3DNow
+[ ]*50[ ]+pmulhrw %mm4,%mm3
+[ ]*51[ ]+\# 3DNow Extensions
+[ ]*52[ ]+pswapd %mm4,%mm3
+[ ]*53[ ]+\# SSE4a
+[ ]*54[ ]+insertq %xmm2,%xmm1
+[ ]*55[ ]+\# SVME
+[ ]*56[ ]+vmload
GAS LISTING .*
-[ ]*57[ ]+\# PadLock
-[ ]*58[ ]+xstorerng
+[ ]*57[ ]+\# ABM
+[ ]*58[ ]+lzcnt %ecx,%ebx
+[ ]*59[ ]+\# PadLock
+[ ]*60[ ]+xstorerng
diff --git a/gas/testsuite/gas/i386/arch-10-2.l b/gas/testsuite/gas/i386/arch-10-2.l
index c245a89..8076b7a 100644
--- a/gas/testsuite/gas/i386/arch-10-2.l
+++ b/gas/testsuite/gas/i386/arch-10-2.l
@@ -26,6 +26,7 @@
.*:54: Error: .*
.*:56: Error: .*
.*:58: Error: .*
+.*:60: Error: .*
GAS LISTING .*
@@ -60,34 +61,36 @@ GAS LISTING .*
[ ]*28[ ]+getsec
[ ]*29[ ]+\# Xsave
[ ]*30[ ]+xgetbv
-[ ]*31[ ]+\# AES
-[ ]*32[ ]+aesenc \(%ecx\),%xmm0
-[ ]*33[ ]+\# PCLMUL
-[ ]*34[ ]+pclmulqdq \$8,%xmm1,%xmm0
-[ ]*35[ ]+\# AES \+ AVX
-[ ]*36[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
-[ ]*37[ ]+\# PCLMUL \+ AVX
-[ ]*38[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2
-[ ]*39[ ]+\# FMA
-[ ]*40[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
-[ ]*41[ ]+\# MOVBE
-[ ]*42[ ]+movbe \(%ecx\),%ebx
-[ ]*43[ ]+\# EPT
-[ ]*44[ ]+invept \(%ecx\),%ebx
-[ ]*45[ ]+\# RDTSCP
-[ ]*46[ ]+rdtscp
-[ ]*47[ ]+\# 3DNow
-[ ]*48[ ]+pmulhrw %mm4,%mm3
-[ ]*49[ ]+\# 3DNow Extensions
-[ ]*50[ ]+pswapd %mm4,%mm3
-[ ]*51[ ]+\# SSE4a
-[ ]*52[ ]+insertq %xmm2,%xmm1
-[ ]*53[ ]+\# SVME
-[ ]*54[ ]+vmload
-[ ]*55[ ]+\# ABM
-[ ]*56[ ]+lzcnt %ecx,%ebx
+[ ]*31[ ]+\# Xsaveopt
+[ ]*32[ ]+xsaveopt \(%ecx\)
+[ ]*33[ ]+\# AES
+[ ]*34[ ]+aesenc \(%ecx\),%xmm0
+[ ]*35[ ]+\# PCLMUL
+[ ]*36[ ]+pclmulqdq \$8,%xmm1,%xmm0
+[ ]*37[ ]+\# AES \+ AVX
+[ ]*38[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
+[ ]*39[ ]+\# PCLMUL \+ AVX
+[ ]*40[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2
+[ ]*41[ ]+\# FMA
+[ ]*42[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
+[ ]*43[ ]+\# MOVBE
+[ ]*44[ ]+movbe \(%ecx\),%ebx
+[ ]*45[ ]+\# EPT
+[ ]*46[ ]+invept \(%ecx\),%ebx
+[ ]*47[ ]+\# RDTSCP
+[ ]*48[ ]+rdtscp
+[ ]*49[ ]+\# 3DNow
+[ ]*50[ ]+pmulhrw %mm4,%mm3
+[ ]*51[ ]+\# 3DNow Extensions
+[ ]*52[ ]+pswapd %mm4,%mm3
+[ ]*53[ ]+\# SSE4a
+[ ]*54[ ]+insertq %xmm2,%xmm1
+[ ]*55[ ]+\# SVME
+[ ]*56[ ]+vmload
GAS LISTING .*
-[ ]*57[ ]+\# PadLock
-[ ]*58[ ]+xstorerng
+[ ]*57[ ]+\# ABM
+[ ]*58[ ]+lzcnt %ecx,%ebx
+[ ]*59[ ]+\# PadLock
+[ ]*60[ ]+xstorerng
diff --git a/gas/testsuite/gas/i386/arch-10-3.l b/gas/testsuite/gas/i386/arch-10-3.l
index faa9bee..c4c3d34 100644
--- a/gas/testsuite/gas/i386/arch-10-3.l
+++ b/gas/testsuite/gas/i386/arch-10-3.l
@@ -19,6 +19,7 @@
.*:54: Error: .*
.*:56: Error: .*
.*:58: Error: .*
+.*:60: Error: .*
GAS LISTING .*
@@ -56,34 +57,36 @@ GAS LISTING .*
[ ]*28[ ]+getsec
[ ]*29[ ]+\# Xsave
[ ]*30[ ]+xgetbv
-[ ]*31[ ]+\# AES
-[ ]*32[ ]+aesenc \(%ecx\),%xmm0
-[ ]*33[ ]+\# PCLMUL
-[ ]*34[ ]+pclmulqdq \$8,%xmm1,%xmm0
-[ ]*35[ ]+\# AES \+ AVX
-[ ]*36[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
-[ ]*37[ ]+\# PCLMUL \+ AVX
-[ ]*38[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2
-[ ]*39[ ]+\# FMA
-[ ]*40[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
-[ ]*41[ ]+\# MOVBE
-[ ]*42[ ]+movbe \(%ecx\),%ebx
-[ ]*43[ ]+\# EPT
-[ ]*44[ ]+invept \(%ecx\),%ebx
-[ ]*45[ ]+\# RDTSCP
-[ ]*46[ ]+rdtscp
-[ ]*47[ ]+\# 3DNow
-[ ]*48[ ]+pmulhrw %mm4,%mm3
-[ ]*49[ ]+\# 3DNow Extensions
-[ ]*50[ ]+pswapd %mm4,%mm3
-[ ]*51[ ]+\# SSE4a
-[ ]*52[ ]+insertq %xmm2,%xmm1
-[ ]*53[ ]+\# SVME
+[ ]*31[ ]+\# Xsaveopt
+[ ]*32[ ]+xsaveopt \(%ecx\)
+[ ]*33[ ]+\# AES
+[ ]*34[ ]+aesenc \(%ecx\),%xmm0
+[ ]*35[ ]+\# PCLMUL
+[ ]*36[ ]+pclmulqdq \$8,%xmm1,%xmm0
+[ ]*37[ ]+\# AES \+ AVX
+[ ]*38[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
+[ ]*39[ ]+\# PCLMUL \+ AVX
+[ ]*40[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2
+[ ]*41[ ]+\# FMA
+[ ]*42[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
+[ ]*43[ ]+\# MOVBE
+[ ]*44[ ]+movbe \(%ecx\),%ebx
+[ ]*45[ ]+\# EPT
+[ ]*46[ ]+invept \(%ecx\),%ebx
+[ ]*47[ ]+\# RDTSCP
+[ ]*48[ ]+rdtscp
+[ ]*49[ ]+\# 3DNow
+[ ]*50[ ]+pmulhrw %mm4,%mm3
+[ ]*51[ ]+\# 3DNow Extensions
+[ ]*52[ ]+pswapd %mm4,%mm3
+[ ]*53[ ]+\# SSE4a
GAS LISTING .*
-[ ]*54[ ]+vmload
-[ ]*55[ ]+\# ABM
-[ ]*56[ ]+lzcnt %ecx,%ebx
-[ ]*57[ ]+\# PadLock
-[ ]*58[ ]+xstorerng
+[ ]*54[ ]+insertq %xmm2,%xmm1
+[ ]*55[ ]+\# SVME
+[ ]*56[ ]+vmload
+[ ]*57[ ]+\# ABM
+[ ]*58[ ]+lzcnt %ecx,%ebx
+[ ]*59[ ]+\# PadLock
+[ ]*60[ ]+xstorerng
diff --git a/gas/testsuite/gas/i386/arch-10-4.l b/gas/testsuite/gas/i386/arch-10-4.l
index 30ffda8..e09167b 100644
--- a/gas/testsuite/gas/i386/arch-10-4.l
+++ b/gas/testsuite/gas/i386/arch-10-4.l
@@ -17,6 +17,7 @@
.*:54: Error: .*
.*:56: Error: .*
.*:58: Error: .*
+.*:60: Error: .*
GAS LISTING .*
@@ -54,34 +55,36 @@ GAS LISTING .*
[ ]*28[ ]+\?\?\?\? 0F37 getsec
[ ]*29[ ]+\# Xsave
[ ]*30[ ]+xgetbv
-[ ]*31[ ]+\# AES
-[ ]*32[ ]+aesenc \(%ecx\),%xmm0
-[ ]*33[ ]+\# PCLMUL
-[ ]*34[ ]+pclmulqdq \$8,%xmm1,%xmm0
-[ ]*35[ ]+\# AES \+ AVX
-[ ]*36[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
-[ ]*37[ ]+\# PCLMUL \+ AVX
-[ ]*38[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2
-[ ]*39[ ]+\# FMA
-[ ]*40[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
-[ ]*41[ ]+\# MOVBE
-[ ]*42[ ]+movbe \(%ecx\),%ebx
-[ ]*43[ ]+\# EPT
-[ ]*44[ ]+invept \(%ecx\),%ebx
-[ ]*45[ ]+\# RDTSCP
-[ ]*46[ ]+rdtscp
-[ ]*47[ ]+\# 3DNow
-[ ]*48[ ]+pmulhrw %mm4,%mm3
-[ ]*49[ ]+\# 3DNow Extensions
-[ ]*50[ ]+pswapd %mm4,%mm3
-[ ]*51[ ]+\# SSE4a
-[ ]*52[ ]+insertq %xmm2,%xmm1
-[ ]*53[ ]+\# SVME
+[ ]*31[ ]+\# Xsaveopt
+[ ]*32[ ]+xsaveopt \(%ecx\)
+[ ]*33[ ]+\# AES
+[ ]*34[ ]+aesenc \(%ecx\),%xmm0
+[ ]*35[ ]+\# PCLMUL
+[ ]*36[ ]+pclmulqdq \$8,%xmm1,%xmm0
+[ ]*37[ ]+\# AES \+ AVX
+[ ]*38[ ]+vaesenc \(%ecx\),%xmm0,%xmm2
+[ ]*39[ ]+\# PCLMUL \+ AVX
+[ ]*40[ ]+vpclmulqdq \$8,%xmm4,%xmm6,%xmm2
+[ ]*41[ ]+\# FMA
+[ ]*42[ ]+vfmadd132pd %xmm4,%xmm6,%xmm2
+[ ]*43[ ]+\# MOVBE
+[ ]*44[ ]+movbe \(%ecx\),%ebx
+[ ]*45[ ]+\# EPT
+[ ]*46[ ]+invept \(%ecx\),%ebx
+[ ]*47[ ]+\# RDTSCP
+[ ]*48[ ]+rdtscp
+[ ]*49[ ]+\# 3DNow
+[ ]*50[ ]+pmulhrw %mm4,%mm3
+[ ]*51[ ]+\# 3DNow Extensions
+[ ]*52[ ]+pswapd %mm4,%mm3
+[ ]*53[ ]+\# SSE4a
GAS LISTING .*
-[ ]*54[ ]+vmload
-[ ]*55[ ]+\# ABM
-[ ]*56[ ]+lzcnt %ecx,%ebx
-[ ]*57[ ]+\# PadLock
-[ ]*58[ ]+xstorerng
+[ ]*54[ ]+insertq %xmm2,%xmm1
+[ ]*55[ ]+\# SVME
+[ ]*56[ ]+vmload
+[ ]*57[ ]+\# ABM
+[ ]*58[ ]+lzcnt %ecx,%ebx
+[ ]*59[ ]+\# PadLock
+[ ]*60[ ]+xstorerng
diff --git a/gas/testsuite/gas/i386/arch-10.d b/gas/testsuite/gas/i386/arch-10.d
index 4262b9c..1fe9f16 100644
--- a/gas/testsuite/gas/i386/arch-10.d
+++ b/gas/testsuite/gas/i386/arch-10.d
@@ -1,4 +1,4 @@
-#as: -march=i686+avx+vmx+smx+xsave+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock
+#as: -march=i686+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock
#objdump: -dw
#name: i386 arch 10
@@ -21,6 +21,7 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 0f 01 c4 vmxoff
[ ]*[a-f0-9]+: 0f 37 getsec
[ ]*[a-f0-9]+: 0f 01 d0 xgetbv
+[ ]*[a-f0-9]+: 0f ae 31 xsaveopt \(%ecx\)
[ ]*[a-f0-9]+: 66 0f 38 dc 01 aesenc \(%ecx\),%xmm0
[ ]*[a-f0-9]+: 66 0f 3a 44 c1 08 pclmulqdq \$0x8,%xmm1,%xmm0
[ ]*[a-f0-9]+: c4 e2 79 dc 11 vaesenc \(%ecx\),%xmm0,%xmm2
diff --git a/gas/testsuite/gas/i386/arch-10.s b/gas/testsuite/gas/i386/arch-10.s
index bee99ed..0f0218d 100644
--- a/gas/testsuite/gas/i386/arch-10.s
+++ b/gas/testsuite/gas/i386/arch-10.s
@@ -28,6 +28,8 @@ vmxoff
getsec
# Xsave
xgetbv
+# Xsaveopt
+xsaveopt (%ecx)
# AES
aesenc (%ecx),%xmm0
# PCLMUL
diff --git a/gas/testsuite/gas/i386/f16c-intel.d b/gas/testsuite/gas/i386/f16c-intel.d
new file mode 100644
index 0000000..8dd7e76
--- /dev/null
+++ b/gas/testsuite/gas/i386/f16c-intel.d
@@ -0,0 +1,31 @@
+#objdump: -dwMintel
+#name: i386 F16C (Intel disassembly)
+#source: f16c.s
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: c4 e2 7d 13 e4 vcvtph2ps ymm4,xmm4
+[ ]*[a-f0-9]+: c4 e2 7d 13 21 vcvtph2ps ymm4,XMMWORD PTR \[ecx\]
+[ ]*[a-f0-9]+: c4 e2 79 13 f4 vcvtph2ps xmm6,xmm4
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps xmm4,QWORD PTR \[ecx\]
+[ ]*[a-f0-9]+: c4 e3 7d 1d e4 02 vcvtps2ph xmm4,ymm4,0x2
+[ ]*[a-f0-9]+: c4 e3 7d 1d 21 02 vcvtps2ph XMMWORD PTR \[ecx\],ymm4,0x2
+[ ]*[a-f0-9]+: c4 e3 79 1d e4 02 vcvtps2ph xmm4,xmm4,0x2
+[ ]*[a-f0-9]+: c4 e3 79 1d 21 02 vcvtps2ph QWORD PTR \[ecx\],xmm4,0x2
+[ ]*[a-f0-9]+: c4 e2 7d 13 e4 vcvtph2ps ymm4,xmm4
+[ ]*[a-f0-9]+: c4 e2 7d 13 21 vcvtph2ps ymm4,XMMWORD PTR \[ecx\]
+[ ]*[a-f0-9]+: c4 e2 7d 13 21 vcvtph2ps ymm4,XMMWORD PTR \[ecx\]
+[ ]*[a-f0-9]+: c4 e2 79 13 f4 vcvtph2ps xmm6,xmm4
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps xmm4,QWORD PTR \[ecx\]
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps xmm4,QWORD PTR \[ecx\]
+[ ]*[a-f0-9]+: c4 e3 7d 1d e4 02 vcvtps2ph xmm4,ymm4,0x2
+[ ]*[a-f0-9]+: c4 e3 7d 1d 21 02 vcvtps2ph XMMWORD PTR \[ecx\],ymm4,0x2
+[ ]*[a-f0-9]+: c4 e3 7d 1d 21 02 vcvtps2ph XMMWORD PTR \[ecx\],ymm4,0x2
+[ ]*[a-f0-9]+: c4 e3 79 1d e4 02 vcvtps2ph xmm4,xmm4,0x2
+[ ]*[a-f0-9]+: c4 e3 79 1d 21 02 vcvtps2ph QWORD PTR \[ecx\],xmm4,0x2
+[ ]*[a-f0-9]+: c4 e3 79 1d 21 02 vcvtps2ph QWORD PTR \[ecx\],xmm4,0x2
+#pass
diff --git a/gas/testsuite/gas/i386/f16c.d b/gas/testsuite/gas/i386/f16c.d
new file mode 100644
index 0000000..8d772af
--- /dev/null
+++ b/gas/testsuite/gas/i386/f16c.d
@@ -0,0 +1,30 @@
+#objdump: -dw
+#name: i386 F16C
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: c4 e2 7d 13 e4 vcvtph2ps %xmm4,%ymm4
+[ ]*[a-f0-9]+: c4 e2 7d 13 21 vcvtph2ps \(%ecx\),%ymm4
+[ ]*[a-f0-9]+: c4 e2 79 13 f4 vcvtph2ps %xmm4,%xmm6
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps \(%ecx\),%xmm4
+[ ]*[a-f0-9]+: c4 e3 7d 1d e4 02 vcvtps2ph \$0x2,%ymm4,%xmm4
+[ ]*[a-f0-9]+: c4 e3 7d 1d 21 02 vcvtps2ph \$0x2,%ymm4,\(%ecx\)
+[ ]*[a-f0-9]+: c4 e3 79 1d e4 02 vcvtps2ph \$0x2,%xmm4,%xmm4
+[ ]*[a-f0-9]+: c4 e3 79 1d 21 02 vcvtps2ph \$0x2,%xmm4,\(%ecx\)
+[ ]*[a-f0-9]+: c4 e2 7d 13 e4 vcvtph2ps %xmm4,%ymm4
+[ ]*[a-f0-9]+: c4 e2 7d 13 21 vcvtph2ps \(%ecx\),%ymm4
+[ ]*[a-f0-9]+: c4 e2 7d 13 21 vcvtph2ps \(%ecx\),%ymm4
+[ ]*[a-f0-9]+: c4 e2 79 13 f4 vcvtph2ps %xmm4,%xmm6
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps \(%ecx\),%xmm4
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps \(%ecx\),%xmm4
+[ ]*[a-f0-9]+: c4 e3 7d 1d e4 02 vcvtps2ph \$0x2,%ymm4,%xmm4
+[ ]*[a-f0-9]+: c4 e3 7d 1d 21 02 vcvtps2ph \$0x2,%ymm4,\(%ecx\)
+[ ]*[a-f0-9]+: c4 e3 7d 1d 21 02 vcvtps2ph \$0x2,%ymm4,\(%ecx\)
+[ ]*[a-f0-9]+: c4 e3 79 1d e4 02 vcvtps2ph \$0x2,%xmm4,%xmm4
+[ ]*[a-f0-9]+: c4 e3 79 1d 21 02 vcvtps2ph \$0x2,%xmm4,\(%ecx\)
+[ ]*[a-f0-9]+: c4 e3 79 1d 21 02 vcvtps2ph \$0x2,%xmm4,\(%ecx\)
+#pass
diff --git a/gas/testsuite/gas/i386/f16c.s b/gas/testsuite/gas/i386/f16c.s
new file mode 100644
index 0000000..803b68c
--- /dev/null
+++ b/gas/testsuite/gas/i386/f16c.s
@@ -0,0 +1,26 @@
+# Check F16C new instructions.
+
+ .text
+foo:
+ vcvtph2ps %xmm4,%ymm4
+ vcvtph2ps (%ecx),%ymm4
+ vcvtph2ps %xmm4,%xmm6
+ vcvtph2ps (%ecx),%xmm4
+ vcvtps2ph $0x2,%ymm4,%xmm4
+ vcvtps2ph $0x2,%ymm4,(%ecx)
+ vcvtps2ph $0x2,%xmm4,%xmm4
+ vcvtps2ph $0x2,%xmm4,(%ecx)
+
+ .intel_syntax noprefix
+ vcvtph2ps ymm4,xmm4
+ vcvtph2ps ymm4,XMMWORD PTR [ecx]
+ vcvtph2ps ymm4,[ecx]
+ vcvtph2ps xmm6,xmm4
+ vcvtph2ps xmm4,QWORD PTR [ecx]
+ vcvtph2ps xmm4,[ecx]
+ vcvtps2ph xmm4,ymm4,0x2
+ vcvtps2ph XMMWORD PTR [ecx],ymm4,0x2
+ vcvtps2ph [ecx],ymm4,0x2
+ vcvtps2ph xmm4,xmm4,0x2
+ vcvtps2ph QWORD PTR [ecx],xmm4,0x2
+ vcvtps2ph [ecx],xmm4,0x2
diff --git a/gas/testsuite/gas/i386/fsgs-intel.d b/gas/testsuite/gas/i386/fsgs-intel.d
new file mode 100644
index 0000000..1cb1ee3
--- /dev/null
+++ b/gas/testsuite/gas/i386/fsgs-intel.d
@@ -0,0 +1,19 @@
+#objdump: -dwMintel
+#name: i386 FSGSBase (Intel disassembly)
+#source: fsgs.s
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: f3 0f ae c3 rdfsbase ebx
+[ ]*[a-f0-9]+: f3 0f ae cb rdgsbase ebx
+[ ]*[a-f0-9]+: f3 0f ae d3 wrfsbase ebx
+[ ]*[a-f0-9]+: f3 0f ae db wrgsbase ebx
+[ ]*[a-f0-9]+: f3 0f ae c3 rdfsbase ebx
+[ ]*[a-f0-9]+: f3 0f ae cb rdgsbase ebx
+[ ]*[a-f0-9]+: f3 0f ae d3 wrfsbase ebx
+[ ]*[a-f0-9]+: f3 0f ae db wrgsbase ebx
+#pass
diff --git a/gas/testsuite/gas/i386/fsgs.d b/gas/testsuite/gas/i386/fsgs.d
new file mode 100644
index 0000000..2347375
--- /dev/null
+++ b/gas/testsuite/gas/i386/fsgs.d
@@ -0,0 +1,18 @@
+#objdump: -dw
+#name: i386 FSGSBase
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: f3 0f ae c3 rdfsbase %ebx
+[ ]*[a-f0-9]+: f3 0f ae cb rdgsbase %ebx
+[ ]*[a-f0-9]+: f3 0f ae d3 wrfsbase %ebx
+[ ]*[a-f0-9]+: f3 0f ae db wrgsbase %ebx
+[ ]*[a-f0-9]+: f3 0f ae c3 rdfsbase %ebx
+[ ]*[a-f0-9]+: f3 0f ae cb rdgsbase %ebx
+[ ]*[a-f0-9]+: f3 0f ae d3 wrfsbase %ebx
+[ ]*[a-f0-9]+: f3 0f ae db wrgsbase %ebx
+#pass
diff --git a/gas/testsuite/gas/i386/fsgs.s b/gas/testsuite/gas/i386/fsgs.s
new file mode 100644
index 0000000..8ad289c
--- /dev/null
+++ b/gas/testsuite/gas/i386/fsgs.s
@@ -0,0 +1,14 @@
+# Check FSGSBase new instructions.
+
+ .text
+foo:
+ rdfsbase %ebx
+ rdgsbase %ebx
+ wrfsbase %ebx
+ wrgsbase %ebx
+
+ .intel_syntax noprefix
+ rdfsbase ebx
+ rdgsbase ebx
+ wrfsbase ebx
+ wrgsbase ebx
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index ead1447..ccda6f5 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -168,6 +168,12 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_dump_test "fma4"
run_dump_test "lwp"
run_dump_test "xop"
+ run_dump_test "f16c"
+ run_dump_test "f16c-intel"
+ run_dump_test "fsgs"
+ run_dump_test "fsgs-intel"
+ run_dump_test "rdrnd"
+ run_dump_test "rdrnd-intel"
# These tests require support for 8 and 16 bit relocs,
# so we only run them for ELF and COFF targets.
@@ -355,6 +361,12 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
run_dump_test "x86-64-fma4"
run_dump_test "x86-64-lwp"
run_dump_test "x86-64-xop"
+ run_dump_test "x86-64-f16c"
+ run_dump_test "x86-64-f16c-intel"
+ run_dump_test "x86-64-fsgs"
+ run_dump_test "x86-64-fsgs-intel"
+ run_dump_test "x86-64-rdrnd"
+ run_dump_test "x86-64-rdrnd-intel"
if { ![istarget "*-*-aix*"]
&& ![istarget "*-*-beos*"]
diff --git a/gas/testsuite/gas/i386/rdrnd-intel.d b/gas/testsuite/gas/i386/rdrnd-intel.d
new file mode 100644
index 0000000..80dda0b
--- /dev/null
+++ b/gas/testsuite/gas/i386/rdrnd-intel.d
@@ -0,0 +1,15 @@
+#objdump: -dwMintel
+#name: i386 RdRnd (Intel disassembly)
+#source: rdrnd.s
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: 66 0f c7 f3 rdrnd bx
+[ ]*[a-f0-9]+: 0f c7 f3 rdrnd ebx
+[ ]*[a-f0-9]+: 66 0f c7 f3 rdrnd bx
+[ ]*[a-f0-9]+: 0f c7 f3 rdrnd ebx
+#pass
diff --git a/gas/testsuite/gas/i386/rdrnd.d b/gas/testsuite/gas/i386/rdrnd.d
new file mode 100644
index 0000000..f085c26
--- /dev/null
+++ b/gas/testsuite/gas/i386/rdrnd.d
@@ -0,0 +1,14 @@
+#objdump: -dw
+#name: i386 RdRnd
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: 66 0f c7 f3 rdrnd %bx
+[ ]*[a-f0-9]+: 0f c7 f3 rdrnd %ebx
+[ ]*[a-f0-9]+: 66 0f c7 f3 rdrnd %bx
+[ ]*[a-f0-9]+: 0f c7 f3 rdrnd %ebx
+#pass
diff --git a/gas/testsuite/gas/i386/rdrnd.s b/gas/testsuite/gas/i386/rdrnd.s
new file mode 100644
index 0000000..b3e0e69
--- /dev/null
+++ b/gas/testsuite/gas/i386/rdrnd.s
@@ -0,0 +1,10 @@
+# Check RdRnd new instructions.
+
+ .text
+foo:
+ rdrnd %bx
+ rdrnd %ebx
+
+ .intel_syntax noprefix
+ rdrnd bx
+ rdrnd ebx
diff --git a/gas/testsuite/gas/i386/x86-64-arch-2.d b/gas/testsuite/gas/i386/x86-64-arch-2.d
index 22ecba3..9cd1306 100644
--- a/gas/testsuite/gas/i386/x86-64-arch-2.d
+++ b/gas/testsuite/gas/i386/x86-64-arch-2.d
@@ -1,4 +1,4 @@
-#as: -march=generic64+avx+vmx+smx+xsave+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock
+#as: -march=generic64+avx+vmx+smx+xsave+xsaveopt+aes+pclmul+fma+movbe+ept+clflush+syscall+rdtscp+3dnowa+sse4a+svme+abm+padlock
#objdump: -dw
#name: x86-64 arch 2
@@ -21,6 +21,7 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 0f 01 c4 vmxoff
[ ]*[a-f0-9]+: 0f 37 getsec
[ ]*[a-f0-9]+: 0f 01 d0 xgetbv
+[ ]*[a-f0-9]+: 0f ae 31 xsaveopt \(%rcx\)
[ ]*[a-f0-9]+: 66 0f 38 dc 01 aesenc \(%rcx\),%xmm0
[ ]*[a-f0-9]+: 66 0f 3a 44 c1 08 pclmulqdq \$0x8,%xmm1,%xmm0
[ ]*[a-f0-9]+: c4 e2 79 dc 11 vaesenc \(%rcx\),%xmm0,%xmm2
diff --git a/gas/testsuite/gas/i386/x86-64-arch-2.s b/gas/testsuite/gas/i386/x86-64-arch-2.s
index d051441..ddc0d40 100644
--- a/gas/testsuite/gas/i386/x86-64-arch-2.s
+++ b/gas/testsuite/gas/i386/x86-64-arch-2.s
@@ -28,6 +28,8 @@ vmxoff
getsec
# Xsave
xgetbv
+# Xsaveopt
+xsaveopt (%rcx)
# AES
aesenc (%rcx),%xmm0
# PCLMUL
diff --git a/gas/testsuite/gas/i386/x86-64-f16c-intel.d b/gas/testsuite/gas/i386/x86-64-f16c-intel.d
new file mode 100644
index 0000000..737afaf
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-f16c-intel.d
@@ -0,0 +1,31 @@
+#objdump: -drwMintel
+#name: x86-64 F16C (Intel mode)
+#source: x86-64-f16c.s
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: c4 e2 7d 13 e4 vcvtph2ps ymm4,xmm4
+[ ]*[a-f0-9]+: c4 42 7d 13 00 vcvtph2ps ymm8,XMMWORD PTR \[r8\]
+[ ]*[a-f0-9]+: c4 e2 79 13 f4 vcvtph2ps xmm6,xmm4
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps xmm4,QWORD PTR \[rcx\]
+[ ]*[a-f0-9]+: c4 e3 7d 1d e4 02 vcvtps2ph xmm4,ymm4,0x2
+[ ]*[a-f0-9]+: c4 43 7d 1d 00 02 vcvtps2ph XMMWORD PTR \[r8\],ymm8,0x2
+[ ]*[a-f0-9]+: c4 e3 79 1d e4 02 vcvtps2ph xmm4,xmm4,0x2
+[ ]*[a-f0-9]+: c4 e3 79 1d 21 02 vcvtps2ph QWORD PTR \[rcx\],xmm4,0x2
+[ ]*[a-f0-9]+: c4 e2 7d 13 e4 vcvtph2ps ymm4,xmm4
+[ ]*[a-f0-9]+: c4 42 7d 13 00 vcvtph2ps ymm8,XMMWORD PTR \[r8\]
+[ ]*[a-f0-9]+: c4 e2 7d 13 21 vcvtph2ps ymm4,XMMWORD PTR \[rcx\]
+[ ]*[a-f0-9]+: c4 e2 79 13 f4 vcvtph2ps xmm6,xmm4
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps xmm4,QWORD PTR \[rcx\]
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps xmm4,QWORD PTR \[rcx\]
+[ ]*[a-f0-9]+: c4 e3 7d 1d e4 02 vcvtps2ph xmm4,ymm4,0x2
+[ ]*[a-f0-9]+: c4 e3 7d 1d 21 02 vcvtps2ph XMMWORD PTR \[rcx\],ymm4,0x2
+[ ]*[a-f0-9]+: c4 e3 7d 1d 21 02 vcvtps2ph XMMWORD PTR \[rcx\],ymm4,0x2
+[ ]*[a-f0-9]+: c4 e3 79 1d e4 02 vcvtps2ph xmm4,xmm4,0x2
+[ ]*[a-f0-9]+: c4 43 79 1d 00 02 vcvtps2ph QWORD PTR \[r8\],xmm8,0x2
+[ ]*[a-f0-9]+: c4 e3 79 1d 21 02 vcvtps2ph QWORD PTR \[rcx\],xmm4,0x2
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-f16c.d b/gas/testsuite/gas/i386/x86-64-f16c.d
new file mode 100644
index 0000000..3f4fd69
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-f16c.d
@@ -0,0 +1,30 @@
+#objdump: -dw
+#name: x86-64 F16C
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: c4 e2 7d 13 e4 vcvtph2ps %xmm4,%ymm4
+[ ]*[a-f0-9]+: c4 42 7d 13 00 vcvtph2ps \(%r8\),%ymm8
+[ ]*[a-f0-9]+: c4 e2 79 13 f4 vcvtph2ps %xmm4,%xmm6
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps \(%rcx\),%xmm4
+[ ]*[a-f0-9]+: c4 e3 7d 1d e4 02 vcvtps2ph \$0x2,%ymm4,%xmm4
+[ ]*[a-f0-9]+: c4 43 7d 1d 00 02 vcvtps2ph \$0x2,%ymm8,\(%r8\)
+[ ]*[a-f0-9]+: c4 e3 79 1d e4 02 vcvtps2ph \$0x2,%xmm4,%xmm4
+[ ]*[a-f0-9]+: c4 e3 79 1d 21 02 vcvtps2ph \$0x2,%xmm4,\(%rcx\)
+[ ]*[a-f0-9]+: c4 e2 7d 13 e4 vcvtph2ps %xmm4,%ymm4
+[ ]*[a-f0-9]+: c4 42 7d 13 00 vcvtph2ps \(%r8\),%ymm8
+[ ]*[a-f0-9]+: c4 e2 7d 13 21 vcvtph2ps \(%rcx\),%ymm4
+[ ]*[a-f0-9]+: c4 e2 79 13 f4 vcvtph2ps %xmm4,%xmm6
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps \(%rcx\),%xmm4
+[ ]*[a-f0-9]+: c4 e2 79 13 21 vcvtph2ps \(%rcx\),%xmm4
+[ ]*[a-f0-9]+: c4 e3 7d 1d e4 02 vcvtps2ph \$0x2,%ymm4,%xmm4
+[ ]*[a-f0-9]+: c4 e3 7d 1d 21 02 vcvtps2ph \$0x2,%ymm4,\(%rcx\)
+[ ]*[a-f0-9]+: c4 e3 7d 1d 21 02 vcvtps2ph \$0x2,%ymm4,\(%rcx\)
+[ ]*[a-f0-9]+: c4 e3 79 1d e4 02 vcvtps2ph \$0x2,%xmm4,%xmm4
+[ ]*[a-f0-9]+: c4 43 79 1d 00 02 vcvtps2ph \$0x2,%xmm8,\(%r8\)
+[ ]*[a-f0-9]+: c4 e3 79 1d 21 02 vcvtps2ph \$0x2,%xmm4,\(%rcx\)
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-f16c.s b/gas/testsuite/gas/i386/x86-64-f16c.s
new file mode 100644
index 0000000..9e47e2b
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-f16c.s
@@ -0,0 +1,26 @@
+# Check 64bit F16C new instructions.
+
+ .text
+foo:
+ vcvtph2ps %xmm4,%ymm4
+ vcvtph2ps (%r8),%ymm8
+ vcvtph2ps %xmm4,%xmm6
+ vcvtph2ps (%rcx),%xmm4
+ vcvtps2ph $0x2,%ymm4,%xmm4
+ vcvtps2ph $0x2,%ymm8,(%r8)
+ vcvtps2ph $0x2,%xmm4,%xmm4
+ vcvtps2ph $0x2,%xmm4,(%rcx)
+
+ .intel_syntax noprefix
+ vcvtph2ps ymm4,xmm4
+ vcvtph2ps ymm8,XMMWORD PTR [r8]
+ vcvtph2ps ymm4,[rcx]
+ vcvtph2ps xmm6,xmm4
+ vcvtph2ps xmm4,QWORD PTR [rcx]
+ vcvtph2ps xmm4,[rcx]
+ vcvtps2ph xmm4,ymm4,0x2
+ vcvtps2ph XMMWORD PTR [rcx],ymm4,0x2
+ vcvtps2ph [rcx],ymm4,0x2
+ vcvtps2ph xmm4,xmm4,0x2
+ vcvtps2ph QWORD PTR [r8],xmm8,0x2
+ vcvtps2ph [rcx],xmm4,0x2
diff --git a/gas/testsuite/gas/i386/x86-64-fsgs-intel.d b/gas/testsuite/gas/i386/x86-64-fsgs-intel.d
new file mode 100644
index 0000000..778f83d
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-fsgs-intel.d
@@ -0,0 +1,43 @@
+#objdump: -drwMintel
+#name: x86-64 FSGSBase (Intel mode)
+#source: x86-64-fsgs.s
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: f3 0f ae c3 rdfsbase ebx
+[ ]*[a-f0-9]+: f3 48 0f ae c3 rdfsbase rbx
+[ ]*[a-f0-9]+: f3 41 0f ae c0 rdfsbase r8d
+[ ]*[a-f0-9]+: f3 49 0f ae c0 rdfsbase r8
+[ ]*[a-f0-9]+: f3 0f ae cb rdgsbase ebx
+[ ]*[a-f0-9]+: f3 48 0f ae cb rdgsbase rbx
+[ ]*[a-f0-9]+: f3 41 0f ae c8 rdgsbase r8d
+[ ]*[a-f0-9]+: f3 49 0f ae c8 rdgsbase r8
+[ ]*[a-f0-9]+: f3 0f ae d3 wrfsbase ebx
+[ ]*[a-f0-9]+: f3 48 0f ae d3 wrfsbase rbx
+[ ]*[a-f0-9]+: f3 41 0f ae d0 wrfsbase r8d
+[ ]*[a-f0-9]+: f3 49 0f ae d0 wrfsbase r8
+[ ]*[a-f0-9]+: f3 0f ae db wrgsbase ebx
+[ ]*[a-f0-9]+: f3 48 0f ae db wrgsbase rbx
+[ ]*[a-f0-9]+: f3 41 0f ae d8 wrgsbase r8d
+[ ]*[a-f0-9]+: f3 49 0f ae d8 wrgsbase r8
+[ ]*[a-f0-9]+: f3 0f ae c3 rdfsbase ebx
+[ ]*[a-f0-9]+: f3 48 0f ae c3 rdfsbase rbx
+[ ]*[a-f0-9]+: f3 41 0f ae c0 rdfsbase r8d
+[ ]*[a-f0-9]+: f3 49 0f ae c0 rdfsbase r8
+[ ]*[a-f0-9]+: f3 0f ae cb rdgsbase ebx
+[ ]*[a-f0-9]+: f3 48 0f ae cb rdgsbase rbx
+[ ]*[a-f0-9]+: f3 41 0f ae c8 rdgsbase r8d
+[ ]*[a-f0-9]+: f3 49 0f ae c8 rdgsbase r8
+[ ]*[a-f0-9]+: f3 0f ae d3 wrfsbase ebx
+[ ]*[a-f0-9]+: f3 48 0f ae d3 wrfsbase rbx
+[ ]*[a-f0-9]+: f3 41 0f ae d0 wrfsbase r8d
+[ ]*[a-f0-9]+: f3 49 0f ae d0 wrfsbase r8
+[ ]*[a-f0-9]+: f3 0f ae db wrgsbase ebx
+[ ]*[a-f0-9]+: f3 48 0f ae db wrgsbase rbx
+[ ]*[a-f0-9]+: f3 41 0f ae d8 wrgsbase r8d
+[ ]*[a-f0-9]+: f3 49 0f ae d8 wrgsbase r8
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-fsgs.d b/gas/testsuite/gas/i386/x86-64-fsgs.d
new file mode 100644
index 0000000..0549a3f
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-fsgs.d
@@ -0,0 +1,42 @@
+#objdump: -dw
+#name: x86-64 FSGSBase
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: f3 0f ae c3 rdfsbase %ebx
+[ ]*[a-f0-9]+: f3 48 0f ae c3 rdfsbase %rbx
+[ ]*[a-f0-9]+: f3 41 0f ae c0 rdfsbase %r8d
+[ ]*[a-f0-9]+: f3 49 0f ae c0 rdfsbase %r8
+[ ]*[a-f0-9]+: f3 0f ae cb rdgsbase %ebx
+[ ]*[a-f0-9]+: f3 48 0f ae cb rdgsbase %rbx
+[ ]*[a-f0-9]+: f3 41 0f ae c8 rdgsbase %r8d
+[ ]*[a-f0-9]+: f3 49 0f ae c8 rdgsbase %r8
+[ ]*[a-f0-9]+: f3 0f ae d3 wrfsbase %ebx
+[ ]*[a-f0-9]+: f3 48 0f ae d3 wrfsbase %rbx
+[ ]*[a-f0-9]+: f3 41 0f ae d0 wrfsbase %r8d
+[ ]*[a-f0-9]+: f3 49 0f ae d0 wrfsbase %r8
+[ ]*[a-f0-9]+: f3 0f ae db wrgsbase %ebx
+[ ]*[a-f0-9]+: f3 48 0f ae db wrgsbase %rbx
+[ ]*[a-f0-9]+: f3 41 0f ae d8 wrgsbase %r8d
+[ ]*[a-f0-9]+: f3 49 0f ae d8 wrgsbase %r8
+[ ]*[a-f0-9]+: f3 0f ae c3 rdfsbase %ebx
+[ ]*[a-f0-9]+: f3 48 0f ae c3 rdfsbase %rbx
+[ ]*[a-f0-9]+: f3 41 0f ae c0 rdfsbase %r8d
+[ ]*[a-f0-9]+: f3 49 0f ae c0 rdfsbase %r8
+[ ]*[a-f0-9]+: f3 0f ae cb rdgsbase %ebx
+[ ]*[a-f0-9]+: f3 48 0f ae cb rdgsbase %rbx
+[ ]*[a-f0-9]+: f3 41 0f ae c8 rdgsbase %r8d
+[ ]*[a-f0-9]+: f3 49 0f ae c8 rdgsbase %r8
+[ ]*[a-f0-9]+: f3 0f ae d3 wrfsbase %ebx
+[ ]*[a-f0-9]+: f3 48 0f ae d3 wrfsbase %rbx
+[ ]*[a-f0-9]+: f3 41 0f ae d0 wrfsbase %r8d
+[ ]*[a-f0-9]+: f3 49 0f ae d0 wrfsbase %r8
+[ ]*[a-f0-9]+: f3 0f ae db wrgsbase %ebx
+[ ]*[a-f0-9]+: f3 48 0f ae db wrgsbase %rbx
+[ ]*[a-f0-9]+: f3 41 0f ae d8 wrgsbase %r8d
+[ ]*[a-f0-9]+: f3 49 0f ae d8 wrgsbase %r8
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-fsgs.s b/gas/testsuite/gas/i386/x86-64-fsgs.s
new file mode 100644
index 0000000..8234b85
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-fsgs.s
@@ -0,0 +1,38 @@
+# Check 64bit FSGS new instructions.
+
+ .text
+foo:
+ rdfsbase %ebx
+ rdfsbase %rbx
+ rdfsbase %r8d
+ rdfsbase %r8
+ rdgsbase %ebx
+ rdgsbase %rbx
+ rdgsbase %r8d
+ rdgsbase %r8
+ wrfsbase %ebx
+ wrfsbase %rbx
+ wrfsbase %r8d
+ wrfsbase %r8
+ wrgsbase %ebx
+ wrgsbase %rbx
+ wrgsbase %r8d
+ wrgsbase %r8
+
+ .intel_syntax noprefix
+ rdfsbase ebx
+ rdfsbase rbx
+ rdfsbase r8d
+ rdfsbase r8
+ rdgsbase ebx
+ rdgsbase rbx
+ rdgsbase r8d
+ rdgsbase r8
+ wrfsbase ebx
+ wrfsbase rbx
+ wrfsbase r8d
+ wrfsbase r8
+ wrgsbase ebx
+ wrgsbase rbx
+ wrgsbase r8d
+ wrgsbase r8
diff --git a/gas/testsuite/gas/i386/x86-64-rdrnd-intel.d b/gas/testsuite/gas/i386/x86-64-rdrnd-intel.d
new file mode 100644
index 0000000..293fe36
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-rdrnd-intel.d
@@ -0,0 +1,23 @@
+#objdump: -drwMintel
+#name: x86-64 RdRnd(Intel mode)
+#source: x86-64-rdrnd.s
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: 66 0f c7 f3 rdrnd bx
+[ ]*[a-f0-9]+: 0f c7 f3 rdrnd ebx
+[ ]*[a-f0-9]+: 48 0f c7 f3 rdrnd rbx
+[ ]*[a-f0-9]+: 66 41 0f c7 f0 rdrnd r8w
+[ ]*[a-f0-9]+: 41 0f c7 f0 rdrnd r8d
+[ ]*[a-f0-9]+: 49 0f c7 f0 rdrnd r8
+[ ]*[a-f0-9]+: 66 0f c7 f3 rdrnd bx
+[ ]*[a-f0-9]+: 0f c7 f3 rdrnd ebx
+[ ]*[a-f0-9]+: 48 0f c7 f3 rdrnd rbx
+[ ]*[a-f0-9]+: 66 41 0f c7 f0 rdrnd r8w
+[ ]*[a-f0-9]+: 41 0f c7 f0 rdrnd r8d
+[ ]*[a-f0-9]+: 49 0f c7 f0 rdrnd r8
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-rdrnd.d b/gas/testsuite/gas/i386/x86-64-rdrnd.d
new file mode 100644
index 0000000..90c0f9a
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-rdrnd.d
@@ -0,0 +1,22 @@
+#objdump: -dw
+#name: x86-64 RdRnd
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+[ ]*[a-f0-9]+: 66 0f c7 f3 rdrnd %bx
+[ ]*[a-f0-9]+: 0f c7 f3 rdrnd %ebx
+[ ]*[a-f0-9]+: 48 0f c7 f3 rdrnd %rbx
+[ ]*[a-f0-9]+: 66 41 0f c7 f0 rdrnd %r8w
+[ ]*[a-f0-9]+: 41 0f c7 f0 rdrnd %r8d
+[ ]*[a-f0-9]+: 49 0f c7 f0 rdrnd %r8
+[ ]*[a-f0-9]+: 66 0f c7 f3 rdrnd %bx
+[ ]*[a-f0-9]+: 0f c7 f3 rdrnd %ebx
+[ ]*[a-f0-9]+: 48 0f c7 f3 rdrnd %rbx
+[ ]*[a-f0-9]+: 66 41 0f c7 f0 rdrnd %r8w
+[ ]*[a-f0-9]+: 41 0f c7 f0 rdrnd %r8d
+[ ]*[a-f0-9]+: 49 0f c7 f0 rdrnd %r8
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-rdrnd.s b/gas/testsuite/gas/i386/x86-64-rdrnd.s
new file mode 100644
index 0000000..b1b3d1c
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-rdrnd.s
@@ -0,0 +1,18 @@
+# Check 64bit RdRnd new instructions.
+
+ .text
+foo:
+ rdrnd %bx
+ rdrnd %ebx
+ rdrnd %rbx
+ rdrnd %r8w
+ rdrnd %r8d
+ rdrnd %r8
+
+ .intel_syntax noprefix
+ rdrnd bx
+ rdrnd ebx
+ rdrnd rbx
+ rdrnd r8w
+ rdrnd r8d
+ rdrnd r8
diff --git a/gas/testsuite/gas/i386/x86-64-xsave-intel.d b/gas/testsuite/gas/i386/x86-64-xsave-intel.d
index ae506d6..f516402 100644
--- a/gas/testsuite/gas/i386/x86-64-xsave-intel.d
+++ b/gas/testsuite/gas/i386/x86-64-xsave-intel.d
@@ -29,6 +29,15 @@ Disassembly of section .text:
[ ]*[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 30 xsaveopt \[rax\]
+[ ]*[a-f0-9]+: 41 0f ae 30 xsaveopt \[r8\]
+[ ]*[a-f0-9]+: 41 0f ae 34 00 xsaveopt \[r8\+rax\*1\]
+[ ]*[a-f0-9]+: 42 0f ae 34 00 xsaveopt \[rax\+r8\*1\]
+[ ]*[a-f0-9]+: 43 0f ae 34 38 xsaveopt \[r8\+r15\*1\]
+[ ]*[a-f0-9]+: 48 0f ae 30 xsaveopt64 \[rax\]
+[ ]*[a-f0-9]+: 49 0f ae 30 xsaveopt64 \[r8\]
+[ ]*[a-f0-9]+: 49 0f ae 34 00 xsaveopt64 \[r8\+rax\*1\]
+[ ]*[a-f0-9]+: 4a 0f ae 34 00 xsaveopt64 \[rax\+r8\*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\]
@@ -48,4 +57,13 @@ Disassembly of section .text:
[ ]*[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 30 xsaveopt \[rax\]
+[ ]*[a-f0-9]+: 41 0f ae 30 xsaveopt \[r8\]
+[ ]*[a-f0-9]+: 41 0f ae 34 00 xsaveopt \[r8\+rax\*1\]
+[ ]*[a-f0-9]+: 42 0f ae 34 00 xsaveopt \[rax\+r8\*1\]
+[ ]*[a-f0-9]+: 43 0f ae 34 38 xsaveopt \[r8\+r15\*1\]
+[ ]*[a-f0-9]+: 48 0f ae 30 xsaveopt64 \[rax\]
+[ ]*[a-f0-9]+: 49 0f ae 30 xsaveopt64 \[r8\]
+[ ]*[a-f0-9]+: 49 0f ae 34 00 xsaveopt64 \[r8\+rax\*1\]
+[ ]*[a-f0-9]+: 4a 0f ae 34 00 xsaveopt64 \[rax\+r8\*1\]
#pass
diff --git a/gas/testsuite/gas/i386/x86-64-xsave.d b/gas/testsuite/gas/i386/x86-64-xsave.d
index 05114fb..46c07d4 100644
--- a/gas/testsuite/gas/i386/x86-64-xsave.d
+++ b/gas/testsuite/gas/i386/x86-64-xsave.d
@@ -27,6 +27,15 @@ Disassembly of section .text:
[ ]*[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 30 xsaveopt \(%rax\)
+[ ]*[a-f0-9]+: 41 0f ae 30 xsaveopt \(%r8\)
+[ ]*[a-f0-9]+: 41 0f ae 34 00 xsaveopt \(%r8,%rax,1\)
+[ ]*[a-f0-9]+: 42 0f ae 34 00 xsaveopt \(%rax,%r8,1\)
+[ ]*[a-f0-9]+: 43 0f ae 34 38 xsaveopt \(%r8,%r15,1\)
+[ ]*[a-f0-9]+: 48 0f ae 30 xsaveopt64 \(%rax\)
+[ ]*[a-f0-9]+: 49 0f ae 30 xsaveopt64 \(%r8\)
+[ ]*[a-f0-9]+: 49 0f ae 34 00 xsaveopt64 \(%r8,%rax,1\)
+[ ]*[a-f0-9]+: 4a 0f ae 34 00 xsaveopt64 \(%rax,%r8,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\)
@@ -46,4 +55,13 @@ Disassembly of section .text:
[ ]*[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 30 xsaveopt \(%rax\)
+[ ]*[a-f0-9]+: 41 0f ae 30 xsaveopt \(%r8\)
+[ ]*[a-f0-9]+: 41 0f ae 34 00 xsaveopt \(%r8,%rax,1\)
+[ ]*[a-f0-9]+: 42 0f ae 34 00 xsaveopt \(%rax,%r8,1\)
+[ ]*[a-f0-9]+: 43 0f ae 34 38 xsaveopt \(%r8,%r15,1\)
+[ ]*[a-f0-9]+: 48 0f ae 30 xsaveopt64 \(%rax\)
+[ ]*[a-f0-9]+: 49 0f ae 30 xsaveopt64 \(%r8\)
+[ ]*[a-f0-9]+: 49 0f ae 34 00 xsaveopt64 \(%r8,%rax,1\)
+[ ]*[a-f0-9]+: 4a 0f ae 34 00 xsaveopt64 \(%rax,%r8,1\)
#pass
diff --git a/gas/testsuite/gas/i386/x86-64-xsave.s b/gas/testsuite/gas/i386/x86-64-xsave.s
index b32dc6e..e3316b2 100644
--- a/gas/testsuite/gas/i386/x86-64-xsave.s
+++ b/gas/testsuite/gas/i386/x86-64-xsave.s
@@ -24,6 +24,16 @@ _start:
xrstor64 (%rax, %r8)
xrstor64 (%r8, %r15)
+ xsaveopt (%rax)
+ xsaveopt (%r8)
+ xsaveopt (%r8, %rax)
+ xsaveopt (%rax, %r8)
+ xsaveopt (%r8, %r15)
+ xsaveopt64 (%rax)
+ xsaveopt64 (%r8)
+ xsaveopt64 (%r8, %rax)
+ xsaveopt64 (%rax, %r8)
+
.intel_syntax noprefix
xsave [rax]
xsave [r8]
@@ -44,3 +54,13 @@ _start:
xrstor64 [r8+rax*1]
xrstor64 [rax+r8*1]
xrstor64 [r8+r15*1]
+
+ xsaveopt [rax]
+ xsaveopt [r8]
+ xsaveopt [r8+rax*1]
+ xsaveopt [rax+r8*1]
+ xsaveopt [r8+r15*1]
+ xsaveopt64 [rax]
+ xsaveopt64 [r8]
+ xsaveopt64 [r8+rax*1]
+ xsaveopt64 [rax+r8*1]
diff --git a/gas/testsuite/gas/i386/xsave-intel.d b/gas/testsuite/gas/i386/xsave-intel.d
index 246d0cf..fc40a67 100644
--- a/gas/testsuite/gas/i386/xsave-intel.d
+++ b/gas/testsuite/gas/i386/xsave-intel.d
@@ -10,8 +10,10 @@ Disassembly of section .text:
0+ <_start>:
[ ]*[a-f0-9]+: 0f ae 2b xrstor \[ebx\]
[ ]*[a-f0-9]+: 0f ae 23 xsave \[ebx\]
+[ ]*[a-f0-9]+: 0f ae 33 xsaveopt \[ebx\]
[ ]*[a-f0-9]+: 0f 01 d0 xgetbv
[ ]*[a-f0-9]+: 0f 01 d1 xsetbv
[ ]*[a-f0-9]+: 0f ae 29 xrstor \[ecx\]
[ ]*[a-f0-9]+: 0f ae 21 xsave \[ecx\]
+[ ]*[a-f0-9]+: 0f ae 31 xsaveopt \[ecx\]
#pass
diff --git a/gas/testsuite/gas/i386/xsave.d b/gas/testsuite/gas/i386/xsave.d
index 4aedff5..2abb8ad 100644
--- a/gas/testsuite/gas/i386/xsave.d
+++ b/gas/testsuite/gas/i386/xsave.d
@@ -8,8 +8,10 @@ Disassembly of section .text:
0+ <_start>:
[ ]*[a-f0-9]+: 0f ae 2b xrstor \(%ebx\)
[ ]*[a-f0-9]+: 0f ae 23 xsave \(%ebx\)
+[ ]*[a-f0-9]+: 0f ae 33 xsaveopt \(%ebx\)
[ ]*[a-f0-9]+: 0f 01 d0 xgetbv
[ ]*[a-f0-9]+: 0f 01 d1 xsetbv
[ ]*[a-f0-9]+: 0f ae 29 xrstor \(%ecx\)
[ ]*[a-f0-9]+: 0f ae 21 xsave \(%ecx\)
+[ ]*[a-f0-9]+: 0f ae 31 xsaveopt \(%ecx\)
#pass
diff --git a/gas/testsuite/gas/i386/xsave.s b/gas/testsuite/gas/i386/xsave.s
index 5ed3ca5..37c7d50 100644
--- a/gas/testsuite/gas/i386/xsave.s
+++ b/gas/testsuite/gas/i386/xsave.s
@@ -3,9 +3,11 @@
_start:
xrstor (%ebx)
xsave (%ebx)
+ xsaveopt (%ebx)
xgetbv
xsetbv
.intel_syntax noprefix
xrstor [ecx]
xsave [ecx]
+ xsaveopt [ecx]