aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2006-06-23 21:47:36 +0000
committerH.J. Lu <hjl.tools@gmail.com>2006-06-23 21:47:36 +0000
commitccc9c02779b72934b539448ac4d6020501adf309 (patch)
tree9da9793178077b8c42759ad125766e07db1444d4 /gas
parentd4dc2f22f5996cf5b296206b87983b382ed64a43 (diff)
downloadgdb-ccc9c02779b72934b539448ac4d6020501adf309.zip
gdb-ccc9c02779b72934b539448ac4d6020501adf309.tar.gz
gdb-ccc9c02779b72934b539448ac4d6020501adf309.tar.bz2
gas/
2006-06-23 H.J. Lu <hongjiu.lu@intel.com> * config/tc-i386.c (cpu_arch_tune_set): New. (cpu_arch_isa): Likewise. (i386_align_code): Use xchg %ax,%ax for 2 byte nop. Optimize nops with short or long nop sequences based on -march=/.arch and -mtune=. (set_cpu_arch): Set cpu_arch_isa. If cpu_arch_tune_set is 0, set cpu_arch_tune and cpu_arch_tune_flags. (md_parse_option): For -march=, set cpu_arch_isa and set cpu_arch_tune and cpu_arch_tune_flags if cpu_arch_tune_set is 0. Set cpu_arch_tune_set to 1 for -mtune=. (i386_target_format): Don't set cpu_arch_tune. gas/testsuite/ 2006-06-23 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/i386.exp: Run nops-1, nops-1-i386, nops-1-i686, nops-1-merom, nops-2, nops-2-i386, nops-2-merom, x86-64-nops-1, x86-64-nops-1-k8, x86-64-nops-1-nocona and x86-64-nops-1-merom. * gas/i386/nops-1.s: New file. * gas/i386/nops-2.s: Likewise. * gas/i386/nops-1-i386.d: Likewise. * gas/i386/nops-1-i686.d: Likewise. * gas/i386/nops-1-merom.d: Likewise. * gas/i386/nops-1.d: Likewise. * gas/i386/nops-2-i386.d: Likewise. * gas/i386/nops-2-merom.d: Likewise. * gas/i386/nops-2.d: Likewise. * gas/i386/x86-64-nops-1.s: Likewise. * gas/i386/x86-64-nops-1-k8.d: Likewise. * gas/i386/x86-64-nops-1-merom.d: Likewise. * gas/i386/x86-64-nops-1-nocona.d: Likewise. * gas/i386/x86-64-nops-1.d: Likewise. * gas/i386/sse2.d: Updated to expect xchg %ax,%ax as 2 byte nop.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog14
-rw-r--r--gas/config/tc-i386.c261
-rw-r--r--gas/testsuite/ChangeLog24
-rw-r--r--gas/testsuite/gas/i386/i386.exp11
-rw-r--r--gas/testsuite/gas/i386/nops-1-i386.d177
-rw-r--r--gas/testsuite/gas/i386/nops-1-i686.d161
-rw-r--r--gas/testsuite/gas/i386/nops-1-merom.d156
-rw-r--r--gas/testsuite/gas/i386/nops-1.d176
-rw-r--r--gas/testsuite/gas/i386/nops-1.s147
-rw-r--r--gas/testsuite/gas/i386/nops-2-i386.d166
-rw-r--r--gas/testsuite/gas/i386/nops-2-merom.d160
-rw-r--r--gas/testsuite/gas/i386/nops-2.d165
-rw-r--r--gas/testsuite/gas/i386/nops-2.s151
-rw-r--r--gas/testsuite/gas/i386/sse2.d2
-rw-r--r--gas/testsuite/gas/i386/x86-64-nops-1-k8.d177
-rw-r--r--gas/testsuite/gas/i386/x86-64-nops-1-merom.d156
-rw-r--r--gas/testsuite/gas/i386/x86-64-nops-1-nocona.d161
-rw-r--r--gas/testsuite/gas/i386/x86-64-nops-1.d160
-rw-r--r--gas/testsuite/gas/i386/x86-64-nops-1.s147
19 files changed, 2545 insertions, 27 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 14c128b..94c7962 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,17 @@
+2006-06-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/tc-i386.c (cpu_arch_tune_set): New.
+ (cpu_arch_isa): Likewise.
+ (i386_align_code): Use xchg %ax,%ax for 2 byte nop. Optimize
+ nops with short or long nop sequences based on -march=/.arch
+ and -mtune=.
+ (set_cpu_arch): Set cpu_arch_isa. If cpu_arch_tune_set is 0,
+ set cpu_arch_tune and cpu_arch_tune_flags.
+ (md_parse_option): For -march=, set cpu_arch_isa and set
+ cpu_arch_tune and cpu_arch_tune_flags if cpu_arch_tune_set is
+ 0. Set cpu_arch_tune_set to 1 for -mtune=.
+ (i386_target_format): Don't set cpu_arch_tune.
+
2006-06-23 Nigel Stephens <nigel@mips.com>
* config/tc-mips.c (nopic_need_relax): Handle -fdata-sections
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 9c99a85..aaca79c 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -323,12 +323,18 @@ static const char *cpu_sub_arch_name = NULL;
/* CPU feature flags. */
static unsigned int cpu_arch_flags = CpuUnknownFlags | CpuNo64;
+/* If we have selected a cpu we are generating instructions for. */
+static int cpu_arch_tune_set = 0;
+
/* Cpu we are generating instructions for. */
static enum processor_type cpu_arch_tune = PROCESSOR_UNKNOWN;
/* CPU feature flags of cpu we are generating instructions for. */
static unsigned int cpu_arch_tune_flags = 0;
+/* CPU instruction set architecture used. */
+static enum processor_type cpu_arch_isa = PROCESSOR_UNKNOWN;
+
/* CPU feature flags of instruction set architecture used. */
static unsigned int cpu_arch_isa_flags = 0;
@@ -562,7 +568,7 @@ i386_align_code (fragP, count)
static const char f32_1[] =
{0x90}; /* nop */
static const char f32_2[] =
- {0x89,0xf6}; /* movl %esi,%esi */
+ {0x66,0x90}; /* xchg %ax,%ax */
static const char f32_3[] =
{0x8d,0x76,0x00}; /* leal 0(%esi),%esi */
static const char f32_4[] =
@@ -622,13 +628,140 @@ i386_align_code (fragP, count)
f32_1, f32_2, f16_3, f16_4, f16_5, f16_6, f16_7, f16_8,
f32_15, f32_15, f32_15, f32_15, f32_15, f32_15, f32_15
};
+ /* nopl (%[re]ax) */
+ static const char alt_3[] =
+ {0x0f,0x1f,0x00};
+ /* nopl 0(%[re]ax) */
+ static const char alt_4[] =
+ {0x0f,0x1f,0x40,0x00};
+ /* nopl 0(%[re]ax,%[re]ax,1) */
+ static const char alt_5[] =
+ {0x0f,0x1f,0x44,0x00,0x00};
+ /* nopw 0(%[re]ax,%[re]ax,1) */
+ static const char alt_6[] =
+ {0x66,0x0f,0x1f,0x44,0x00,0x00};
+ /* nopl 0L(%[re]ax) */
+ static const char alt_7[] =
+ {0x0f,0x1f,0x80,0x00,0x00,0x00,0x00};
+ /* nopl 0L(%[re]ax,%[re]ax,1) */
+ static const char alt_8[] =
+ {0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00};
+ /* nopw 0L(%[re]ax,%[re]ax,1) */
+ static const char alt_9[] =
+ {0x66,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00};
+ /* nopw %cs:0L(%[re]ax,%[re]ax,1) */
+ static const char alt_10[] =
+ {0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00};
+ /* data16
+ nopw %cs:0L(%[re]ax,%[re]ax,1) */
+ static const char alt_long_11[] =
+ {0x66,
+ 0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00};
+ /* data16
+ data16
+ nopw %cs:0L(%[re]ax,%[re]ax,1) */
+ static const char alt_long_12[] =
+ {0x66,
+ 0x66,
+ 0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00};
+ /* data16
+ data16
+ data16
+ nopw %cs:0L(%[re]ax,%[re]ax,1) */
+ static const char alt_long_13[] =
+ {0x66,
+ 0x66,
+ 0x66,
+ 0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00};
+ /* data16
+ data16
+ data16
+ data16
+ nopw %cs:0L(%[re]ax,%[re]ax,1) */
+ static const char alt_long_14[] =
+ {0x66,
+ 0x66,
+ 0x66,
+ 0x66,
+ 0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00};
+ /* data16
+ data16
+ data16
+ data16
+ data16
+ nopw %cs:0L(%[re]ax,%[re]ax,1) */
+ static const char alt_long_15[] =
+ {0x66,
+ 0x66,
+ 0x66,
+ 0x66,
+ 0x66,
+ 0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00};
+ /* nopl 0(%[re]ax,%[re]ax,1)
+ nopw 0(%[re]ax,%[re]ax,1) */
+ static const char alt_short_11[] =
+ {0x0f,0x1f,0x44,0x00,0x00,
+ 0x66,0x0f,0x1f,0x44,0x00,0x00};
+ /* nopw 0(%[re]ax,%[re]ax,1)
+ nopw 0(%[re]ax,%[re]ax,1) */
+ static const char alt_short_12[] =
+ {0x66,0x0f,0x1f,0x44,0x00,0x00,
+ 0x66,0x0f,0x1f,0x44,0x00,0x00};
+ /* nopw 0(%[re]ax,%[re]ax,1)
+ nopl 0L(%[re]ax) */
+ static const char alt_short_13[] =
+ {0x66,0x0f,0x1f,0x44,0x00,0x00,
+ 0x0f,0x1f,0x80,0x00,0x00,0x00,0x00};
+ /* nopl 0L(%[re]ax)
+ nopl 0L(%[re]ax) */
+ static const char alt_short_14[] =
+ {0x0f,0x1f,0x80,0x00,0x00,0x00,0x00,
+ 0x0f,0x1f,0x80,0x00,0x00,0x00,0x00};
+ /* nopl 0L(%[re]ax)
+ nopl 0L(%[re]ax,%[re]ax,1) */
+ static const char alt_short_15[] =
+ {0x0f,0x1f,0x80,0x00,0x00,0x00,0x00,
+ 0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00};
+ static const char *const alt_short_patt[] = {
+ f32_1, f32_2, alt_3, alt_4, alt_5, alt_6, alt_7, alt_8,
+ alt_9, alt_10, alt_short_11, alt_short_12, alt_short_13,
+ alt_short_14, alt_short_15
+ };
+ static const char *const alt_long_patt[] = {
+ f32_1, f32_2, alt_3, alt_4, alt_5, alt_6, alt_7, alt_8,
+ alt_9, alt_10, alt_long_11, alt_long_12, alt_long_13,
+ alt_long_14, alt_long_15
+ };
if (count <= 0 || count > 15)
return;
- /* The recommended way to pad 64bit code is to use NOPs preceded by
- maximally four 0x66 prefixes. Balance the size of nops. */
- if (flag_code == CODE_64BIT)
+ /* We need to decide which NOP sequence to use for 32bit and
+ 64bit. When -mtune= is used:
+
+ 1. For PROCESSOR_I486, PROCESSOR_PENTIUM and PROCESSOR_GENERIC32,
+ f32_patt will be used.
+ 2. For PROCESSOR_K8 in 64bit, NOPs with 0x66 prefixe will be used.
+ 3. For PROCESSOR_MEROM, alt_long_patt will be used.
+ 4. For PROCESSOR_PENTIUMPRO, PROCESSOR_PENTIUM4, PROCESSOR_NOCONA,
+ PROCESSOR_YONAH, PROCESSOR_MEROM, PROCESSOR_K6, PROCESSOR_ATHLON
+ and PROCESSOR_GENERIC64, alt_short_patt will be used.
+
+ When -mtune= isn't used, alt_short_patt will be used if
+ cpu_arch_isa_flags has Cpu686. Otherwise, f32_patt will be used.
+
+ When -march= or .arch is used, we can't use anything beyond
+ cpu_arch_isa_flags. */
+
+ if (flag_code == CODE_16BIT)
+ {
+ memcpy (fragP->fr_literal + fragP->fr_fix,
+ f16_patt[count - 1], count);
+ if (count > 8)
+ /* Adjust jump offset. */
+ fragP->fr_literal[fragP->fr_fix + 1] = count - 2;
+ }
+ else if (flag_code == CODE_64BIT && cpu_arch_tune == PROCESSOR_K8)
{
int i;
int nnops = (count + 3) / 4;
@@ -636,6 +769,8 @@ i386_align_code (fragP, count)
int remains = count - nnops * len;
int pos = 0;
+ /* The recommended way to pad 64bit code is to use NOPs preceded
+ by maximally four 0x66 prefixes. Balance the size of nops. */
for (i = 0; i < remains; i++)
{
memset (fragP->fr_literal + fragP->fr_fix + pos, 0x66, len);
@@ -650,17 +785,84 @@ i386_align_code (fragP, count)
}
}
else
- if (flag_code == CODE_16BIT)
- {
- memcpy (fragP->fr_literal + fragP->fr_fix,
- f16_patt[count - 1], count);
- if (count > 8)
- /* Adjust jump offset. */
- fragP->fr_literal[fragP->fr_fix + 1] = count - 2;
- }
- else
+ {
+ const char *const *patt = NULL;
+
+ if (cpu_arch_isa == PROCESSOR_UNKNOWN)
+ {
+ /* PROCESSOR_UNKNOWN means that all ISAs may be used. */
+ switch (cpu_arch_tune)
+ {
+ case PROCESSOR_UNKNOWN:
+ /* We use cpu_arch_isa_flags to check if we SHOULD
+ optimize for Cpu686. */
+ if ((cpu_arch_isa_flags & Cpu686) != 0)
+ patt = alt_short_patt;
+ else
+ patt = f32_patt;
+ break;
+ case PROCESSOR_MEROM:
+ patt = alt_long_patt;
+ break;
+ case PROCESSOR_PENTIUMPRO:
+ case PROCESSOR_PENTIUM4:
+ case PROCESSOR_NOCONA:
+ case PROCESSOR_YONAH:
+ case PROCESSOR_K6:
+ case PROCESSOR_ATHLON:
+ case PROCESSOR_K8:
+ case PROCESSOR_GENERIC64:
+ patt = alt_short_patt;
+ break;
+ case PROCESSOR_I486:
+ case PROCESSOR_PENTIUM:
+ case PROCESSOR_GENERIC32:
+ patt = f32_patt;
+ break;
+ }
+ }
+ else
+ {
+ switch (cpu_arch_tune)
+ {
+ case PROCESSOR_UNKNOWN:
+ /* When cpu_arch_isa is net, cpu_arch_tune shouldn't be
+ PROCESSOR_UNKNOWN. */
+ abort ();
+ break;
+
+ case PROCESSOR_I486:
+ case PROCESSOR_PENTIUM:
+ case PROCESSOR_PENTIUMPRO:
+ case PROCESSOR_PENTIUM4:
+ case PROCESSOR_NOCONA:
+ case PROCESSOR_YONAH:
+ case PROCESSOR_K6:
+ case PROCESSOR_ATHLON:
+ case PROCESSOR_K8:
+ case PROCESSOR_GENERIC32:
+ /* We use cpu_arch_isa_flags to check if we CAN optimize
+ for Cpu686. */
+ if ((cpu_arch_isa_flags & Cpu686) != 0)
+ patt = alt_short_patt;
+ else
+ patt = f32_patt;
+ break;
+ case PROCESSOR_MEROM:
+ if ((cpu_arch_isa_flags & Cpu686) != 0)
+ patt = alt_long_patt;
+ else
+ patt = f32_patt;
+ break;
+ case PROCESSOR_GENERIC64:
+ patt = alt_short_patt;
+ break;
+ }
+ }
+
memcpy (fragP->fr_literal + fragP->fr_fix,
- f32_patt[count - 1], count);
+ patt[count - 1], count);
+ }
fragP->fr_var = count;
}
@@ -937,7 +1139,13 @@ set_cpu_arch (dummy)
cpu_sub_arch_name = NULL;
cpu_arch_flags = (cpu_arch[i].flags
| (flag_code == CODE_64BIT ? Cpu64 : CpuNo64));
+ cpu_arch_isa = cpu_arch[i].type;
cpu_arch_isa_flags = cpu_arch[i].flags;
+ if (!cpu_arch_tune_set)
+ {
+ cpu_arch_tune = cpu_arch_isa;
+ cpu_arch_tune_flags = cpu_arch_isa_flags;
+ }
break;
}
if ((cpu_arch_flags | cpu_arch[i].flags) != cpu_arch_flags)
@@ -5587,7 +5795,13 @@ md_parse_option (int c, char *arg)
{
if (strcmp (arg, cpu_arch [i].name) == 0)
{
+ cpu_arch_isa = cpu_arch[i].type;
cpu_arch_isa_flags = cpu_arch[i].flags;
+ if (!cpu_arch_tune_set)
+ {
+ cpu_arch_tune = cpu_arch_isa;
+ cpu_arch_tune_flags = cpu_arch_isa_flags;
+ }
break;
}
}
@@ -5602,6 +5816,7 @@ md_parse_option (int c, char *arg)
{
if (strcmp (arg, cpu_arch [i].name) == 0)
{
+ cpu_arch_tune_set = 1;
cpu_arch_tune = cpu_arch [i].type;
cpu_arch_tune_flags = cpu_arch[i].flags;
break;
@@ -5663,24 +5878,18 @@ i386_target_format ()
cpu_arch_isa_flags = Cpu086|Cpu186|Cpu286|Cpu386|Cpu486
|Cpu586|Cpu686|CpuP4|CpuMMX|CpuMMX2
|CpuSSE|CpuSSE2;
- if (cpu_arch_tune == PROCESSOR_UNKNOWN)
- {
- cpu_arch_tune = PROCESSOR_GENERIC64;
- cpu_arch_tune_flags = Cpu086|Cpu186|Cpu286|Cpu386|Cpu486
- |Cpu586|Cpu686|CpuP4|CpuMMX|CpuMMX2
- |CpuSSE|CpuSSE2;
- }
+ if (cpu_arch_tune_flags == 0)
+ cpu_arch_tune_flags = Cpu086|Cpu186|Cpu286|Cpu386|Cpu486
+ |Cpu586|Cpu686|CpuP4|CpuMMX|CpuMMX2
+ |CpuSSE|CpuSSE2;
}
else if (!strcmp (default_arch, "i386"))
{
set_code_flag (CODE_32BIT);
if (cpu_arch_isa_flags == 0)
cpu_arch_isa_flags = Cpu086|Cpu186|Cpu286|Cpu386;
- if (cpu_arch_tune == PROCESSOR_UNKNOWN)
- {
- cpu_arch_tune = PROCESSOR_GENERIC32;
- cpu_arch_tune_flags = Cpu086|Cpu186|Cpu286|Cpu386;
- }
+ if (cpu_arch_tune_flags == 0)
+ cpu_arch_tune_flags = Cpu086|Cpu186|Cpu286|Cpu386;
}
else
as_fatal (_("Unknown architecture"));
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index c0a2fc0..6408a04 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,27 @@
+2006-06-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gas/i386/i386.exp: Run nops-1, nops-1-i386, nops-1-i686,
+ nops-1-merom, nops-2, nops-2-i386, nops-2-merom, x86-64-nops-1,
+ x86-64-nops-1-k8, x86-64-nops-1-nocona and x86-64-nops-1-merom.
+
+ * gas/i386/nops-1.s: New file.
+ * gas/i386/nops-2.s: Likewise.
+ * gas/i386/nops-1-i386.d: Likewise.
+ * gas/i386/nops-1-i686.d: Likewise.
+ * gas/i386/nops-1-merom.d: Likewise.
+ * gas/i386/nops-1.d: Likewise.
+ * gas/i386/nops-2-i386.d: Likewise.
+ * gas/i386/nops-2-merom.d: Likewise.
+ * gas/i386/nops-2.d: Likewise.
+ * gas/i386/x86-64-nops-1.s: Likewise.
+ * gas/i386/x86-64-nops-1-k8.d: Likewise.
+ * gas/i386/x86-64-nops-1-merom.d: Likewise.
+ * gas/i386/x86-64-nops-1-nocona.d: Likewise.
+ * gas/i386/x86-64-nops-1.d: Likewise.
+
+ * gas/i386/sse2.d: Updated to expect xchg %ax,%ax as 2 byte
+ nop.
+
2006-06-20 Thiemo Seufer <ths@networkno.de>
* gas/mips/mips.exp: Explicitly specify o32 ABI.
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 3f353bc..71e2ee9 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -73,6 +73,13 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_dump_test "rep-suffix"
run_dump_test "fp"
run_dump_test "nops"
+ run_dump_test "nops-1"
+ run_dump_test "nops-1-i386"
+ run_dump_test "nops-1-i686"
+ run_dump_test "nops-1-merom"
+ run_dump_test "nops-2"
+ run_dump_test "nops-2-i386"
+ run_dump_test "nops-2-merom"
# These tests require support for 8 and 16 bit relocs,
# so we only run them for ELF and COFF targets.
@@ -146,6 +153,10 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
run_dump_test "x86-64-rep-suffix"
run_dump_test "x86-64-gidt"
run_dump_test "x86-64-nops"
+ run_dump_test "x86-64-nops-1"
+ run_dump_test "x86-64-nops-1-k8"
+ run_dump_test "x86-64-nops-1-nocona"
+ run_dump_test "x86-64-nops-1-merom"
if { ![istarget "*-*-aix*"]
&& ![istarget "*-*-beos*"]
diff --git a/gas/testsuite/gas/i386/nops-1-i386.d b/gas/testsuite/gas/i386/nops-1-i386.d
new file mode 100644
index 0000000..6d1582a
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-1-i386.d
@@ -0,0 +1,177 @@
+#as: -mtune=i686 -march=i386
+#source: nops-1.s
+#objdump: -drw
+#name: i386 -mtune=i686 -march=i386 nops 1
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop15>:
+[ ]*0:[ ]+90[ ]+nop[ ]*
+[ ]*1:[ ]+eb 0d[ ]+jmp[ ]+10[ ]+<nop14>
+[ ]*3:[ ]+90[ ]+nop[ ]*
+[ ]*4:[ ]+90[ ]+nop[ ]*
+[ ]*5:[ ]+90[ ]+nop[ ]*
+[ ]*6:[ ]+90[ ]+nop[ ]*
+[ ]*7:[ ]+90[ ]+nop[ ]*
+[ ]*8:[ ]+90[ ]+nop[ ]*
+[ ]*9:[ ]+90[ ]+nop[ ]*
+[ ]*a:[ ]+90[ ]+nop[ ]*
+[ ]*b:[ ]+90[ ]+nop[ ]*
+[ ]*c:[ ]+90[ ]+nop[ ]*
+[ ]*d:[ ]+90[ ]+nop[ ]*
+[ ]*e:[ ]+90[ ]+nop[ ]*
+[ ]*f:[ ]+90[ ]+nop[ ]*
+
+0+10 <nop14>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+90[ ]+nop[ ]*
+[ ]*12:[ ]+8d b4 26 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+[ ]*19:[ ]+8d bc 27 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+20 <nop13>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+90[ ]+nop[ ]*
+[ ]*23:[ ]+8d b6 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+[ ]*29:[ ]+8d bc 27 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+30 <nop12>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+90[ ]+nop[ ]*
+[ ]*34:[ ]+8d b6 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+[ ]*3a:[ ]+8d bf 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+40 <nop11>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+90[ ]+nop[ ]*
+[ ]*45:[ ]+8d 74 26 00[ ]+lea[ ]+0x0\(%esi\),%esi
+[ ]*49:[ ]+8d bc 27 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+50 <nop10>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+90[ ]+nop[ ]*
+[ ]*56:[ ]+8d 76 00[ ]+lea[ ]+0x0\(%esi\),%esi
+[ ]*59:[ ]+8d bc 27 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+60 <nop9>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+90[ ]+nop[ ]*
+[ ]*67:[ ]+89 f6[ ]+mov[ ]+%esi,%esi
+[ ]*69:[ ]+8d bc 27 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+70 <nop8>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+90[ ]+nop[ ]*
+[ ]*78:[ ]+90[ ]+nop[ ]*
+[ ]*79:[ ]+8d b4 26 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+80 <nop7>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+90[ ]+nop[ ]*
+[ ]*89:[ ]+8d b4 26 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+90 <nop6>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+90[ ]+nop[ ]*
+[ ]*9a:[ ]+8d b6 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+a0 <nop5>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+90[ ]+nop[ ]*
+[ ]*ab:[ ]+90[ ]+nop[ ]*
+[ ]*ac:[ ]+8d 74 26 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+b0 <nop4>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+90[ ]+nop[ ]*
+[ ]*bc:[ ]+8d 74 26 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+c0 <nop3>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+90[ ]+nop[ ]*
+[ ]*cd:[ ]+8d 76 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+d0 <nop2>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+90[ ]+nop[ ]*
+[ ]*de:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/nops-1-i686.d b/gas/testsuite/gas/i386/nops-1-i686.d
new file mode 100644
index 0000000..b3ee23b
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-1-i686.d
@@ -0,0 +1,161 @@
+#as: -mtune=i686
+#source: nops-1.s
+#objdump: -drw
+#name: i386 -mtune=i686 nops 1
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop15>:
+[ ]*0:[ ]+90[ ]+nop[ ]*
+[ ]*1:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+[ ]*8:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+10 <nop14>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+90[ ]+nop[ ]*
+[ ]*12:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+[ ]*19:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+20 <nop13>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+90[ ]+nop[ ]*
+[ ]*23:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+[ ]*29:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+30 <nop12>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+90[ ]+nop[ ]*
+[ ]*34:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+[ ]*3a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+40 <nop11>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+90[ ]+nop[ ]*
+[ ]*45:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+[ ]*4a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+50 <nop10>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+90[ ]+nop[ ]*
+[ ]*56:[ ]+66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+60 <nop9>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+90[ ]+nop[ ]*
+[ ]*67:[ ]+66 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+70 <nop8>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+90[ ]+nop[ ]*
+[ ]*78:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+80 <nop7>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+90[ ]+nop[ ]*
+[ ]*89:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+90 <nop6>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+90[ ]+nop[ ]*
+[ ]*9a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+a0 <nop5>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+90[ ]+nop[ ]*
+[ ]*ab:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+b0 <nop4>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+90[ ]+nop[ ]*
+[ ]*bc:[ ]+0f 1f 40 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+c0 <nop3>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+90[ ]+nop[ ]*
+[ ]*cd:[ ]+0f 1f 00[ ]+nopl[ ]+\(%eax\)
+
+0+d0 <nop2>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+90[ ]+nop[ ]*
+[ ]*de:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/nops-1-merom.d b/gas/testsuite/gas/i386/nops-1-merom.d
new file mode 100644
index 0000000..90668e5
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-1-merom.d
@@ -0,0 +1,156 @@
+#as: -mtune=merom
+#source: nops-1.s
+#objdump: -drw
+#name: i386 -mtune=merom nops 1
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop15>:
+[ ]*0:[ ]+90[ ]+nop[ ]*
+[ ]*1:[ ]+66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+10 <nop14>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+90[ ]+nop[ ]*
+[ ]*12:[ ]+66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+20 <nop13>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+90[ ]+nop[ ]*
+[ ]*23:[ ]+66 66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+30 <nop12>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+90[ ]+nop[ ]*
+[ ]*34:[ ]+66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+40 <nop11>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+90[ ]+nop[ ]*
+[ ]*45:[ ]+66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+50 <nop10>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+90[ ]+nop[ ]*
+[ ]*56:[ ]+66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+60 <nop9>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+90[ ]+nop[ ]*
+[ ]*67:[ ]+66 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+70 <nop8>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+90[ ]+nop[ ]*
+[ ]*78:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+80 <nop7>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+90[ ]+nop[ ]*
+[ ]*89:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+90 <nop6>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+90[ ]+nop[ ]*
+[ ]*9a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+a0 <nop5>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+90[ ]+nop[ ]*
+[ ]*ab:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+b0 <nop4>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+90[ ]+nop[ ]*
+[ ]*bc:[ ]+0f 1f 40 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+c0 <nop3>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+90[ ]+nop[ ]*
+[ ]*cd:[ ]+0f 1f 00[ ]+nopl[ ]+\(%eax\)
+
+0+d0 <nop2>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+90[ ]+nop[ ]*
+[ ]*de:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/nops-1.d b/gas/testsuite/gas/i386/nops-1.d
new file mode 100644
index 0000000..4e81e95
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-1.d
@@ -0,0 +1,176 @@
+#source: nops-1.s
+#objdump: -drw
+#name: i386 nops 1
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop15>:
+[ ]*0:[ ]+90[ ]+nop[ ]*
+[ ]*1:[ ]+eb 0d[ ]+jmp[ ]+10[ ]+<nop14>
+[ ]*3:[ ]+90[ ]+nop[ ]*
+[ ]*4:[ ]+90[ ]+nop[ ]*
+[ ]*5:[ ]+90[ ]+nop[ ]*
+[ ]*6:[ ]+90[ ]+nop[ ]*
+[ ]*7:[ ]+90[ ]+nop[ ]*
+[ ]*8:[ ]+90[ ]+nop[ ]*
+[ ]*9:[ ]+90[ ]+nop[ ]*
+[ ]*a:[ ]+90[ ]+nop[ ]*
+[ ]*b:[ ]+90[ ]+nop[ ]*
+[ ]*c:[ ]+90[ ]+nop[ ]*
+[ ]*d:[ ]+90[ ]+nop[ ]*
+[ ]*e:[ ]+90[ ]+nop[ ]*
+[ ]*f:[ ]+90[ ]+nop[ ]*
+
+0+10 <nop14>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+90[ ]+nop[ ]*
+[ ]*12:[ ]+8d b4 26 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+[ ]*19:[ ]+8d bc 27 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+20 <nop13>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+90[ ]+nop[ ]*
+[ ]*23:[ ]+8d b6 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+[ ]*29:[ ]+8d bc 27 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+30 <nop12>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+90[ ]+nop[ ]*
+[ ]*34:[ ]+8d b6 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+[ ]*3a:[ ]+8d bf 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+40 <nop11>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+90[ ]+nop[ ]*
+[ ]*45:[ ]+8d 74 26 00[ ]+lea[ ]+0x0\(%esi\),%esi
+[ ]*49:[ ]+8d bc 27 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+50 <nop10>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+90[ ]+nop[ ]*
+[ ]*56:[ ]+8d 76 00[ ]+lea[ ]+0x0\(%esi\),%esi
+[ ]*59:[ ]+8d bc 27 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+60 <nop9>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+90[ ]+nop[ ]*
+[ ]*67:[ ]+89 f6[ ]+mov[ ]+%esi,%esi
+[ ]*69:[ ]+8d bc 27 00 00 00 00[ ]+lea[ ]+0x0\(%edi\),%edi
+
+0+70 <nop8>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+90[ ]+nop[ ]*
+[ ]*78:[ ]+90[ ]+nop[ ]*
+[ ]*79:[ ]+8d b4 26 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+80 <nop7>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+90[ ]+nop[ ]*
+[ ]*89:[ ]+8d b4 26 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+90 <nop6>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+90[ ]+nop[ ]*
+[ ]*9a:[ ]+8d b6 00 00 00 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+a0 <nop5>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+90[ ]+nop[ ]*
+[ ]*ab:[ ]+90[ ]+nop[ ]*
+[ ]*ac:[ ]+8d 74 26 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+b0 <nop4>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+90[ ]+nop[ ]*
+[ ]*bc:[ ]+8d 74 26 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+c0 <nop3>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+90[ ]+nop[ ]*
+[ ]*cd:[ ]+8d 76 00[ ]+lea[ ]+0x0\(%esi\),%esi
+
+0+d0 <nop2>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+90[ ]+nop[ ]*
+[ ]*de:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/nops-1.s b/gas/testsuite/gas/i386/nops-1.s
new file mode 100644
index 0000000..a4fd769
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-1.s
@@ -0,0 +1,147 @@
+ .text
+nop15:
+ nop
+ .p2align 4
+
+nop14:
+ nop
+ nop
+ .p2align 4
+
+nop13:
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop12:
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop11:
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop10:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop9:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop8:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop7:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop6:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop5:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop4:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop3:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop2:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
diff --git a/gas/testsuite/gas/i386/nops-2-i386.d b/gas/testsuite/gas/i386/nops-2-i386.d
new file mode 100644
index 0000000..2b24507
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-2-i386.d
@@ -0,0 +1,166 @@
+#as: -march=i386
+#source: nops-2.s
+#objdump: -drw
+#name: i386 -march=i386 nops 2
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop>:
+[ ]*0:[ ]+0f 44 c0[ ]+cmove[ ]+%eax,%eax
+[ ]*3:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+[ ]*9:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+10 <nop15>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+[ ]*18:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+20 <nop14>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+[ ]*29:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+30 <nop13>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+[ ]*39:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+40 <nop12>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+[ ]*4a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+50 <nop11>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+[ ]*5a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+60 <nop10>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+70 <nop9>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+66 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+80 <nop8>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+90 <nop7>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+a0 <nop6>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+b0 <nop5>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+c0 <nop4>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+0f 1f 40 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+d0 <nop3>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+0f 1f 00[ ]+nopl[ ]+\(%eax\)
+
+0+e0 <nop2>:
+[ ]*e0:[ ]+90[ ]+nop[ ]*
+[ ]*e1:[ ]+90[ ]+nop[ ]*
+[ ]*e2:[ ]+90[ ]+nop[ ]*
+[ ]*e3:[ ]+90[ ]+nop[ ]*
+[ ]*e4:[ ]+90[ ]+nop[ ]*
+[ ]*e5:[ ]+90[ ]+nop[ ]*
+[ ]*e6:[ ]+90[ ]+nop[ ]*
+[ ]*e7:[ ]+90[ ]+nop[ ]*
+[ ]*e8:[ ]+90[ ]+nop[ ]*
+[ ]*e9:[ ]+90[ ]+nop[ ]*
+[ ]*ea:[ ]+90[ ]+nop[ ]*
+[ ]*eb:[ ]+90[ ]+nop[ ]*
+[ ]*ec:[ ]+90[ ]+nop[ ]*
+[ ]*ed:[ ]+90[ ]+nop[ ]*
+[ ]*ee:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/nops-2-merom.d b/gas/testsuite/gas/i386/nops-2-merom.d
new file mode 100644
index 0000000..b84aeff
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-2-merom.d
@@ -0,0 +1,160 @@
+#as: -march=i386 -mtune=merom
+#source: nops-2.s
+#objdump: -drw
+#name: i386 -march=i386 -mtune=merom nops 2
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop>:
+[ ]*0:[ ]+0f 44 c0[ ]+cmove[ ]+%eax,%eax
+[ ]*3:[ ]+66 66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+10 <nop15>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+20 <nop14>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+30 <nop13>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+66 66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+40 <nop12>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+50 <nop11>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+60 <nop10>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+70 <nop9>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+66 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+80 <nop8>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+90 <nop7>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+a0 <nop6>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+b0 <nop5>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+c0 <nop4>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+0f 1f 40 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+d0 <nop3>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+0f 1f 00[ ]+nopl[ ]+\(%eax\)
+
+0+e0 <nop2>:
+[ ]*e0:[ ]+90[ ]+nop[ ]*
+[ ]*e1:[ ]+90[ ]+nop[ ]*
+[ ]*e2:[ ]+90[ ]+nop[ ]*
+[ ]*e3:[ ]+90[ ]+nop[ ]*
+[ ]*e4:[ ]+90[ ]+nop[ ]*
+[ ]*e5:[ ]+90[ ]+nop[ ]*
+[ ]*e6:[ ]+90[ ]+nop[ ]*
+[ ]*e7:[ ]+90[ ]+nop[ ]*
+[ ]*e8:[ ]+90[ ]+nop[ ]*
+[ ]*e9:[ ]+90[ ]+nop[ ]*
+[ ]*ea:[ ]+90[ ]+nop[ ]*
+[ ]*eb:[ ]+90[ ]+nop[ ]*
+[ ]*ec:[ ]+90[ ]+nop[ ]*
+[ ]*ed:[ ]+90[ ]+nop[ ]*
+[ ]*ee:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/nops-2.d b/gas/testsuite/gas/i386/nops-2.d
new file mode 100644
index 0000000..cface9c
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-2.d
@@ -0,0 +1,165 @@
+#source: nops-2.s
+#objdump: -drw
+#name: i386 nops 2
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop>:
+[ ]*0:[ ]+0f 44 c0[ ]+cmove[ ]+%eax,%eax
+[ ]*3:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+[ ]*9:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+10 <nop15>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+[ ]*18:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+20 <nop14>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+[ ]*29:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+30 <nop13>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+[ ]*39:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+40 <nop12>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+[ ]*4a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+50 <nop11>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+[ ]*5a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+60 <nop10>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%eax,%eax,1\)
+
+0+70 <nop9>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+66 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+80 <nop8>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+90 <nop7>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+a0 <nop6>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%eax,%eax,1\)
+
+0+b0 <nop5>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%eax,%eax,1\)
+
+0+c0 <nop4>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+0f 1f 40 00[ ]+nopl[ ]+0x0\(%eax\)
+
+0+d0 <nop3>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+0f 1f 00[ ]+nopl[ ]+\(%eax\)
+
+0+e0 <nop2>:
+[ ]*e0:[ ]+90[ ]+nop[ ]*
+[ ]*e1:[ ]+90[ ]+nop[ ]*
+[ ]*e2:[ ]+90[ ]+nop[ ]*
+[ ]*e3:[ ]+90[ ]+nop[ ]*
+[ ]*e4:[ ]+90[ ]+nop[ ]*
+[ ]*e5:[ ]+90[ ]+nop[ ]*
+[ ]*e6:[ ]+90[ ]+nop[ ]*
+[ ]*e7:[ ]+90[ ]+nop[ ]*
+[ ]*e8:[ ]+90[ ]+nop[ ]*
+[ ]*e9:[ ]+90[ ]+nop[ ]*
+[ ]*ea:[ ]+90[ ]+nop[ ]*
+[ ]*eb:[ ]+90[ ]+nop[ ]*
+[ ]*ec:[ ]+90[ ]+nop[ ]*
+[ ]*ed:[ ]+90[ ]+nop[ ]*
+[ ]*ee:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/nops-2.s b/gas/testsuite/gas/i386/nops-2.s
new file mode 100644
index 0000000..afbb87e
--- /dev/null
+++ b/gas/testsuite/gas/i386/nops-2.s
@@ -0,0 +1,151 @@
+ .text
+nop:
+ cmove %eax,%eax
+ .p2align 4
+
+nop15:
+ nop
+ .p2align 4
+
+nop14:
+ nop
+ nop
+ .p2align 4
+
+nop13:
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop12:
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop11:
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop10:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop9:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop8:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop7:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop6:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop5:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop4:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop3:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop2:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
diff --git a/gas/testsuite/gas/i386/sse2.d b/gas/testsuite/gas/i386/sse2.d
index eb6a161..545def3 100644
--- a/gas/testsuite/gas/i386/sse2.d
+++ b/gas/testsuite/gas/i386/sse2.d
@@ -153,4 +153,4 @@ Disassembly of section .text:
270: 66 0f 73 f8 01[ ]+pslldq \$0x1,%xmm0
275: 66 0f 73 d8 01[ ]+psrldq \$0x1,%xmm0
27a: 66 0f 6d c8[ ]+punpckhqdq %xmm0,%xmm1
- 27e: 89 f6[ ]+mov[ ]+%esi,%esi
+ 27e: 66 90[ ]+xchg[ ]+%ax,%ax
diff --git a/gas/testsuite/gas/i386/x86-64-nops-1-k8.d b/gas/testsuite/gas/i386/x86-64-nops-1-k8.d
new file mode 100644
index 0000000..6785fbb
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-nops-1-k8.d
@@ -0,0 +1,177 @@
+#as: -mtune=k8
+#source: x86-64-nops-1.s
+#objdump: -drw
+#name: x86-64 -mtune=k8 nops 1
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop15>:
+[ ]*0:[ ]+90[ ]+nop[ ]*
+[ ]*1:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*5:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*9:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*d:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+10 <nop14>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+90[ ]+nop[ ]*
+[ ]*12:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*16:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*1a:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*1d:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+20 <nop13>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+90[ ]+nop[ ]*
+[ ]*23:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*27:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*2a:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*2d:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+30 <nop12>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+90[ ]+nop[ ]*
+[ ]*34:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*38:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*3c:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+40 <nop11>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+90[ ]+nop[ ]*
+[ ]*45:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*49:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*4d:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+50 <nop10>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+90[ ]+nop[ ]*
+[ ]*56:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*5a:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*5d:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+60 <nop9>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+90[ ]+nop[ ]*
+[ ]*67:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*6a:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*6d:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+70 <nop8>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+90[ ]+nop[ ]*
+[ ]*78:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*7c:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+80 <nop7>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+90[ ]+nop[ ]*
+[ ]*89:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*8d:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+90 <nop6>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+90[ ]+nop[ ]*
+[ ]*9a:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*9d:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+a0 <nop5>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+90[ ]+nop[ ]*
+[ ]*ab:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+[ ]*ae:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+
+0+b0 <nop4>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+90[ ]+nop[ ]*
+[ ]*bc:[ ]+66 66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+c0 <nop3>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+90[ ]+nop[ ]*
+[ ]*cd:[ ]+66 66 90[ ]+xchg[ ]+%ax,%ax
+
+0+d0 <nop2>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+90[ ]+nop[ ]*
+[ ]*de:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-nops-1-merom.d b/gas/testsuite/gas/i386/x86-64-nops-1-merom.d
new file mode 100644
index 0000000..2aa49ae
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-nops-1-merom.d
@@ -0,0 +1,156 @@
+#as: -mtune=merom
+#source: x86-64-nops-1.s
+#objdump: -drw
+#name: x86-64 -mtune=merom nops 1
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop15>:
+[ ]*0:[ ]+90[ ]+nop[ ]*
+[ ]*1:[ ]+66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%rax,%rax,1\)
+
+0+10 <nop14>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+90[ ]+nop[ ]*
+[ ]*12:[ ]+66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%rax,%rax,1\)
+
+0+20 <nop13>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+90[ ]+nop[ ]*
+[ ]*23:[ ]+66 66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%rax,%rax,1\)
+
+0+30 <nop12>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+90[ ]+nop[ ]*
+[ ]*34:[ ]+66 66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%rax,%rax,1\)
+
+0+40 <nop11>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+90[ ]+nop[ ]*
+[ ]*45:[ ]+66 66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%rax,%rax,1\)
+
+0+50 <nop10>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+90[ ]+nop[ ]*
+[ ]*56:[ ]+66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%rax,%rax,1\)
+
+0+60 <nop9>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+90[ ]+nop[ ]*
+[ ]*67:[ ]+66 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+
+0+70 <nop8>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+90[ ]+nop[ ]*
+[ ]*78:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%rax,%rax,1\)
+
+0+80 <nop7>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+90[ ]+nop[ ]*
+[ ]*89:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+
+0+90 <nop6>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+90[ ]+nop[ ]*
+[ ]*9a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+
+0+a0 <nop5>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+90[ ]+nop[ ]*
+[ ]*ab:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%rax,%rax,1\)
+
+0+b0 <nop4>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+90[ ]+nop[ ]*
+[ ]*bc:[ ]+0f 1f 40 00[ ]+nopl[ ]+0x0\(%rax\)
+
+0+c0 <nop3>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+90[ ]+nop[ ]*
+[ ]*cd:[ ]+0f 1f 00[ ]+nopl[ ]+\(%rax\)
+
+0+d0 <nop2>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+90[ ]+nop[ ]*
+[ ]*de:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-nops-1-nocona.d b/gas/testsuite/gas/i386/x86-64-nops-1-nocona.d
new file mode 100644
index 0000000..c1886b6
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-nops-1-nocona.d
@@ -0,0 +1,161 @@
+#as: -mtune=nocona
+#source: x86-64-nops-1.s
+#objdump: -drw
+#name: x86-64 -mtune=nocona nops 1
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop15>:
+[ ]*0:[ ]+90[ ]+nop[ ]*
+[ ]*1:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+[ ]*8:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%rax,%rax,1\)
+
+0+10 <nop14>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+90[ ]+nop[ ]*
+[ ]*12:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+[ ]*19:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+
+0+20 <nop13>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+90[ ]+nop[ ]*
+[ ]*23:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+[ ]*29:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+
+0+30 <nop12>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+90[ ]+nop[ ]*
+[ ]*34:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+[ ]*3a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+
+0+40 <nop11>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+90[ ]+nop[ ]*
+[ ]*45:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%rax,%rax,1\)
+[ ]*4a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+
+0+50 <nop10>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+90[ ]+nop[ ]*
+[ ]*56:[ ]+66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%rax,%rax,1\)
+
+0+60 <nop9>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+90[ ]+nop[ ]*
+[ ]*67:[ ]+66 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+
+0+70 <nop8>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+90[ ]+nop[ ]*
+[ ]*78:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%rax,%rax,1\)
+
+0+80 <nop7>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+90[ ]+nop[ ]*
+[ ]*89:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+
+0+90 <nop6>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+90[ ]+nop[ ]*
+[ ]*9a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+
+0+a0 <nop5>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+90[ ]+nop[ ]*
+[ ]*ab:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%rax,%rax,1\)
+
+0+b0 <nop4>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+90[ ]+nop[ ]*
+[ ]*bc:[ ]+0f 1f 40 00[ ]+nopl[ ]+0x0\(%rax\)
+
+0+c0 <nop3>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+90[ ]+nop[ ]*
+[ ]*cd:[ ]+0f 1f 00[ ]+nopl[ ]+\(%rax\)
+
+0+d0 <nop2>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+90[ ]+nop[ ]*
+[ ]*de:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-nops-1.d b/gas/testsuite/gas/i386/x86-64-nops-1.d
new file mode 100644
index 0000000..a6d8188
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-nops-1.d
@@ -0,0 +1,160 @@
+#source: x86-64-nops-1.s
+#objdump: -drw
+#name: x86-64 nops 1
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <nop15>:
+[ ]*0:[ ]+90[ ]+nop[ ]*
+[ ]*1:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+[ ]*8:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%rax,%rax,1\)
+
+0+10 <nop14>:
+[ ]*10:[ ]+90[ ]+nop[ ]*
+[ ]*11:[ ]+90[ ]+nop[ ]*
+[ ]*12:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+[ ]*19:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+
+0+20 <nop13>:
+[ ]*20:[ ]+90[ ]+nop[ ]*
+[ ]*21:[ ]+90[ ]+nop[ ]*
+[ ]*22:[ ]+90[ ]+nop[ ]*
+[ ]*23:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+[ ]*29:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+
+0+30 <nop12>:
+[ ]*30:[ ]+90[ ]+nop[ ]*
+[ ]*31:[ ]+90[ ]+nop[ ]*
+[ ]*32:[ ]+90[ ]+nop[ ]*
+[ ]*33:[ ]+90[ ]+nop[ ]*
+[ ]*34:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+[ ]*3a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+
+0+40 <nop11>:
+[ ]*40:[ ]+90[ ]+nop[ ]*
+[ ]*41:[ ]+90[ ]+nop[ ]*
+[ ]*42:[ ]+90[ ]+nop[ ]*
+[ ]*43:[ ]+90[ ]+nop[ ]*
+[ ]*44:[ ]+90[ ]+nop[ ]*
+[ ]*45:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%rax,%rax,1\)
+[ ]*4a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+
+0+50 <nop10>:
+[ ]*50:[ ]+90[ ]+nop[ ]*
+[ ]*51:[ ]+90[ ]+nop[ ]*
+[ ]*52:[ ]+90[ ]+nop[ ]*
+[ ]*53:[ ]+90[ ]+nop[ ]*
+[ ]*54:[ ]+90[ ]+nop[ ]*
+[ ]*55:[ ]+90[ ]+nop[ ]*
+[ ]*56:[ ]+66 2e 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+%cs:0x0\(%rax,%rax,1\)
+
+0+60 <nop9>:
+[ ]*60:[ ]+90[ ]+nop[ ]*
+[ ]*61:[ ]+90[ ]+nop[ ]*
+[ ]*62:[ ]+90[ ]+nop[ ]*
+[ ]*63:[ ]+90[ ]+nop[ ]*
+[ ]*64:[ ]+90[ ]+nop[ ]*
+[ ]*65:[ ]+90[ ]+nop[ ]*
+[ ]*66:[ ]+90[ ]+nop[ ]*
+[ ]*67:[ ]+66 0f 1f 84 00 00 00 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+
+0+70 <nop8>:
+[ ]*70:[ ]+90[ ]+nop[ ]*
+[ ]*71:[ ]+90[ ]+nop[ ]*
+[ ]*72:[ ]+90[ ]+nop[ ]*
+[ ]*73:[ ]+90[ ]+nop[ ]*
+[ ]*74:[ ]+90[ ]+nop[ ]*
+[ ]*75:[ ]+90[ ]+nop[ ]*
+[ ]*76:[ ]+90[ ]+nop[ ]*
+[ ]*77:[ ]+90[ ]+nop[ ]*
+[ ]*78:[ ]+0f 1f 84 00 00 00 00 00[ ]+nopl[ ]+0x0\(%rax,%rax,1\)
+
+0+80 <nop7>:
+[ ]*80:[ ]+90[ ]+nop[ ]*
+[ ]*81:[ ]+90[ ]+nop[ ]*
+[ ]*82:[ ]+90[ ]+nop[ ]*
+[ ]*83:[ ]+90[ ]+nop[ ]*
+[ ]*84:[ ]+90[ ]+nop[ ]*
+[ ]*85:[ ]+90[ ]+nop[ ]*
+[ ]*86:[ ]+90[ ]+nop[ ]*
+[ ]*87:[ ]+90[ ]+nop[ ]*
+[ ]*88:[ ]+90[ ]+nop[ ]*
+[ ]*89:[ ]+0f 1f 80 00 00 00 00[ ]+nopl[ ]+0x0\(%rax\)
+
+0+90 <nop6>:
+[ ]*90:[ ]+90[ ]+nop[ ]*
+[ ]*91:[ ]+90[ ]+nop[ ]*
+[ ]*92:[ ]+90[ ]+nop[ ]*
+[ ]*93:[ ]+90[ ]+nop[ ]*
+[ ]*94:[ ]+90[ ]+nop[ ]*
+[ ]*95:[ ]+90[ ]+nop[ ]*
+[ ]*96:[ ]+90[ ]+nop[ ]*
+[ ]*97:[ ]+90[ ]+nop[ ]*
+[ ]*98:[ ]+90[ ]+nop[ ]*
+[ ]*99:[ ]+90[ ]+nop[ ]*
+[ ]*9a:[ ]+66 0f 1f 44 00 00[ ]+nopw[ ]+0x0\(%rax,%rax,1\)
+
+0+a0 <nop5>:
+[ ]*a0:[ ]+90[ ]+nop[ ]*
+[ ]*a1:[ ]+90[ ]+nop[ ]*
+[ ]*a2:[ ]+90[ ]+nop[ ]*
+[ ]*a3:[ ]+90[ ]+nop[ ]*
+[ ]*a4:[ ]+90[ ]+nop[ ]*
+[ ]*a5:[ ]+90[ ]+nop[ ]*
+[ ]*a6:[ ]+90[ ]+nop[ ]*
+[ ]*a7:[ ]+90[ ]+nop[ ]*
+[ ]*a8:[ ]+90[ ]+nop[ ]*
+[ ]*a9:[ ]+90[ ]+nop[ ]*
+[ ]*aa:[ ]+90[ ]+nop[ ]*
+[ ]*ab:[ ]+0f 1f 44 00 00[ ]+nopl[ ]+0x0\(%rax,%rax,1\)
+
+0+b0 <nop4>:
+[ ]*b0:[ ]+90[ ]+nop[ ]*
+[ ]*b1:[ ]+90[ ]+nop[ ]*
+[ ]*b2:[ ]+90[ ]+nop[ ]*
+[ ]*b3:[ ]+90[ ]+nop[ ]*
+[ ]*b4:[ ]+90[ ]+nop[ ]*
+[ ]*b5:[ ]+90[ ]+nop[ ]*
+[ ]*b6:[ ]+90[ ]+nop[ ]*
+[ ]*b7:[ ]+90[ ]+nop[ ]*
+[ ]*b8:[ ]+90[ ]+nop[ ]*
+[ ]*b9:[ ]+90[ ]+nop[ ]*
+[ ]*ba:[ ]+90[ ]+nop[ ]*
+[ ]*bb:[ ]+90[ ]+nop[ ]*
+[ ]*bc:[ ]+0f 1f 40 00[ ]+nopl[ ]+0x0\(%rax\)
+
+0+c0 <nop3>:
+[ ]*c0:[ ]+90[ ]+nop[ ]*
+[ ]*c1:[ ]+90[ ]+nop[ ]*
+[ ]*c2:[ ]+90[ ]+nop[ ]*
+[ ]*c3:[ ]+90[ ]+nop[ ]*
+[ ]*c4:[ ]+90[ ]+nop[ ]*
+[ ]*c5:[ ]+90[ ]+nop[ ]*
+[ ]*c6:[ ]+90[ ]+nop[ ]*
+[ ]*c7:[ ]+90[ ]+nop[ ]*
+[ ]*c8:[ ]+90[ ]+nop[ ]*
+[ ]*c9:[ ]+90[ ]+nop[ ]*
+[ ]*ca:[ ]+90[ ]+nop[ ]*
+[ ]*cb:[ ]+90[ ]+nop[ ]*
+[ ]*cc:[ ]+90[ ]+nop[ ]*
+[ ]*cd:[ ]+0f 1f 00[ ]+nopl[ ]+\(%rax\)
+
+0+d0 <nop2>:
+[ ]*d0:[ ]+90[ ]+nop[ ]*
+[ ]*d1:[ ]+90[ ]+nop[ ]*
+[ ]*d2:[ ]+90[ ]+nop[ ]*
+[ ]*d3:[ ]+90[ ]+nop[ ]*
+[ ]*d4:[ ]+90[ ]+nop[ ]*
+[ ]*d5:[ ]+90[ ]+nop[ ]*
+[ ]*d6:[ ]+90[ ]+nop[ ]*
+[ ]*d7:[ ]+90[ ]+nop[ ]*
+[ ]*d8:[ ]+90[ ]+nop[ ]*
+[ ]*d9:[ ]+90[ ]+nop[ ]*
+[ ]*da:[ ]+90[ ]+nop[ ]*
+[ ]*db:[ ]+90[ ]+nop[ ]*
+[ ]*dc:[ ]+90[ ]+nop[ ]*
+[ ]*dd:[ ]+90[ ]+nop[ ]*
+[ ]*de:[ ]+66 90[ ]+xchg[ ]+%ax,%ax
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-nops-1.s b/gas/testsuite/gas/i386/x86-64-nops-1.s
new file mode 100644
index 0000000..a4fd769
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-nops-1.s
@@ -0,0 +1,147 @@
+ .text
+nop15:
+ nop
+ .p2align 4
+
+nop14:
+ nop
+ nop
+ .p2align 4
+
+nop13:
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop12:
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop11:
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop10:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop9:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop8:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop7:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop6:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop5:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop4:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop3:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4
+
+nop2:
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ .p2align 4