aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorGanesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>2015-03-17 21:49:15 +0530
committerGanesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>2015-03-17 21:49:15 +0530
commit029f3522619e8b77a7b848be23f4c13e50087d8b (patch)
tree484cbee2753ca7c12d2d0db7a28864e2e45e7456 /gas
parent393bd0c06b64ff6076f28053cbd2fce352023c70 (diff)
downloadgdb-029f3522619e8b77a7b848be23f4c13e50087d8b.zip
gdb-029f3522619e8b77a7b848be23f4c13e50087d8b.tar.gz
gdb-029f3522619e8b77a7b848be23f4c13e50087d8b.tar.bz2
Add znver1 processor
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-i386.c6
-rw-r--r--gas/config/tc-i386.h1
-rw-r--r--gas/doc/c-i386.texi6
-rw-r--r--gas/testsuite/ChangeLog15
-rw-r--r--gas/testsuite/gas/i386/arch-13-znver1.d20
-rw-r--r--gas/testsuite/gas/i386/arch-13.d19
-rw-r--r--gas/testsuite/gas/i386/arch-13.s19
-rw-r--r--gas/testsuite/gas/i386/clzero.d11
-rw-r--r--gas/testsuite/gas/i386/clzero.s6
-rw-r--r--gas/testsuite/gas/i386/i386.exp8
-rw-r--r--gas/testsuite/gas/i386/nops-1-znver1.d162
-rw-r--r--gas/testsuite/gas/i386/x86-64-arch-3-znver1.d21
-rw-r--r--gas/testsuite/gas/i386/x86-64-arch-3.d20
-rw-r--r--gas/testsuite/gas/i386/x86-64-arch-3.s21
-rw-r--r--gas/testsuite/gas/i386/x86-64-clzero.d12
-rw-r--r--gas/testsuite/gas/i386/x86-64-nops-1-znver1.d162
17 files changed, 514 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index d449c4a..bccf7b30 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2015-03-17 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>
+
+ * config/tc-i386.c (cpu_arch): Add PROCESSOR_ZNVER flags.
+ (i386_align_code): Add PROCESSOR_ZNVER cases.
+ * config/tc-i386.h (processor_type): Add PROCESSOR_ZNVER.
+ * doc/c-i386.texi: Add znver1 and clzero.
+
2015-03-16 Nick Clifton <nickc@redhat.com>
* dwarf2dbg.c (out_header): Remove spurious #if 1.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 45b815c..b6e8f5c 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -788,6 +788,8 @@ static const arch_entry cpu_arch[] =
CPU_BDVER3_FLAGS, 0, 0 },
{ STRING_COMMA_LEN ("bdver4"), PROCESSOR_BD,
CPU_BDVER4_FLAGS, 0, 0 },
+ { STRING_COMMA_LEN ("znver1"), PROCESSOR_ZNVER,
+ CPU_ZNVER1_FLAGS, 0, 0 },
{ STRING_COMMA_LEN ("btver1"), PROCESSOR_BT,
CPU_BTVER1_FLAGS, 0, 0 },
{ STRING_COMMA_LEN ("btver2"), PROCESSOR_BT,
@@ -942,6 +944,8 @@ static const arch_entry cpu_arch[] =
CPU_AVX512IFMA_FLAGS, 0, 0 },
{ STRING_COMMA_LEN (".avx512vbmi"), PROCESSOR_UNKNOWN,
CPU_AVX512VBMI_FLAGS, 0, 0 },
+ { STRING_COMMA_LEN (".clzero"), PROCESSOR_UNKNOWN,
+ CPU_CLZERO_FLAGS, 0, 0 },
};
#ifdef I386COFF
@@ -1283,6 +1287,7 @@ i386_align_code (fragS *fragP, int count)
case PROCESSOR_K8:
case PROCESSOR_AMDFAM10:
case PROCESSOR_BD:
+ case PROCESSOR_ZNVER:
case PROCESSOR_BT:
patt = alt_short_patt;
break;
@@ -1313,6 +1318,7 @@ i386_align_code (fragS *fragP, int count)
case PROCESSOR_K8:
case PROCESSOR_AMDFAM10:
case PROCESSOR_BD:
+ case PROCESSOR_ZNVER:
case PROCESSOR_BT:
case PROCESSOR_GENERIC32:
/* We use cpu_arch_isa_flags to check if we CAN optimize
diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h
index f84e449..f645754 100644
--- a/gas/config/tc-i386.h
+++ b/gas/config/tc-i386.h
@@ -245,6 +245,7 @@ enum processor_type
PROCESSOR_GENERIC64,
PROCESSOR_AMDFAM10,
PROCESSOR_BD,
+ PROCESSOR_ZNVER,
PROCESSOR_BT
};
diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi
index d9dfbdd..e57b2c1 100644
--- a/gas/doc/c-i386.texi
+++ b/gas/doc/c-i386.texi
@@ -120,6 +120,7 @@ processor names are recognized:
@code{bdver2},
@code{bdver3},
@code{bdver4},
+@code{znver1},
@code{btver1},
@code{btver2},
@code{generic32} and
@@ -187,6 +188,7 @@ accept various extension mnemonics. For example,
@code{rtm},
@code{invpcid},
@code{clflush},
+@code{clzero},
@code{lwp},
@code{fma4},
@code{xop},
@@ -1072,7 +1074,7 @@ supported on the CPU specified. The choices for @var{cpu_type} are:
@item @samp{corei7} @tab @samp{l1om} @tab @samp{k1om}
@item @samp{k6} @tab @samp{k6_2} @tab @samp{athlon} @tab @samp{k8}
@item @samp{amdfam10} @tab @samp{bdver1} @tab @samp{bdver2} @tab @samp{bdver3}
-@item @samp{bdver4} @tab @samp{btver1} @tab @samp{btver2}
+@item @samp{bdver4} @tab @samp{znver1} @tab @samp{btver1} @tab @samp{btver2}
@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}
@@ -1090,7 +1092,7 @@ supported on the CPU specified. The choices for @var{cpu_type} are:
@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} @tab @samp{.cx16}
-@item @samp{.padlock}
+@item @samp{.padlock} @tab @samp{.clzero}
@end multitable
Apart from the warning, there are only two other effects on
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 0054afd..3b58c97 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,18 @@
+2015-03-17 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>
+
+ * gas/i386/i386.exp: Add new znver1 test cases.
+ * gas/i386/arch-13-znver1.d: New.
+ * gas/i386/arch-13.d: New.
+ * gas/i386/arch-13.s: New.
+ * gas/i386/clzero.d: New.
+ * gas/i386/clzero.s: New.
+ * gas/i386/nops-1-znver1.d: New.
+ * gas/i386/x86-64-arch-3-znver1.d: New.
+ * gas/i386/x86-64-arch-3.d: New.
+ * gas/i386/x86-64-arch-3.s: New.
+ * gas/i386/x86-64-clzero.d: New.
+ * gas/i386/x86-64-nops-1-znver1.d: New.
+
2015-03-13 Andrew Bennett <andrew.bennett@imgtec.com>
* gas/mips/mips.exp: Added branch constraints testcase.
diff --git a/gas/testsuite/gas/i386/arch-13-znver1.d b/gas/testsuite/gas/i386/arch-13-znver1.d
new file mode 100644
index 0000000..bafe606
--- /dev/null
+++ b/gas/testsuite/gas/i386/arch-13-znver1.d
@@ -0,0 +1,20 @@
+#source: arch-13.s
+#as: -march=znver1
+#objdump: -dw
+#name: i386 arch 13 (znver1)
+
+.*: file format .*
+
+Disassembly of section .text:
+
+0+ <.text>:
+[ ]*[a-f0-9]+: 0f 01 ca clac
+[ ]*[a-f0-9]+: 0f 01 cb stac
+[ ]*[a-f0-9]+: 66 0f 38 f6 ca adcx %edx,%ecx
+[ ]*[a-f0-9]+: f3 0f 38 f6 ca adox %edx,%ecx
+[ ]*[a-f0-9]+: 0f c7 f8 rdseed %eax
+[ ]*[a-f0-9]+: 0f 01 fc clzero
+[ ]*[a-f0-9]+: 0f c7 21 xsavec \(%ecx\)
+[ ]*[a-f0-9]+: 0f c7 29 xsaves \(%ecx\)
+[ ]*[a-f0-9]+: 66 0f ae 39 clflushopt \(%ecx\)
+#pass
diff --git a/gas/testsuite/gas/i386/arch-13.d b/gas/testsuite/gas/i386/arch-13.d
new file mode 100644
index 0000000..370e641
--- /dev/null
+++ b/gas/testsuite/gas/i386/arch-13.d
@@ -0,0 +1,19 @@
+#as: -march=i686+smap+adx+rdseed+clzero+xsavec+xsaves+clflushopt
+#objdump: -dw
+#name: i386 arch 13
+
+.*: file format .*
+
+Disassembly of section .text:
+
+0+ <.text>:
+[ ]*[a-f0-9]+: 0f 01 ca clac
+[ ]*[a-f0-9]+: 0f 01 cb stac
+[ ]*[a-f0-9]+: 66 0f 38 f6 ca adcx %edx,%ecx
+[ ]*[a-f0-9]+: f3 0f 38 f6 ca adox %edx,%ecx
+[ ]*[a-f0-9]+: 0f c7 f8 rdseed %eax
+[ ]*[a-f0-9]+: 0f 01 fc clzero
+[ ]*[a-f0-9]+: 0f c7 21 xsavec \(%ecx\)
+[ ]*[a-f0-9]+: 0f c7 29 xsaves \(%ecx\)
+[ ]*[a-f0-9]+: 66 0f ae 39 clflushopt \(%ecx\)
+#pass
diff --git a/gas/testsuite/gas/i386/arch-13.s b/gas/testsuite/gas/i386/arch-13.s
new file mode 100644
index 0000000..5e1969f
--- /dev/null
+++ b/gas/testsuite/gas/i386/arch-13.s
@@ -0,0 +1,19 @@
+# Test -march=
+ .text
+#SMAP feature
+clac
+stac
+#ADCX ADOX
+adcx %edx, %ecx
+adox %edx, %ecx
+#RDSEED
+rdseed %eax
+#CLZERO
+clzero
+#XSAVEC
+xsavec (%ecx)
+#XSAVES
+xsaves (%ecx)
+#CLFLUSHOPT
+clflushopt (%ecx)
+
diff --git a/gas/testsuite/gas/i386/clzero.d b/gas/testsuite/gas/i386/clzero.d
new file mode 100644
index 0000000..369873f
--- /dev/null
+++ b/gas/testsuite/gas/i386/clzero.d
@@ -0,0 +1,11 @@
+#objdump: -dw
+#name: i386 CLZERO insn
+
+.*: +file format .*
+
+
+Disassembly of section \.text:
+
+00000000 <_start>:
+[ ]*[a-f0-9]+: 0f 01 fc clzero
+#pass
diff --git a/gas/testsuite/gas/i386/clzero.s b/gas/testsuite/gas/i386/clzero.s
new file mode 100644
index 0000000..49cdca0
--- /dev/null
+++ b/gas/testsuite/gas/i386/clzero.s
@@ -0,0 +1,6 @@
+# Check CLZERO instructions
+
+ .text
+_start:
+ clzero
+
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index a607f6b..381a1e3 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -106,6 +106,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_dump_test "nops-1-bdver2"
run_dump_test "nops-1-bdver3"
run_dump_test "nops-1-bdver4"
+ run_dump_test "nops-1-znver1"
run_dump_test "nops-1-btver1"
run_dump_test "nops-1-btver2"
run_dump_test "nops-2"
@@ -155,6 +156,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_dump_test "arch-10-bdver2"
run_dump_test "arch-10-bdver3"
run_dump_test "arch-10-bdver4"
+ run_dump_test "arch-13-znver1"
run_dump_test "arch-10-btver1"
run_dump_test "arch-10-btver2"
run_list_test "arch-10-1" "-march=generic32 -I${srcdir}/$subdir -al"
@@ -163,6 +165,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_list_test "arch-10-4" "-march=i686+sse4+vmx+smx -I${srcdir}/$subdir -al"
run_dump_test "arch-11"
run_dump_test "arch-12"
+ run_dump_test "arch-13"
run_dump_test "8087"
run_dump_test "287"
run_dump_test "387"
@@ -342,6 +345,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_dump_test "avx512vbmi-intel"
run_dump_test "avx512vbmi_vl"
run_dump_test "avx512vbmi_vl-intel"
+ run_dump_test "clzero"
run_dump_test "disassem"
# These tests require support for 8 and 16 bit relocs,
@@ -490,6 +494,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
run_dump_test "x86-64-nops-1-bdver2"
run_dump_test "x86-64-nops-1-bdver3"
run_dump_test "x86-64-nops-1-bdver4"
+ run_dump_test "x86-64-nops-1-znver1"
run_dump_test "x86-64-nops-1-btver1"
run_dump_test "x86-64-nops-1-btver2"
run_dump_test "x86-64-nops-2"
@@ -525,12 +530,14 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
run_dump_test "x86-64-fxsave-intel"
run_dump_test "x86-64-arch-1"
run_dump_test "x86-64-arch-2"
+ run_dump_test "x86-64-arch-3"
run_dump_test "x86-64-arch-2-lzcnt"
run_dump_test "x86-64-arch-2-prefetchw"
run_dump_test "x86-64-arch-2-bdver1"
run_dump_test "x86-64-arch-2-bdver2"
run_dump_test "x86-64-arch-2-bdver3"
run_dump_test "x86-64-arch-2-bdver4"
+ run_dump_test "x86-64-arch-3-znver1"
run_dump_test "x86-64-arch-2-btver1"
run_dump_test "x86-64-arch-2-btver2"
run_list_test "x86-64-arch-2-1" "-march=generic64 -I${srcdir}/$subdir -al"
@@ -705,6 +712,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
run_dump_test "x86-64-avx512vbmi-intel"
run_dump_test "x86-64-avx512vbmi_vl"
run_dump_test "x86-64-avx512vbmi_vl-intel"
+ run_dump_test "x86-64-clzero"
if { ![istarget "*-*-aix*"]
&& ![istarget "*-*-beos*"]
diff --git a/gas/testsuite/gas/i386/nops-1-znver1.d b/gas/testsuite/gas/i386/nops-1-znver1.d
new file mode 100644
index 0000000..8624573
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-1-znver1.d
@@ -0,0 +1,162 @@
+#as: -mtune=znver1
+#source: nops-1.s
+#objdump: -drw
+#name: i386 -mtune=znver1 nops 1
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <nop15>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl 0x0\(%eax\)
+[ ]*[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl 0x0\(%eax,%eax,1\)
+
+0+10 <nop14>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl 0x0\(%eax\)
+[ ]*[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl 0x0\(%eax\)
+
+0+20 <nop13>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 0f 1f 44 00 00 nopw 0x0\(%eax,%eax,1\)
+[ ]*[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl 0x0\(%eax\)
+
+0+30 <nop12>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 0f 1f 44 00 00 nopw 0x0\(%eax,%eax,1\)
+[ ]*[a-f0-9]+: 66 0f 1f 44 00 00 nopw 0x0\(%eax,%eax,1\)
+
+0+40 <nop11>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%eax,%eax,1\)
+[ ]*[a-f0-9]+: 66 0f 1f 44 00 00 nopw 0x0\(%eax,%eax,1\)
+
+0+50 <nop10>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+60 <nop9>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 0f 1f 84 00 00 00 00 00 nopw 0x0\(%eax,%eax,1\)
+
+0+70 <nop8>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl 0x0\(%eax,%eax,1\)
+
+0+80 <nop7>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl 0x0\(%eax\)
+
+0+90 <nop6>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 0f 1f 44 00 00 nopw 0x0\(%eax,%eax,1\)
+
+0+a0 <nop5>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%eax,%eax,1\)
+
+0+b0 <nop4>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%eax\)
+
+0+c0 <nop3>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 00 nopl \(%eax\)
+
+0+d0 <nop2>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 90 xchg %ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-arch-3-znver1.d b/gas/testsuite/gas/i386/x86-64-arch-3-znver1.d
new file mode 100644
index 0000000..9066855
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-arch-3-znver1.d
@@ -0,0 +1,21 @@
+#source: x86-64-arch-3.s
+#as: -march=znver1
+#objdump: -dw
+#name: x86-64 arch 3 (znver1)
+
+.*: file format .*
+
+Disassembly of section .text:
+
+0+ <.text>:
+[ ]*[a-f0-9]+: 0f 01 ca clac
+[ ]*[a-f0-9]+: 0f 01 cb stac
+[ ]*[a-f0-9]+: 66 0f 38 f6 ca adcx %edx,%ecx
+[ ]*[a-f0-9]+: f3 0f 38 f6 ca adox %edx,%ecx
+[ ]*[a-f0-9]+: 0f c7 f8 rdseed %eax
+[ ]*[a-f0-9]+: 0f 01 fc clzero
+[ ]*[a-f0-9]+: 44 0f 38 c8 00 sha1nexte \(%rax\),%xmm8
+[ ]*[a-f0-9]+: 48 0f c7 21 xsavec64 \(%rcx\)
+[ ]*[a-f0-9]+: 48 0f c7 29 xsaves64 \(%rcx\)
+[ ]*[a-f0-9]+: 66 0f ae 39 clflushopt \(%rcx\)
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-arch-3.d b/gas/testsuite/gas/i386/x86-64-arch-3.d
new file mode 100644
index 0000000..7b0792a
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-arch-3.d
@@ -0,0 +1,20 @@
+#as: -march=generic64+smap+adx+rdseed+clzero+sha+xsavec+xsaves+clflushopt
+#objdump: -dw
+#name: x86-64 arch 3
+
+.*: file format .*
+
+Disassembly of section .text:
+
+0+ <.text>:
+[ ]*[a-f0-9]+: 0f 01 ca clac
+[ ]*[a-f0-9]+: 0f 01 cb stac
+[ ]*[a-f0-9]+: 66 0f 38 f6 ca adcx %edx,%ecx
+[ ]*[a-f0-9]+: f3 0f 38 f6 ca adox %edx,%ecx
+[ ]*[a-f0-9]+: 0f c7 f8 rdseed %eax
+[ ]*[a-f0-9]+: 0f 01 fc clzero
+[ ]*[a-f0-9]+: 44 0f 38 c8 00 sha1nexte \(%rax\),%xmm8
+[ ]*[a-f0-9]+: 48 0f c7 21 xsavec64 \(%rcx\)
+[ ]*[a-f0-9]+: 48 0f c7 29 xsaves64 \(%rcx\)
+[ ]*[a-f0-9]+: 66 0f ae 39 clflushopt \(%rcx\)
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-arch-3.s b/gas/testsuite/gas/i386/x86-64-arch-3.s
new file mode 100644
index 0000000..76c4226
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-arch-3.s
@@ -0,0 +1,21 @@
+# Test -march=
+ .text
+#SMAP
+clac
+stac
+#ADCX ADOX
+adcx %edx, %ecx
+adox %edx, %ecx
+#RDSEED
+rdseed %eax
+#CLZERO
+clzero
+#SHA
+sha1nexte (%rax), %xmm8
+#XSAVEC
+xsavec64 (%rcx)
+#XSAVES
+xsaves64 (%rcx)
+#CLFLUSHOPT
+clflushopt (%rcx)
+
diff --git a/gas/testsuite/gas/i386/x86-64-clzero.d b/gas/testsuite/gas/i386/x86-64-clzero.d
new file mode 100644
index 0000000..9c0d35f
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-clzero.d
@@ -0,0 +1,12 @@
+#objdump: -dw
+#name: x86_64 CLZERO insn
+#source: clzero.s
+
+.*: +file format .*
+
+
+Disassembly of section \.text:
+
+0+ <_start>:
+[ ]*[a-f0-9]+: 0f 01 fc clzero
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-nops-1-znver1.d b/gas/testsuite/gas/i386/x86-64-nops-1-znver1.d
new file mode 100644
index 0000000..5c7086e
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-nops-1-znver1.d
@@ -0,0 +1,162 @@
+#as: -mtune=znver1
+#source: nops-1.s
+#objdump: -drw
+#name: x86-64 -mtune=znver1 nops 1
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <nop15>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl 0x0\(%rax\)
+[ ]*[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl 0x0\(%rax,%rax,1\)
+
+0+10 <nop14>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl 0x0\(%rax\)
+[ ]*[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl 0x0\(%rax\)
+
+0+20 <nop13>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 0f 1f 44 00 00 nopw 0x0\(%rax,%rax,1\)
+[ ]*[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl 0x0\(%rax\)
+
+0+30 <nop12>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 0f 1f 44 00 00 nopw 0x0\(%rax,%rax,1\)
+[ ]*[a-f0-9]+: 66 0f 1f 44 00 00 nopw 0x0\(%rax,%rax,1\)
+
+0+40 <nop11>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
+[ ]*[a-f0-9]+: 66 0f 1f 44 00 00 nopw 0x0\(%rax,%rax,1\)
+
+0+50 <nop10>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+60 <nop9>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 0f 1f 84 00 00 00 00 00 nopw 0x0\(%rax,%rax,1\)
+
+0+70 <nop8>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 84 00 00 00 00 00 nopl 0x0\(%rax,%rax,1\)
+
+0+80 <nop7>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 80 00 00 00 00 nopl 0x0\(%rax\)
+
+0+90 <nop6>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 0f 1f 44 00 00 nopw 0x0\(%rax,%rax,1\)
+
+0+a0 <nop5>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\)
+
+0+b0 <nop4>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\)
+
+0+c0 <nop3>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 0f 1f 00 nopl \(%rax\)
+
+0+d0 <nop2>:
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 90 nop
+[ ]*[a-f0-9]+: 66 90 xchg %ax,%ax
+#pass