diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7988d771ca309631689b01b7036aebb3ab7148ee..a142dc7fad67a60725051f83daa0a514bf043257 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2001-01-12  Alan Modra  <alan@linuxcare.com.au>
+
+	* configure.in ([bfd_elf64_x86_64_vec]): Set target64.
+	* configure: Regenerate.
+
 2001-01-11  Peter Targett  <peter.targett@arccores.com>
 
 	* bfd-in2.h (bfd_architecture): Add bfd_mach_arc_5,
diff --git a/bfd/configure b/bfd/configure
index 370ef0c4b2adf40f1df15e825ce2c2c0e29c9453..7092544f95b4e658375f45e48143bc80ec12c431 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -5958,7 +5958,8 @@ do
     bfd_elf32_hppa_vec)		tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     bfd_elf32_i370_vec)		tb="$tb elf32-i370.lo elf32.lo $elf" ;;
     bfd_elf32_i386_vec)		tb="$tb elf32-i386.lo elf32.lo $elf" ;;
-    bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf64.lo $elf" ;;
+    bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf64.lo $elf"
+				target64=true ;;
     bfd_elf32_i860_vec)		tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     bfd_elf32_i860_little_vec)	tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     bfd_elf32_i960_vec)		tb="$tb elf32-i960.lo elf32.lo $elf" ;;
@@ -6176,17 +6177,17 @@ for ac_hdr in unistd.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6180: checking for $ac_hdr" >&5
+echo "configure:6181: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6185 "configure"
+#line 6186 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6190: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6191: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6215,12 +6216,12 @@ done
 for ac_func in getpagesize
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6219: checking for $ac_func" >&5
+echo "configure:6220: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6224 "configure"
+#line 6225 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6243,7 +6244,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6268,7 +6269,7 @@ fi
 done
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:6272: checking for working mmap" >&5
+echo "configure:6273: checking for working mmap" >&5
 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6276,7 +6277,7 @@ else
   ac_cv_func_mmap_fixed_mapped=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 6280 "configure"
+#line 6281 "configure"
 #include "confdefs.h"
 
 /* Thanks to Mike Haertel and Jim Avera for this test.
@@ -6416,7 +6417,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:6420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_mmap_fixed_mapped=yes
 else
@@ -6441,12 +6442,12 @@ fi
 for ac_func in madvise mprotect
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6445: checking for $ac_func" >&5
+echo "configure:6446: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6450 "configure"
+#line 6451 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6469,7 +6470,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
diff --git a/bfd/configure.in b/bfd/configure.in
index 0c7fd420dbc49d6d9d21049f5ff5d709b88d3383..0cdf53917d7e9f1aca0cf41a286104cf527df687 100644
--- a/bfd/configure.in
+++ b/bfd/configure.in
@@ -507,7 +507,8 @@ do
     bfd_elf32_hppa_vec)		tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
     bfd_elf32_i370_vec)		tb="$tb elf32-i370.lo elf32.lo $elf" ;;
     bfd_elf32_i386_vec)		tb="$tb elf32-i386.lo elf32.lo $elf" ;;
-    bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf64.lo $elf" ;;
+    bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf64.lo $elf"
+				target64=true ;;
     bfd_elf32_i860_vec)		tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     bfd_elf32_i860_little_vec)	tb="$tb elf32-i860.lo elf32.lo $elf" ;;
     bfd_elf32_i960_vec)		tb="$tb elf32-i960.lo elf32.lo $elf" ;;
diff --git a/gas/ChangeLog b/gas/ChangeLog
index f3b8069a47efd787e2b1b5550c2f08eba3ed1a22..e6b3a9a0bdb21676ff981111acaea8a011e9296d 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2001-01-12  Alan Modra  <alan@linuxcare.com.au>
+
+	* config/tc-i386.c (md_longopts): Recognize "--64" only for ELF.
+	(md_parse_option): Always accept "--32".
+
 2001-01-11  Peter Targett  <peter.targett@arccores.com>
 
 	* as.h (TC_ARC): Ensure struc-symbol.h included.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index fb2384b9c1115f2e9e0f8b319a8bf51a9354e992..7cca4cfe0f3df8d6aab7a38e87e26aa41aac9455 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -4366,11 +4366,14 @@ const char *md_shortopts = "kVQ:sq";
 #else
 const char *md_shortopts = "q";
 #endif
+
 struct option md_longopts[] = {
 #define OPTION_32 (OPTION_MD_BASE + 0)
   {"32", no_argument, NULL, OPTION_32},
+#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
 #define OPTION_64 (OPTION_MD_BASE + 1)
   {"64", no_argument, NULL, OPTION_64},
+#endif
   {NULL, no_argument, NULL, 0}
 };
 size_t md_longopts_size = sizeof (md_longopts);
@@ -4405,36 +4408,29 @@ md_parse_option (c, arg)
       /* -s: On i386 Solaris, this tells the native assembler to use
          .stab instead of .stab.excl.  We always use .stab anyhow.  */
       break;
