aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2008-10-12 12:37:09 +0000
committerH.J. Lu <hjl.tools@gmail.com>2008-10-12 12:37:09 +0000
commitfbf3f584572f8529711c8d11662950961d9ccda4 (patch)
tree787d0b67f3bf684c8d9f8f96be50ea4429ff6bee /gas
parent7022097db9d1fda4b03953bc5e880cd1ef6e0da2 (diff)
downloadgdb-fbf3f584572f8529711c8d11662950961d9ccda4.zip
gdb-fbf3f584572f8529711c8d11662950961d9ccda4.tar.gz
gdb-fbf3f584572f8529711c8d11662950961d9ccda4.tar.bz2
gas/
2008-10-12 H.J. Lu <hongjiu.lu@intel.com> * config/tc-i386.c (processor_type): Moved to tc-i386.h. (cpu_arch_tune): Make it global. (cpu_arch_isa): Likewise. (cpu_arch_isa_flags): Likewise. (i386_align_code): Check fragP->tc_frag_data.isa, fragP->tc_frag_data.isa_flags and cpu_arch_tune instead of cpu_arch_isa, cpu_arch_isa_flags and cpu_arch_tune, respectively. * config/tc-i386.h (processor_type): Moved from tc-i386.c. (cpu_arch_tune): New. (cpu_arch_isa): Likewise. (cpu_arch_isa_flags): Likewise. (i386_tc_frag_data): Likewise. (TC_FRAG_TYPE): Likewise. (TC_FRAG_INIT): Likewise. gas/testsuite/ 2008-10-12 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/i386.exp: Run nops-5, nops-5-i686, x86-64-nops-5 and x86-64-nops-5-k8. * gas/i386/nops-5.d: New. * gas/i386/nops-5.s: Likewise. * gas/i386/nops-5-i686.d: Likewise. * gas/i386/x86-64-nops-5.d: Likewise. * gas/i386/x86-64-nops-5-k8.d: Likewise.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog19
-rw-r--r--gas/config/tc-i386.c35
-rw-r--r--gas/config/tc-i386.h44
-rw-r--r--gas/testsuite/ChangeLog11
-rw-r--r--gas/testsuite/gas/i386/i386.exp4
-rw-r--r--gas/testsuite/gas/i386/nops-5-i686.d73
-rw-r--r--gas/testsuite/gas/i386/nops-5.d71
-rw-r--r--gas/testsuite/gas/i386/nops-5.s70
-rw-r--r--gas/testsuite/gas/i386/x86-64-nops-5-k8.d73
-rw-r--r--gas/testsuite/gas/i386/x86-64-nops-5.d72
10 files changed, 445 insertions, 27 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 5b4d598..518f367 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,22 @@
+2008-10-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/tc-i386.c (processor_type): Moved to tc-i386.h.
+ (cpu_arch_tune): Make it global.
+ (cpu_arch_isa): Likewise.
+ (cpu_arch_isa_flags): Likewise.
+ (i386_align_code): Check fragP->tc_frag_data.isa,
+ fragP->tc_frag_data.isa_flags and cpu_arch_tune instead of
+ cpu_arch_isa, cpu_arch_isa_flags and cpu_arch_tune,
+ respectively.
+
+ * config/tc-i386.h (processor_type): Moved from tc-i386.c.
+ (cpu_arch_tune): New.
+ (cpu_arch_isa): Likewise.
+ (cpu_arch_isa_flags): Likewise.
+ (i386_tc_frag_data): Likewise.
+ (TC_FRAG_TYPE): Likewise.
+ (TC_FRAG_INIT): Likewise.
+
2008-10-09 Bob Wilson <bob.wilson@acm.org>
* doc/as.texinfo (Pseudo Ops): Swap order of Comm and CFI menu entries.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index df76ae9..71abb01 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -150,25 +150,6 @@ typedef struct
}
sib_byte;
-enum processor_type
-{
- PROCESSOR_UNKNOWN,
- PROCESSOR_I386,
- PROCESSOR_I486,
- PROCESSOR_PENTIUM,
- PROCESSOR_PENTIUMPRO,
- PROCESSOR_PENTIUM4,
- PROCESSOR_NOCONA,
- PROCESSOR_CORE,
- PROCESSOR_CORE2,
- PROCESSOR_K6,
- PROCESSOR_ATHLON,
- PROCESSOR_K8,
- PROCESSOR_GENERIC32,
- PROCESSOR_GENERIC64,
- PROCESSOR_AMDFAM10
-};
-
/* x86 arch names, types and features */
typedef struct
{
@@ -468,16 +449,16 @@ static i386_cpu_flags cpu_arch_flags = CPU_UNKNOWN_FLAGS;
static int cpu_arch_tune_set = 0;
/* Cpu we are generating instructions for. */
-static enum processor_type cpu_arch_tune = PROCESSOR_UNKNOWN;
+enum processor_type cpu_arch_tune = PROCESSOR_UNKNOWN;
/* CPU feature flags of cpu we are generating instructions for. */
static i386_cpu_flags cpu_arch_tune_flags;
/* CPU instruction set architecture used. */
-static enum processor_type cpu_arch_isa = PROCESSOR_UNKNOWN;
+enum processor_type cpu_arch_isa = PROCESSOR_UNKNOWN;
/* CPU feature flags of instruction set architecture used. */
-static i386_cpu_flags cpu_arch_isa_flags;
+i386_cpu_flags cpu_arch_isa_flags;
/* If set, conditional jumps are not automatically promoted to handle
larger than a byte offset. */
@@ -993,7 +974,7 @@ i386_align_code (fragS *fragP, int count)
{
const char *const *patt = NULL;
- if (cpu_arch_isa == PROCESSOR_UNKNOWN)
+ if (fragP->tc_frag_data.isa == PROCESSOR_UNKNOWN)
{
/* PROCESSOR_UNKNOWN means that all ISAs may be used. */
switch (cpu_arch_tune)
@@ -1001,7 +982,7 @@ i386_align_code (fragS *fragP, int count)
case PROCESSOR_UNKNOWN:
/* We use cpu_arch_isa_flags to check if we SHOULD
optimize for Cpu686. */
- if (cpu_arch_isa_flags.bitfield.cpui686)
+ if (fragP->tc_frag_data.isa_flags.bitfield.cpui686)
patt = alt_long_patt;
else
patt = f32_patt;
@@ -1030,7 +1011,7 @@ i386_align_code (fragS *fragP, int count)
}
else
{
- switch (cpu_arch_tune)
+ switch (fragP->tc_frag_data.tune)
{
case PROCESSOR_UNKNOWN:
/* When cpu_arch_isa is set, cpu_arch_tune shouldn't be
@@ -1048,7 +1029,7 @@ i386_align_code (fragS *fragP, int count)
case PROCESSOR_GENERIC32:
/* We use cpu_arch_isa_flags to check if we CAN optimize
for Cpu686. */
- if (cpu_arch_isa_flags.bitfield.cpui686)
+ if (fragP->tc_frag_data.isa_flags.bitfield.cpui686)
patt = alt_short_patt;
else
patt = f32_patt;
@@ -1058,7 +1039,7 @@ i386_align_code (fragS *fragP, int count)
case PROCESSOR_NOCONA:
case PROCESSOR_CORE:
case PROCESSOR_CORE2:
- if (cpu_arch_isa_flags.bitfield.cpui686)
+ if (fragP->tc_frag_data.isa_flags.bitfield.cpui686)
patt = alt_long_patt;
else
patt = f32_patt;
diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h
index fd8c8ec..f7f829c 100644
--- a/gas/config/tc-i386.h
+++ b/gas/config/tc-i386.h
@@ -187,6 +187,50 @@ void i386_print_statistics (FILE *);
#define md_number_to_chars number_to_chars_littleendian
+enum processor_type
+{
+ PROCESSOR_UNKNOWN,
+ PROCESSOR_I386,
+ PROCESSOR_I486,
+ PROCESSOR_PENTIUM,
+ PROCESSOR_PENTIUMPRO,
+ PROCESSOR_PENTIUM4,
+ PROCESSOR_NOCONA,
+ PROCESSOR_CORE,
+ PROCESSOR_CORE2,
+ PROCESSOR_K6,
+ PROCESSOR_ATHLON,
+ PROCESSOR_K8,
+ PROCESSOR_GENERIC32,
+ PROCESSOR_GENERIC64,
+ PROCESSOR_AMDFAM10
+};
+
+extern enum processor_type cpu_arch_tune;
+extern enum processor_type cpu_arch_isa;
+extern i386_cpu_flags cpu_arch_isa_flags;
+
+struct i386_tc_frag_data
+{
+ enum processor_type isa;
+ i386_cpu_flags isa_flags;
+ enum processor_type tune;
+};
+
+/* We need to emit the right NOP pattern in .align frags. This is
+ done after the text-to-bits assembly pass, so we need to mark it with
+ the isa/tune settings at the time the .align was assembled. */
+#define TC_FRAG_TYPE struct i386_tc_frag_data
+
+#define TC_FRAG_INIT(FRAGP) \
+ do \
+ { \
+ (FRAGP)->tc_frag_data.isa = cpu_arch_isa; \
+ (FRAGP)->tc_frag_data.isa_flags = cpu_arch_isa_flags; \
+ (FRAGP)->tc_frag_data.tune = cpu_arch_tune; \
+ } \
+ while (0)
+
#ifdef SCO_ELF
#define tc_init_after_args() sco_id ()
extern void sco_id (void);
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 91baf05..da3b928 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,14 @@
+2008-10-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gas/i386/i386.exp: Run nops-5, nops-5-i686, x86-64-nops-5 and
+ x86-64-nops-5-k8.
+
+ * gas/i386/nops-5.d: New.
+ * gas/i386/nops-5.s: Likewise.
+ * gas/i386/nops-5-i686.d: Likewise.
+ * gas/i386/x86-64-nops-5.d: Likewise.
+ * gas/i386/x86-64-nops-5-k8.d: Likewise.
+
2008-10-06 Tom Tromey <tromey@redhat.com>
* gas/cfi/cfi-alpha-1.d, gas/cfi/cfi-alpha-3.d,
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index c8cef20..8b1b55c 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -79,6 +79,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_dump_test "nops-4"
run_dump_test "nops-4-i386"
run_dump_test "nops-4-i686"
+ run_dump_test "nops-5"
+ run_dump_test "nops-5-i686"
run_dump_test "addr16"
run_dump_test "addr32"
run_dump_test "sse4_1"
@@ -242,6 +244,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
run_dump_test "x86-64-nops-4"
run_dump_test "x86-64-nops-4-core2"
run_dump_test "x86-64-nops-4-k8"
+ run_dump_test "x86-64-nops-5"
+ run_dump_test "x86-64-nops-5-k8"
run_dump_test "x86-64-sse4_1"
run_dump_test "x86-64-sse4_1-intel"
run_dump_test "x86-64-sse4_2"
diff --git a/gas/testsuite/gas/i386/nops-5-i686.d b/gas/testsuite/gas/i386/nops-5-i686.d
new file mode 100644
index 0000000..2452cd4
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-5-i686.d
@@ -0,0 +1,73 @@
+#as: -march=i686
+#source: nops-5.s
+#objdump: -drw
+#name: i386 -march=i686 nops 5
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <i386>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%esi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%edi,%eiz,1\),%edi
+
+0+10 <i486>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%esi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%edi,%eiz,1\),%edi
+
+0+20 <i586>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%esi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%edi,%eiz,1\),%edi
+
+0+30 <i686>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+40 <pentium4>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+50 <nocona>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+60 <core>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+70 <core2>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+80 <k6>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%esi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%edi,%eiz,1\),%edi
+
+0+90 <athlon>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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+a0 <k8>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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+b0 <generic32>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%esi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%edi,%eiz,1\),%edi
+
+0+c0 <generic64>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+d0 <amdfam10>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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\)
+#pass
diff --git a/gas/testsuite/gas/i386/nops-5.d b/gas/testsuite/gas/i386/nops-5.d
new file mode 100644
index 0000000..49c48b7
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-5.d
@@ -0,0 +1,71 @@
+#objdump: -drw
+#name: i386 nops 5
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <i386>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%esi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%edi,%eiz,1\),%edi
+
+0+10 <i486>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%esi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%edi,%eiz,1\),%edi
+
+0+20 <i586>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%esi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%edi,%eiz,1\),%edi
+
+0+30 <i686>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+40 <pentium4>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+50 <nocona>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+60 <core>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+70 <core2>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+80 <k6>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%esi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%edi,%eiz,1\),%edi
+
+0+90 <athlon>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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+a0 <k8>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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+b0 <generic32>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%esi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%edi,%eiz,1\),%edi
+
+0+c0 <generic64>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%eax,%eax,1\)
+
+0+d0 <amdfam10>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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\)
+#pass
diff --git a/gas/testsuite/gas/i386/nops-5.s b/gas/testsuite/gas/i386/nops-5.s
new file mode 100644
index 0000000..4536c98
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-5.s
@@ -0,0 +1,70 @@
+ .text
+ .arch i386
+i386:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch i486
+i486:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch i586
+i586:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch i686
+i686:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch pentium4
+pentium4:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch nocona
+nocona:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch core
+core:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch core2
+core2:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch k6
+k6:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch athlon
+athlon:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch k8
+k8:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch generic32
+generic32:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch generic64
+generic64:
+ movsbl %al,%esi
+ .p2align 4
+
+ .arch amdfam10
+amdfam10:
+ movsbl %al,%esi
+ .p2align 4
diff --git a/gas/testsuite/gas/i386/x86-64-nops-5-k8.d b/gas/testsuite/gas/i386/x86-64-nops-5-k8.d
new file mode 100644
index 0000000..05d1e2e
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-nops-5-k8.d
@@ -0,0 +1,73 @@
+#as: -march=k8
+#source: nops-5.s
+#objdump: -drw
+#name: x86-64 -march=k8 nops 5
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <i386>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%rsi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%rdi,%riz,1\),%edi
+
+0+10 <i486>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%rsi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%rdi,%riz,1\),%edi
+
+0+20 <i586>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%rsi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%rdi,%riz,1\),%edi
+
+0+30 <i686>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+40 <pentium4>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+50 <nocona>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+60 <core>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+70 <core2>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+80 <k6>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%rsi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%rdi,%riz,1\),%edi
+
+0+90 <athlon>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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+a0 <k8>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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+b0 <generic32>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%rsi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%rdi,%riz,1\),%edi
+
+0+c0 <generic64>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+d0 <amdfam10>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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\)
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-nops-5.d b/gas/testsuite/gas/i386/x86-64-nops-5.d
new file mode 100644
index 0000000..cf0401d
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-nops-5.d
@@ -0,0 +1,72 @@
+#source: nops-5.s
+#objdump: -drw
+#name: x86-64 nops 5
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <i386>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%rsi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%rdi,%riz,1\),%edi
+
+0+10 <i486>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%rsi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%rdi,%riz,1\),%edi
+
+0+20 <i586>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%rsi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%rdi,%riz,1\),%edi
+
+0+30 <i686>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+40 <pentium4>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+50 <nocona>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+60 <core>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+70 <core2>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+80 <k6>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%rsi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%rdi,%riz,1\),%edi
+
+0+90 <athlon>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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+a0 <k8>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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+b0 <generic32>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 8d b6 00 00 00 00 lea 0x0\(%rsi\),%esi
+[ ]*[a-f0-9]+: 8d bc 27 00 00 00 00 lea 0x0\(%rdi,%riz,1\),%edi
+
+0+c0 <generic64>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[a-f0-9]+: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0\(%rax,%rax,1\)
+
+0+d0 <amdfam10>:
+[ ]*[a-f0-9]+: 0f be f0 movsbl %al,%esi
+[ ]*[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\)
+#pass