From 6e0b89ee6c97bd3145b27d67b20514f907e5fefd Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 12 Jan 2001 03:34:49 +0000 Subject: [PATCH] Cure recent x86 warts. --- bfd/ChangeLog | 5 + bfd/configure | 27 ++-- bfd/configure.in | 3 +- gas/ChangeLog | 5 + gas/config/tc-i386.c | 32 ++--- gas/testsuite/ChangeLog | 11 ++ gas/testsuite/gas/i386/i386.exp | 6 +- gas/testsuite/gas/i386/sse2.d | 2 +- gas/testsuite/gas/i386/sse2.s | 296 ++++++++++++++++++++------------------- gas/testsuite/gas/i386/ssemmx2.d | 2 +- gas/testsuite/gas/i386/ssemmx2.s | 161 ++++++++++----------- 11 files changed, 287 insertions(+), 263 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7988d77..a142dc7 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2001-01-12 Alan Modra + + * configure.in ([bfd_elf64_x86_64_vec]): Set target64. + * configure: Regenerate. + 2001-01-11 Peter Targett * bfd-in2.h (bfd_architecture): Add bfd_mach_arc_5, diff --git a/bfd/configure b/bfd/configure index 370ef0c..7092544 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 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 <&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 <&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 <&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 0c7fd42..0cdf539 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 f3b8069..e6b3a9a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2001-01-12 Alan Modra + + * config/tc-i386.c (md_longopts): Recognize "--64" only for ELF. + (md_parse_option): Always accept "--32". + 2001-01-11 Peter Targett * as.h (TC_ARC): Ensure struc-symbol.h included. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index fb2384b..7cca4cf 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 4f1ddd8..1d8f6c8 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2001-01-12 Alan Modra + + * 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 * gas/arc/alias.*: Removed. diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 8449661..386323a 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 5ea977b..d5bcacf 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+ : [ ]+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 96ae296..c997162 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 1dd7ef5..4891816 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+ : [ ]+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 5e67fc9..bd3d5ea 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 -- 2.7.4