This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.13-51-g786e84c
- From: drepper at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 21 Mar 2011 09:38:48 -0000
- Subject: 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