Cure recent x86 warts.
authorAlan Modra <amodra@gmail.com>
Fri, 12 Jan 2001 03:34:49 +0000 (03:34 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 12 Jan 2001 03:34:49 +0000 (03:34 +0000)
bfd/ChangeLog
bfd/configure
bfd/configure.in
gas/ChangeLog
gas/config/tc-i386.c
gas/testsuite/ChangeLog
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/sse2.d
gas/testsuite/gas/i386/sse2.s
gas/testsuite/gas/i386/ssemmx2.d
gas/testsuite/gas/i386/ssemmx2.s

index 7988d771ca309631689b01b7036aebb3ab7148ee..a142dc7fad67a60725051f83daa0a514bf043257 100644 (file)
@@ -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,
index 370ef0c4b2adf40f1df15e825ce2c2c0e29c9453..7092544f95b4e658375f45e48143bc80ec12c431 100755 (executable)
@@ -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
index 0c7fd420dbc49d6d9d21049f5ff5d709b88d3383..0cdf53917d7e9f1aca0cf41a286104cf527df687 100644 (file)
@@ -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" ;;
index f3b8069a47efd787e2b1b5550c2f08eba3ed1a22..e6b3a9a0bdb21676ff981111acaea8a011e9296d 100644 (file)
@@ -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.
index fb2384b9c1115f2e9e0f8b319a8bf51a9354e992..7cca4cfe0f3df8d6aab7a38e87e26aa41aac9455 100644 (file)
@@ -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;
     }
index 4f1ddd8cd34083a8ca4add1f16efc09cd30f2e6c..1d8f6c8dbf0253fc283c004d7d09038ec5c37202 100644 (file)
@@ -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.
index 84496610aeb544002051b0e907303b32e884e7e4..386323a07ca964f0dc75057d5570695202f71366 100644 (file)
@@ -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"
index 5ea977b15cd2a70c02f126314f0fae488fb22b0c..d5bcacff6db1d7367f9fd6f837e04238739c29a3 100644 (file)
@@ -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 
index 96ae296934a0f781cd62759cac3dff3338a8960c..c9971626bda3c53018550019abc6e46329dab25c 100644 (file)
-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
index 1dd7ef519bff0837a6365c8fd75559c02ea481f2..48918165fd3fd4ff9709a69fd81eda9298dcec08 100644 (file)
@@ -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
index 5e67fc980412c14f2875f05a2bdcb08a8e6f2529..bd3d5ea451848b9f40640396184db4bfdc280a52 100644 (file)
@@ -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