This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch, master, updated. glibc-2.10-196-gd28797e


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  d28797e426aa7e4e380a7ae10faf4aa3c4767e0b (commit)
      from  666a9871f7afc40aebcc28eab8890ab99ee01a47 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d28797e426aa7e4e380a7ae10faf4aa3c4767e0b

commit d28797e426aa7e4e380a7ae10faf4aa3c4767e0b
Author: Ulrich Drepper <drepper@redhat.com>
Date:   Thu Jul 23 13:15:17 2009 -0700

    Perform test for Arom x86-64 in central place and handle it.
    
    There will be more than one function which, in multiarch mode, wants
    to use SSSE3.  We should not test in each of them for Atoms with
    slow SSSE3.  Instead, disable the SSSE3 bit in the startup code for
    such machines.

diff --git a/ChangeLog b/ChangeLog
index 7bc9fc3..1498e4a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2009-07-23  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Reset
+	SSSE3 bit for Atoms.
+	* sysdeps/x86_64/multiarch/strcpy.S: New need to perform Atom test
+	here anymore.
+
 	* posix/tst-rfc3484.c (do_test): Initialize entire sockaddr_in
 	structure before copying it to avoid warning.
 	* posix/tst-rfc3484-2.c (do_test): Likewise.
diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c
index 29e6873..35fd19a 100644
--- a/sysdeps/x86_64/multiarch/init-arch.c
+++ b/sysdeps/x86_64/multiarch/init-arch.c
@@ -68,7 +68,13 @@ __init_cpu_features (void)
 	  __cpu_features.model += extended_model;
 	}
       else if (__cpu_features.family == 0x06)
-	__cpu_features.model += extended_model;
+	{
+	  __cpu_features.model += extended_model;
+
+	  if (__cpu_features.model == 0x1c)
+	    /* Avoid SSSE3 on Atom since it is slow.  */
+	    __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx &= ~(1 << 9);
+	}
     }
   /* This spells out "AuthenticAMD".  */
   else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65)
diff --git a/sysdeps/x86_64/multiarch/strcpy.S b/sysdeps/x86_64/multiarch/strcpy.S
index 25cd013..7e400a9 100644
--- a/sysdeps/x86_64/multiarch/strcpy.S
+++ b/sysdeps/x86_64/multiarch/strcpy.S
@@ -64,16 +64,9 @@ ENTRY(STRCPY)
 	call	__init_cpu_features
 1:	leaq	STRCPY_SSE2(%rip), %rax
 	testl	$(1<<9), __cpu_features+CPUID_OFFSET+COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET(%rip)
-	jz	3f
-/* Avoid SSSE3 strcpy on Atom since it is slow.  */
-	cmpl	$1, __cpu_features+KIND_OFFSET(%rip)
-	jne	2f
-	cmpl	$6, __cpu_features+FAMILY_OFFSET(%rip)
-	jne	2f
-	cmpl	$28, __cpu_features+MODEL_OFFSET(%rip)
-	jz	3f
-2:	leaq	STRCPY_SSSE3(%rip), %rax
-3:	ret
+	jz	2f
+	leaq	STRCPY_SSSE3(%rip), %rax
+2:	ret
 END(STRCPY)
 
 	.section .text.ssse3,"ax",@progbits

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                            |    5 +++++
 sysdeps/x86_64/multiarch/init-arch.c |    8 +++++++-
 sysdeps/x86_64/multiarch/strcpy.S    |   13 +++----------
 3 files changed, 15 insertions(+), 11 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]