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.13-51-g786e84c


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  786e84c533d00573fa0ba7e701b1ecb03f0111fb (commit)
       via  c97a1282a4d9ff5d462fa5d8f20797ded3629500 (commit)
      from  2a1156010784332cbe4bf033ccedb19f52e56a75 (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=786e84c533d00573fa0ba7e701b1ecb03f0111fb

commit 786e84c533d00573fa0ba7e701b1ecb03f0111fb
Author: Ulrich Drepper <drepper@gmail.com>
Date:   Mon Mar 21 05:38:07 2011 -0400

    Fix whitespace issue.

diff --git a/string/test-strncmp.c b/string/test-strncmp.c
index 11c681e..00971df 100644
--- a/string/test-strncmp.c
+++ b/string/test-strncmp.c
@@ -1,5 +1,5 @@
 /* Test and measure strncmp functions.
-   Copyright (C) 1999, 2002, 2003, 2010 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2002, 2003, 2010, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Jakub Jelinek <jakub@redhat.com>, 1999.
 
@@ -108,13 +108,13 @@ do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char,
       s2 = (char*)(buf2 + page_size);
       if (HP_TIMING_AVAIL)
 	printf ("Length %4zd/%4zd:", len, n);
-	
+
       FOR_EACH_IMPL (impl, 0)
 	do_one_test (impl, s1, s2, n, 0);
 
       if (HP_TIMING_AVAIL)
 	putchar ('\n');
-	
+
       return;
     }
 
@@ -124,13 +124,13 @@ do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char,
 
   s1 = (char*)(buf1 + page_size - n);
   s2 = (char*)(buf2 + page_size - n);
-  
+
   if (align1 < align_n)
     s1 -= (align_n - align1);
-    
+
   if (align2 < align_n)
     s2 -= (align_n - align2);
-    
+
   for (i = 0; i < n; i++)
     s1[i] = s2[i] = 1 + 23 * i % max_char;
 
@@ -212,7 +212,7 @@ do_page_test (size_t offset1, size_t offset2, char *s2)
   s2 += offset2;
 
   exp_result= *s1;
-  
+
   FOR_EACH_IMPL (impl, 0)
     {
       check_result (impl, s1, s2, page_size, -exp_result);
@@ -402,7 +402,7 @@ test_main (void)
       do_test (2 * i, i, 8 << i, 16 << i, 255, 0);
       do_test (2 * i, i, 8 << i, 16 << i, 255, 1);
     }
-    
+
   do_test_limit (0, 0, 0, 0, 127, 0);
   do_test_limit (4, 0, 21, 20, 127, 0);
   do_test_limit (0, 4, 21, 20, 127, 0);

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

commit c97a1282a4d9ff5d462fa5d8f20797ded3629500
Author: H.J. Lu <hongjiu.lu@intel.com>
Date:   Mon Mar 21 05:35:38 2011 -0400

    Handle page boundaries in x86 SSE4.2 strncmp.

diff --git a/ChangeLog b/ChangeLog
index 70b6faf..8e59560 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-03-20  H.J. Lu  <hongjiu.lu@intel.com>
+
+	[BZ #12597]
+	* string/test-strncmp.c (do_page_test): New function.
+	(check2): Likewise.
+	(test_main): Call check2.
+	* sysdeps/x86_64/multiarch/strcmp.S: Properly cross page boundary.
+
 2011-03-20  Ulrich Drepper  <drepper@gmail.com>
 
 	[BZ #12587]
diff --git a/NEWS b/NEWS
index 0bf33f5..4557b45 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes.  2011-3-20
+GNU C Library NEWS -- history of user-visible changes.  2011-3-21
 Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
 See the end for copying conditions.
 
@@ -9,7 +9,7 @@ Version 2.14
 
 * The following bugs are resolved with this release:
 
-  11724, 12445, 12454, 12460, 12469, 12489, 12509, 12510, 12583, 12587
+  11724, 12445, 12454, 12460, 12469, 12489, 12509, 12510, 12583, 12587, 12597
 
 Version 2.13
 
diff --git a/string/test-strncmp.c b/string/test-strncmp.c
index 3687879..11c681e 100644
--- a/string/test-strncmp.c
+++ b/string/test-strncmp.c
@@ -200,6 +200,27 @@ do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char,
 }
 
 static void
+do_page_test (size_t offset1, size_t offset2, char *s2)
+{
+  char *s1;
+  int exp_result;
+
+  if (offset1 >= page_size || offset2 >= page_size)
+    return;
+
+  s1 = (char *) (buf1 + offset1);
+  s2 += offset2;
+
+  exp_result= *s1;
+  
+  FOR_EACH_IMPL (impl, 0)
+    {
+      check_result (impl, s1, s2, page_size, -exp_result);
+      check_result (impl, s2, s1, page_size, exp_result);
+    }
+}
+
+static void
 do_random_tests (void)
 {
   size_t i, j, n, align1, align2, pos, len1, len2, size;
@@ -312,6 +333,25 @@ check1 (void)
     }
 }
 
+static void
+check2 (void)
+{
+  size_t i;
+  char *s1, *s2;
+
+  s1 = (char *) buf1;
+  for (i = 0; i < page_size - 1; i++)
+    s1[i] = 23;
+  s1[i] = 0;
+
+  s2 = strdup (s1);
+
+  for (i = 0; i < 64; ++i)
+    do_page_test (3990 + i, 2635, s2);
+
+  free (s2);
+}
+
 int
 test_main (void)
 {
@@ -320,6 +360,7 @@ test_main (void)
   test_init ();
 
   check1 ();
+  check2 ();
 
   printf ("%23s", "");
   FOR_EACH_IMPL (impl, 0)
diff --git a/sysdeps/x86_64/multiarch/strcmp.S b/sysdeps/x86_64/multiarch/strcmp.S
index 1859289..8879855 100644
--- a/sysdeps/x86_64/multiarch/strcmp.S
+++ b/sysdeps/x86_64/multiarch/strcmp.S
@@ -452,6 +452,7 @@ LABEL(loop_ashr_1_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_1_use_sse4_2)
 
+LABEL(nibble_ashr_1_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $1, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -499,7 +500,7 @@ LABEL(nibble_ashr_1_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$14, %ecx
-	ja	LABEL(loop_ashr_1_use_sse4_2)
+	ja	LABEL(nibble_ashr_1_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -544,6 +545,7 @@ LABEL(loop_ashr_2_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_2_use_sse4_2)
 
+LABEL(nibble_ashr_2_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $2, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -591,7 +593,7 @@ LABEL(nibble_ashr_2_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$13, %ecx
-	ja	LABEL(loop_ashr_2_use_sse4_2)
+	ja	LABEL(nibble_ashr_2_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -636,6 +638,7 @@ LABEL(loop_ashr_3_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_3_use_sse4_2)
 
+LABEL(nibble_ashr_3_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $3, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -683,7 +686,7 @@ LABEL(nibble_ashr_3_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$12, %ecx
-	ja	LABEL(loop_ashr_3_use_sse4_2)
+	ja	LABEL(nibble_ashr_3_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -729,6 +732,7 @@ LABEL(loop_ashr_4_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_4_use_sse4_2)
 
+LABEL(nibble_ashr_4_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $4, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -776,7 +780,7 @@ LABEL(nibble_ashr_4_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$11, %ecx
-	ja	LABEL(loop_ashr_4_use_sse4_2)
+	ja	LABEL(nibble_ashr_4_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -822,6 +826,7 @@ LABEL(loop_ashr_5_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_5_use_sse4_2)
 
+LABEL(nibble_ashr_5_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $5, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -870,7 +875,7 @@ LABEL(nibble_ashr_5_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$10, %ecx
-	ja	LABEL(loop_ashr_5_use_sse4_2)
+	ja	LABEL(nibble_ashr_5_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -916,6 +921,7 @@ LABEL(loop_ashr_6_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_6_use_sse4_2)
 
+LABEL(nibble_ashr_6_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $6, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -963,7 +969,7 @@ LABEL(nibble_ashr_6_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$9, %ecx
-	ja	LABEL(loop_ashr_6_use_sse4_2)
+	ja	LABEL(nibble_ashr_6_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -1009,6 +1015,7 @@ LABEL(loop_ashr_7_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_7_use_sse4_2)
 
+LABEL(nibble_ashr_7_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $7, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -1056,7 +1063,7 @@ LABEL(nibble_ashr_7_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$8, %ecx
-	ja	LABEL(loop_ashr_7_use_sse4_2)
+	ja	LABEL(nibble_ashr_7_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -1102,6 +1109,7 @@ LABEL(loop_ashr_8_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_8_use_sse4_2)
 
+LABEL(nibble_ashr_8_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $8, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -1149,7 +1157,7 @@ LABEL(nibble_ashr_8_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$7, %ecx
-	ja	LABEL(loop_ashr_8_use_sse4_2)
+	ja	LABEL(nibble_ashr_8_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -1195,6 +1203,7 @@ LABEL(loop_ashr_9_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_9_use_sse4_2)
 
+LABEL(nibble_ashr_9_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 
 	palignr $9, -16(%rdi, %rdx), %xmm0
@@ -1243,7 +1252,7 @@ LABEL(nibble_ashr_9_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$6, %ecx
-	ja	LABEL(loop_ashr_9_use_sse4_2)
+	ja	LABEL(nibble_ashr_9_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -1289,6 +1298,7 @@ LABEL(loop_ashr_10_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_10_use_sse4_2)
 
+LABEL(nibble_ashr_10_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $10, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -1336,7 +1346,7 @@ LABEL(nibble_ashr_10_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$5, %ecx
-	ja	LABEL(loop_ashr_10_use_sse4_2)
+	ja	LABEL(nibble_ashr_10_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -1382,6 +1392,7 @@ LABEL(loop_ashr_11_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_11_use_sse4_2)
 
+LABEL(nibble_ashr_11_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $11, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -1429,7 +1440,7 @@ LABEL(nibble_ashr_11_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$4, %ecx
-	ja	LABEL(loop_ashr_11_use_sse4_2)
+	ja	LABEL(nibble_ashr_11_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -1475,6 +1486,7 @@ LABEL(loop_ashr_12_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_12_use_sse4_2)
 
+LABEL(nibble_ashr_12_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $12, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -1522,7 +1534,7 @@ LABEL(nibble_ashr_12_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$3, %ecx
-	ja	LABEL(loop_ashr_12_use_sse4_2)
+	ja	LABEL(nibble_ashr_12_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -1569,6 +1581,7 @@ LABEL(loop_ashr_13_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_13_use_sse4_2)
 
+LABEL(nibble_ashr_13_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $13, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -1616,7 +1629,7 @@ LABEL(nibble_ashr_13_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$2, %ecx
-	ja	LABEL(loop_ashr_13_use_sse4_2)
+	ja	LABEL(nibble_ashr_13_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -1663,6 +1676,7 @@ LABEL(loop_ashr_14_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_14_use_sse4_2)
 
+LABEL(nibble_ashr_14_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $14, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -1710,7 +1724,7 @@ LABEL(nibble_ashr_14_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$1, %ecx
-	ja	LABEL(loop_ashr_14_use_sse4_2)
+	ja	LABEL(nibble_ashr_14_use_sse4_2_restart)
 
 	jmp	LABEL(nibble_ashr_use_sse4_2_exit)
 
@@ -1759,6 +1773,7 @@ LABEL(loop_ashr_15_use_sse4_2):
 	add	$16, %r10
 	jg	LABEL(nibble_ashr_15_use_sse4_2)
 
+LABEL(nibble_ashr_15_use_sse4_2_restart):
 	movdqa	(%rdi, %rdx), %xmm0
 	palignr $15, -16(%rdi, %rdx), %xmm0
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
@@ -1806,7 +1821,7 @@ LABEL(nibble_ashr_15_use_sse4_2):
 	jae	LABEL(nibble_ashr_use_sse4_2_exit)
 # endif
 	cmp	$0, %ecx
-	ja	LABEL(loop_ashr_15_use_sse4_2)
+	ja	LABEL(nibble_ashr_15_use_sse4_2_restart)
 
 LABEL(nibble_ashr_use_sse4_2_exit):
 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L

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

Summary of changes:
 ChangeLog                         |    8 +++++
 NEWS                              |    4 +-
 string/test-strncmp.c             |   55 ++++++++++++++++++++++++++++++++-----
 sysdeps/x86_64/multiarch/strcmp.S |   45 ++++++++++++++++++++----------
 4 files changed, 88 insertions(+), 24 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]