-#endif
-#ifdef OBJ_ELF
-    case OPTION_32:
+
     case OPTION_64:
       {
 	const char **list, **l;
 
-	default_arch = c == OPTION_32 ? "i386" : "x86_64";
 	list = bfd_target_list ();
 	for (l = list; *l != NULL; l++)
-	  {
-	    if (c == OPTION_32)
-	      {
-		if (strcmp (*l, "elf32-i386") == 0)
-		  break;
-	      }
-	    else
-	      {
-		if (strcmp (*l, "elf64-x86-64") == 0)
-		  break;
-	      }
-	  }
+	  if (strcmp (*l, "elf64-x86-64") == 0)
+	    {
+	      default_arch = "x86_64";
+	      break;
+	    }
 	if (*l == NULL)
-	  as_fatal (_("No compiled in support for %d bit object file format"),
-		    c == OPTION_32 ? 32 : 64);
+	  as_fatal (_("No compiled in support for x86_64"));
 	free (list);
       }
       break;
 #endif
 
+    case OPTION_32:
+      default_arch = "i386";
+      break;
+
     default:
       return 0;
     }
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 4f1ddd8cd34083a8ca4add1f16efc09cd30f2e6c..1d8f6c8dbf0253fc283c004d7d09038ec5c37202 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,14 @@
+2001-01-12  Alan Modra  <alan@linuxcare.com.au>
+
+	* gas/i386/i386.exp (gas_64_check): Correct target string.
+	Use gas_64_check rather than target string to decided whether
+	x86_64 checks should run.
+
+	* gas/i386/sse2.s: Add a label to cure objdump "no symbols" error.
+	* gas/i386/ssemmx2.s: Likewise.
+	* gas/i386/sse2.d: Update to suit.
+	* gas/i386/ssemmx2.s: Likewise.
+
 2001-01-11  Peter Targett <peter.targett@arccores.com>
 
 	* gas/arc/alias.*: Removed.
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 84496610aeb544002051b0e907303b32e884e7e4..386323a07ca964f0dc75057d5570695202f71366 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -20,8 +20,9 @@ proc gas_64_check { } {
     global srcdir
 
     catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help
-    return [regexp "targets:.*x86_64" $nm_help];
+    return [regexp "targets:.*x86-64" $nm_help];
 }
+
 proc gas_32_check { } {
     global NM
     global NMFLAGS
@@ -61,7 +62,8 @@ if [expr ([istarget "i*86-*-*"] ||  [istarget "x86_64-*-*"]) && [gas_32_check]]
     }
     set ASFLAGS "$old_ASFLAGS"
 }
-if [istarget "x86_64-*-*"] then {
+
+if [gas_64_check] then {
 
     global ASFLAGS
     set old_ASFLAGS "$ASFLAGS"
diff --git a/gas/testsuite/gas/i386/sse2.d b/gas/testsuite/gas/i386/sse2.d
index 5ea977b15cd2a70c02f126314f0fae488fb22b0c..d5bcacff6db1d7367f9fd6f837e04238739c29a3 100644
--- a/gas/testsuite/gas/i386/sse2.d
+++ b/gas/testsuite/gas/i386/sse2.d
@@ -6,7 +6,7 @@
 
 Disassembly of section .text:
 
-0+ <.text>:
+0+ <foo>:
 [ 	]+0:	0f c3 00[ 	]+movnti %eax,\(%eax\)
 [ 	]+3:	0f ae f8[ 	]+sfence 
 [ 	]+6:	0f ae e8[ 	]+lfence 
diff --git a/gas/testsuite/gas/i386/sse2.s b/gas/testsuite/gas/i386/sse2.s
index 96ae296934a0f781cd62759cac3dff3338a8960c..c9971626bda3c53018550019abc6e46329dab25c 100644
--- a/gas/testsuite/gas/i386/sse2.s
+++ b/gas/testsuite/gas/i386/sse2.s
@@ -1,147 +1,149 @@
-movnti %eax, (%eax)
-sfence
-lfence
-mfence
-addpd		(%ecx),%xmm0
-addpd		%xmm2,%xmm1
-addsd		(%ebx),%xmm2
-addsd		%xmm4,%xmm3
-andnpd		0x0(%ebp),%xmm4
-andnpd		%xmm6,%xmm5
-andpd		(%edi),%xmm6
-andpd		%xmm0,%xmm7
-cmppd		$0x2,%xmm1,%xmm0
-cmppd		$0x3,(%edx),%xmm1
-cmpsd		$0x4,%xmm2,%xmm2
-cmpsd		$0x5,(%esp,1),%xmm3
-cmppd		$0x6,%xmm5,%xmm4
-cmppd		$0x7,(%esi),%xmm5
-cmpsd		$0x0,%xmm7,%xmm6
-cmpsd		$0x1,(%eax),%xmm7
-cmpeqpd	%xmm1,%xmm0
-cmpeqpd	(%edx),%xmm1
-cmpeqsd	%xmm2,%xmm2
-cmpeqsd	(%esp,1),%xmm3
-cmpltpd	%xmm5,%xmm4
-cmpltpd	(%esi),%xmm5
-cmpltsd	%xmm7,%xmm6
-cmpltsd	(%eax),%xmm7
-cmplepd	(%ecx),%xmm0
-cmplepd	%xmm2,%xmm1
-cmplesd	(%ebx),%xmm2
-cmplesd	%xmm4,%xmm3
-cmpunordpd	0x0(%ebp),%xmm4
-cmpunordpd	%xmm6,%xmm5
-cmpunordsd	(%edi),%xmm6
-cmpunordsd	%xmm0,%xmm7
-cmpneqpd	%xmm1,%xmm0
-cmpneqpd	(%edx),%xmm1
-cmpneqsd	%xmm2,%xmm2
-cmpneqsd	(%esp,1),%xmm3
-cmpnltpd	%xmm5,%xmm4
-cmpnltpd	(%esi),%xmm5
-cmpnltsd	%xmm7,%xmm6
-cmpnltsd	(%eax),%xmm7
-cmpnlepd	(%ecx),%xmm0
-cmpnlepd	%xmm2,%xmm1
-cmpnlesd	(%ebx),%xmm2
-cmpnlesd	%xmm4,%xmm3
-cmpordpd	0x0(%ebp),%xmm4
-cmpordpd	%xmm6,%xmm5
-cmpordsd	(%edi),%xmm6
-cmpordsd	%xmm0,%xmm7
-comisd		%xmm1,%xmm0
-comisd		(%edx),%xmm1
-cvtpi2pd	%mm3,%xmm2
-cvtpi2pd	(%esp,1),%xmm3
-cvtsi2sd	%ebp,%xmm4
-cvtsi2sd	(%esi),%xmm5
-cvtpd2pi	%xmm7,%mm6
-cvtpd2pi	(%eax),%mm7
-cvtsd2si	(%ecx),%eax
-cvtsd2si	%xmm2,%ecx
-cvttpd2pi	(%ebx),%mm2
-cvttpd2pi	%xmm4,%mm3
-cvttsd2si	0x0(%ebp),%esp
-cvttsd2si	%xmm6,%ebp
-divpd		%xmm1,%xmm0
-divpd		(%edx),%xmm1
-divsd		%xmm3,%xmm2
-divsd		(%esp,1),%xmm3
-ldmxcsr	0x0(%ebp)
-stmxcsr	(%esi)
-sfence
-maxpd		%xmm1,%xmm0
-maxpd		(%edx),%xmm1
-maxsd		%xmm3,%xmm2
-maxsd		(%esp,1),%xmm3
-minpd		%xmm5,%xmm4
-minpd		(%esi),%xmm5
-minsd		%xmm7,%xmm6
-minsd		(%eax),%xmm7
-movapd		%xmm1,%xmm0
-movapd		%xmm2,(%ecx)
-movapd		(%edx),%xmm2
-movhpd		%xmm5,(%esp,1)
-movhpd		(%esi),%xmm5
-movlpd		%xmm0,(%edi)
-movlpd		(%eax),%xmm0
-movmskpd	%xmm2,%ecx
-movupd		%xmm3,%xmm2
-movupd		%xmm4,(%edx)
-movupd		0x0(%ebp),%xmm4
-movsd		%xmm6,%xmm5
-movsd		%xmm7,(%esi)
-movsd		(%eax),%xmm7
-mulpd		%xmm1,%xmm0
-mulpd		(%edx),%xmm1
-mulsd		%xmm2,%xmm2
-mulsd		(%esp,1),%xmm3
-orpd		%xmm5,%xmm4
-orpd		(%esi),%xmm5
-shufpd		$0x2,(%edi),%xmm6
-shufpd		$0x3,%xmm0,%xmm7
-sqrtpd		%xmm1,%xmm0
-sqrtpd		(%edx),%xmm1
-sqrtsd		%xmm2,%xmm2
-sqrtsd		(%esp,1),%xmm3
-subpd		%xmm5,%xmm4
-subpd		(%esi),%xmm5
-subsd		%xmm7,%xmm6
-subsd		(%eax),%xmm7
-ucomisd	(%ecx),%xmm0
-ucomisd	%xmm2,%xmm1
-unpckhpd	(%ebx),%xmm2
-unpckhpd	%xmm4,%xmm3
-unpcklpd	0x0(%ebp),%xmm4
-unpcklpd	%xmm6,%xmm5
-xorpd		(%edi),%xmm6
-xorpd		%xmm0,%xmm7
-movntpd	%xmm6,(%ebx)
-xorpd	%xmm0, %xmm1
-cvtdq2pd	%xmm0, %xmm1
-cvtpd2dq	%xmm0, %xmm1
-cvtdq2ps	%xmm0, %xmm1
-cvtpd2ps	%xmm0, %xmm1
-cvtps2pd	%xmm0, %xmm1
-cvtps2dq	%xmm0, %mm1
-cvtsd2ss	%xmm0, %xmm1
-cvtss2sd	%xmm0, %xmm1
-cvttpd2dq	%xmm0, %xmm1
-cvttps2dq	%xmm0, %xmm1
-maskmovdqu	%xmm0, %xmm1
-movdqa	%xmm0, %xmm1
-movdqa	%xmm0, %xmm1
-movdqu	%xmm0, %xmm1
-movdqu	%xmm0, %xmm1
-movdq2q	%mm0, %xmm1
-movq2dq	%xmm0, %mm1
-pmuludq	%xmm0, %xmm1
-pmuludq	%xmm0, %xmm1
-pshufd	$1, %xmm0, %xmm1
-pshufhw	$1, %xmm0, %xmm1
-pshuflw	$1, %xmm0, %xmm1
-pslldq	$1, %xmm0
-psrldq	$1, %xmm0
-punpckhqdq	%xmm0, %xmm1
-.p2align 4
+foo:
+	movnti		%eax, (%eax)
+	sfence
+	lfence
+	mfence
+	addpd		(%ecx),%xmm0
+	addpd		%xmm2,%xmm1
+	addsd		(%ebx),%xmm2
+	addsd		%xmm4,%xmm3
+	andnpd		0x0(%ebp),%xmm4
+	andnpd		%xmm6,%xmm5
+	andpd		(%edi),%xmm6
+	andpd		%xmm0,%xmm7
+	cmppd		$0x2,%xmm1,%xmm0
+	cmppd		$0x3,(%edx),%xmm1
+	cmpsd		$0x4,%xmm2,%xmm2
+	cmpsd		$0x5,(%esp,1),%xmm3
+	cmppd		$0x6,%xmm5,%xmm4
+	cmppd		$0x7,(%esi),%xmm5
+	cmpsd		$0x0,%xmm7,%xmm6
+	cmpsd		$0x1,(%eax),%xmm7
+	cmpeqpd		%xmm1,%xmm0
+	cmpeqpd		(%edx),%xmm1
+	cmpeqsd		%xmm2,%xmm2
+	cmpeqsd		(%esp,1),%xmm3
+	cmpltpd		%xmm5,%xmm4
+	cmpltpd		(%esi),%xmm5
+	cmpltsd		%xmm7,%xmm6
+	cmpltsd		(%eax),%xmm7
+	cmplepd		(%ecx),%xmm0
+	cmplepd		%xmm2,%xmm1
+	cmplesd		(%ebx),%xmm2
+	cmplesd		%xmm4,%xmm3
+	cmpunordpd	0x0(%ebp),%xmm4
+	cmpunordpd	%xmm6,%xmm5
+	cmpunordsd	(%edi),%xmm6
+	cmpunordsd	%xmm0,%xmm7
+	cmpneqpd	%xmm1,%xmm0
+	cmpneqpd	(%edx),%xmm1
+	cmpneqsd	%xmm2,%xmm2
+	cmpneqsd	(%esp,1),%xmm3
+	cmpnltpd	%xmm5,%xmm4
+	cmpnltpd	(%esi),%xmm5
+	cmpnltsd	%xmm7,%xmm6
+	cmpnltsd	(%eax),%xmm7
+	cmpnlepd	(%ecx),%xmm0
+	cmpnlepd	%xmm2,%xmm1
+	cmpnlesd	(%ebx),%xmm2
+	cmpnlesd	%xmm4,%xmm3
+	cmpordpd	0x0(%ebp),%xmm4
+	cmpordpd	%xmm6,%xmm5
+	cmpordsd	(%edi),%xmm6
+	cmpordsd	%xmm0,%xmm7
+	comisd		%xmm1,%xmm0
+	comisd		(%edx),%xmm1
+	cvtpi2pd	%mm3,%xmm2
+	cvtpi2pd	(%esp,1),%xmm3
+	cvtsi2sd	%ebp,%xmm4
+	cvtsi2sd	(%esi),%xmm5
+	cvtpd2pi	%xmm7,%mm6
+	cvtpd2pi	(%eax),%mm7
+	cvtsd2si	(%ecx),%eax
+	cvtsd2si	%xmm2,%ecx
+	cvttpd2pi	(%ebx),%mm2
+	cvttpd2pi	%xmm4,%mm3
+	cvttsd2si	0x0(%ebp),%esp
+	cvttsd2si	%xmm6,%ebp
+	divpd		%xmm1,%xmm0
+	divpd		(%edx),%xmm1
+	divsd		%xmm3,%xmm2
+	divsd		(%esp,1),%xmm3
+	ldmxcsr		0x0(%ebp)
+	stmxcsr		(%esi)
+	sfence
+	maxpd		%xmm1,%xmm0
+	maxpd		(%edx),%xmm1
+	maxsd		%xmm3,%xmm2
+	maxsd		(%esp,1),%xmm3
+	minpd		%xmm5,%xmm4
+	minpd		(%esi),%xmm5
+	minsd		%xmm7,%xmm6
+	minsd		(%eax),%xmm7
+	movapd		%xmm1,%xmm0
+	movapd		%xmm2,(%ecx)
+	movapd		(%edx),%xmm2
+	movhpd		%xmm5,(%esp,1)
+	movhpd		(%esi),%xmm5
+	movlpd		%xmm0,(%edi)
+	movlpd		(%eax),%xmm0
+	movmskpd	%xmm2,%ecx
+	movupd		%xmm3,%xmm2
+	movupd		%xmm4,(%edx)
+	movupd		0x0(%ebp),%xmm4
+	movsd		%xmm6,%xmm5
+	movsd		%xmm7,(%esi)
+	movsd		(%eax),%xmm7
+	mulpd		%xmm1,%xmm0
+	mulpd		(%edx),%xmm1
+	mulsd		%xmm2,%xmm2
+	mulsd		(%esp,1),%xmm3
+	orpd		%xmm5,%xmm4
+	orpd		(%esi),%xmm5
+	shufpd		$0x2,(%edi),%xmm6
+	shufpd		$0x3,%xmm0,%xmm7
+	sqrtpd		%xmm1,%xmm0
+	sqrtpd		(%edx),%xmm1
+	sqrtsd		%xmm2,%xmm2
+	sqrtsd		(%esp,1),%xmm3
+	subpd		%xmm5,%xmm4
+	subpd		(%esi),%xmm5
+	subsd		%xmm7,%xmm6
+	subsd		(%eax),%xmm7
+	ucomisd		(%ecx),%xmm0
+	ucomisd		%xmm2,%xmm1
+	unpckhpd	(%ebx),%xmm2
+	unpckhpd	%xmm4,%xmm3
+	unpcklpd	0x0(%ebp),%xmm4
+	unpcklpd	%xmm6,%xmm5
+	xorpd		(%edi),%xmm6
+	xorpd		%xmm0,%xmm7
+	movntpd		%xmm6,(%ebx)
+	xorpd		%xmm0, %xmm1
+	cvtdq2pd	%xmm0, %xmm1
+	cvtpd2dq	%xmm0, %xmm1
+	cvtdq2ps	%xmm0, %xmm1
+	cvtpd2ps	%xmm0, %xmm1
+	cvtps2pd	%xmm0, %xmm1
+	cvtps2dq	%xmm0, %mm1
+	cvtsd2ss	%xmm0, %xmm1
+	cvtss2sd	%xmm0, %xmm1
+	cvttpd2dq	%xmm0, %xmm1
+	cvttps2dq	%xmm0, %xmm1
+	maskmovdqu	%xmm0, %xmm1
+	movdqa		%xmm0, %xmm1
+	movdqa		%xmm0, %xmm1
+	movdqu		%xmm0, %xmm1
+	movdqu		%xmm0, %xmm1
+	movdq2q		%mm0, %xmm1
+	movq2dq		%xmm0, %mm1
+	pmuludq		%xmm0, %xmm1
+	pmuludq		%xmm0, %xmm1
+	pshufd		$1, %xmm0, %xmm1
+	pshufhw		$1, %xmm0, %xmm1
+	pshuflw		$1, %xmm0, %xmm1
+	pslldq		$1, %xmm0
+	psrldq		$1, %xmm0
+	punpckhqdq	%xmm0, %xmm1
+
+ .p2align 4
diff --git a/gas/testsuite/gas/i386/ssemmx2.d b/gas/testsuite/gas/i386/ssemmx2.d
index 1dd7ef519bff0837a6365c8fd75559c02ea481f2..48918165fd3fd4ff9709a69fd81eda9298dcec08 100644
--- a/gas/testsuite/gas/i386/ssemmx2.d
+++ b/gas/testsuite/gas/i386/ssemmx2.d
@@ -6,7 +6,7 @@
 
 Disassembly of section .text:
 
-0+ <.text>:
+0+ <foo>:
 [ 	]+0:	66 0f e0 c1[ 	]+pavgb[ 	]+%xmm1,%xmm0
 [ 	]+4:	66 0f e0 0a[ 	]+pavgb[ 	]+\(%edx\),%xmm1
 [ 	]+8:	66 0f e3 d3[ 	]+pavgw[ 	]+%xmm3,%xmm2
diff --git a/gas/testsuite/gas/i386/ssemmx2.s b/gas/testsuite/gas/i386/ssemmx2.s
index 5e67fc980412c14f2875f05a2bdcb08a8e6f2529..bd3d5ea451848b9f40640396184db4bfdc280a52 100644
--- a/gas/testsuite/gas/i386/ssemmx2.s
+++ b/gas/testsuite/gas/i386/ssemmx2.s
@@ -1,80 +1,81 @@
-.code32
-pavgb		%xmm1,%xmm0
-pavgb		(%edx),%xmm1
-pavgw		%xmm3,%xmm2
-pavgw		(%esp,1),%xmm3
-pextrw		$0x0,%xmm1,%eax
-pinsrw		$0x1,(%ecx),%xmm1
-pinsrw		$0x2,%edx,%xmm2
-pmaxsw		%xmm1,%xmm0
-pmaxsw		(%edx),%xmm1
-pmaxub		%xmm2,%xmm2
-pmaxub		(%esp,1),%xmm3
-pminsw		%xmm5,%xmm4
-pminsw		(%esi),%xmm5
-pminub		%xmm7,%xmm6
-pminub		(%eax),%xmm7
-pmovmskb	%xmm5,%eax
-pmulhuw	%xmm5,%xmm4
-pmulhuw	(%esi),%xmm5
-psadbw		%xmm7,%xmm6
-psadbw		(%eax),%xmm7
-pshufd		$0x1,%xmm2,%xmm3
-pshufd		$0x4,0x0(%ebp),%xmm6
-pshufhw		$0x1,%xmm2,%xmm3
-pshufhw		$0x4,0x0(%ebp),%xmm6
-pshuflw		$0x1,%xmm2,%xmm3
-pshuflw		$0x4,0x0(%ebp),%xmm6
-movntq		%xmm2,(%eax)
-punpcklbw 0x90909090(%eax),%xmm2
-punpcklwd 0x90909090(%eax),%xmm2
-punpckldq 0x90909090(%eax),%xmm2
-packsswb 0x90909090(%eax),%xmm2
-pcmpgtb 0x90909090(%eax),%xmm2
-pcmpgtw 0x90909090(%eax),%xmm2
-pcmpgtd 0x90909090(%eax),%xmm2
-packuswb 0x90909090(%eax),%xmm2
-punpckhbw 0x90909090(%eax),%xmm2
-punpckhwd 0x90909090(%eax),%xmm2
-punpckhdq 0x90909090(%eax),%xmm2
-packssdw 0x90909090(%eax),%xmm2
-movd   0x90909090(%eax),%xmm2
-movq   0x90909090(%eax),%xmm2
-psrlw  $0x90,%xmm0
-psrld  $0x90,%xmm0
-psrlq  $0x90,%xmm0
-pcmpeqb 0x90909090(%eax),%xmm2
-pcmpeqw 0x90909090(%eax),%xmm2
-pcmpeqd 0x90909090(%eax),%xmm2
-movd   %xmm2,0x90909090(%eax)
-movq   %xmm2,0x90909090(%eax)
-psrlw  0x90909090(%eax),%xmm2
-psrld  0x90909090(%eax),%xmm2
-psrlq  0x90909090(%eax),%xmm2
-pmullw 0x90909090(%eax),%xmm2
-psubusb 0x90909090(%eax),%xmm2
-psubusw 0x90909090(%eax),%xmm2
-pand   0x90909090(%eax),%xmm2
-paddusb 0x90909090(%eax),%xmm2
-paddusw 0x90909090(%eax),%xmm2
-pandn  0x90909090(%eax),%xmm2
-psraw  0x90909090(%eax),%xmm2
-psrad  0x90909090(%eax),%xmm2
-pmulhw 0x90909090(%eax),%xmm2
-psubsb 0x90909090(%eax),%xmm2
-psubsw 0x90909090(%eax),%xmm2
-por    0x90909090(%eax),%xmm2
-paddsb 0x90909090(%eax),%xmm2
-paddsw 0x90909090(%eax),%xmm2
-pxor   0x90909090(%eax),%xmm2
-psllw  0x90909090(%eax),%xmm2
-pslld  0x90909090(%eax),%xmm2
-psllq  0x90909090(%eax),%xmm2
-pmaddwd 0x90909090(%eax),%xmm2
-psubb  0x90909090(%eax),%xmm2
-psubw  0x90909090(%eax),%xmm2
-psubd  0x90909090(%eax),%xmm2
-paddb  0x90909090(%eax),%xmm2
-paddw  0x90909090(%eax),%xmm2
-paddd  0x90909090(%eax),%xmm2
-.p2align 4
+ .code32
+foo:
+	pavgb		%xmm1,%xmm0
+	pavgb		(%edx),%xmm1
+	pavgw		%xmm3,%xmm2
+	pavgw		(%esp,1),%xmm3
+	pextrw		$0x0,%xmm1,%eax
+	pinsrw		$0x1,(%ecx),%xmm1
+	pinsrw		$0x2,%edx,%xmm2
+	pmaxsw		%xmm1,%xmm0
+	pmaxsw		(%edx),%xmm1
+	pmaxub		%xmm2,%xmm2
+	pmaxub		(%esp,1),%xmm3
+	pminsw		%xmm5,%xmm4
+	pminsw		(%esi),%xmm5
+	pminub		%xmm7,%xmm6
+	pminub		(%eax),%xmm7
+	pmovmskb	%xmm5,%eax
+	pmulhuw		%xmm5,%xmm4
+	pmulhuw		(%esi),%xmm5
+	psadbw		%xmm7,%xmm6
+	psadbw		(%eax),%xmm7
+	pshufd		$0x1,%xmm2,%xmm3
+	pshufd		$0x4,0x0(%ebp),%xmm6
+	pshufhw		$0x1,%xmm2,%xmm3
+	pshufhw		$0x4,0x0(%ebp),%xmm6
+	pshuflw		$0x1,%xmm2,%xmm3
+	pshuflw		$0x4,0x0(%ebp),%xmm6
+	movntq		%xmm2,(%eax)
+	punpcklbw	0x90909090(%eax),%xmm2
+	punpcklwd	0x90909090(%eax),%xmm2
+	punpckldq	0x90909090(%eax),%xmm2
+	packsswb	0x90909090(%eax),%xmm2
+	pcmpgtb		0x90909090(%eax),%xmm2
+	pcmpgtw		0x90909090(%eax),%xmm2
+	pcmpgtd		0x90909090(%eax),%xmm2
+	packuswb	0x90909090(%eax),%xmm2
+	punpckhbw	0x90909090(%eax),%xmm2
+	punpckhwd	0x90909090(%eax),%xmm2
+	punpckhdq	0x90909090(%eax),%xmm2
+	packssdw	0x90909090(%eax),%xmm2
+	movd		0x90909090(%eax),%xmm2
+	movq		0x90909090(%eax),%xmm2
+	psrlw		$0x90,%xmm0
+	psrld		$0x90,%xmm0
+	psrlq		$0x90,%xmm0
+	pcmpeqb		0x90909090(%eax),%xmm2
+	pcmpeqw		0x90909090(%eax),%xmm2
+	pcmpeqd		0x90909090(%eax),%xmm2
+	movd		%xmm2,0x90909090(%eax)
+	movq		%xmm2,0x90909090(%eax)
+	psrlw		0x90909090(%eax),%xmm2
+	psrld		0x90909090(%eax),%xmm2
+	psrlq		0x90909090(%eax),%xmm2
+	pmullw		0x90909090(%eax),%xmm2
+	psubusb		0x90909090(%eax),%xmm2
+	psubusw		0x90909090(%eax),%xmm2
+	pand		0x90909090(%eax),%xmm2
+	paddusb		0x90909090(%eax),%xmm2
+	paddusw		0x90909090(%eax),%xmm2
+	pandn		0x90909090(%eax),%xmm2
+	psraw		0x90909090(%eax),%xmm2
+	psrad		0x90909090(%eax),%xmm2
+	pmulhw		0x90909090(%eax),%xmm2
+	psubsb		0x90909090(%eax),%xmm2
+	psubsw		0x90909090(%eax),%xmm2
+	por		0x90909090(%eax),%xmm2
+	paddsb		0x90909090(%eax),%xmm2
+	paddsw		0x90909090(%eax),%xmm2
+	pxor		0x90909090(%eax),%xmm2
+	psllw		0x90909090(%eax),%xmm2
+	pslld		0x90909090(%eax),%xmm2
+	psllq		0x90909090(%eax),%xmm2
+	pmaddwd		0x90909090(%eax),%xmm2
+	psubb		0x90909090(%eax),%xmm2
+	psubw		0x90909090(%eax),%xmm2
+	psubd		0x90909090(%eax),%xmm2
+	paddb		0x90909090(%eax),%xmm2
+	paddw		0x90909090(%eax),%xmm2
+	paddd		0x90909090(%eax),%xmm2
+ .p2align 4