mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Optimized wcschr and wcscpy for x86-64 and x86-32
This commit is contained in:
@ -221,14 +221,14 @@ do_test (size_t align1, size_t align2, size_t len, int max_char,
|
||||
static void
|
||||
do_random_tests (void)
|
||||
{
|
||||
for (size_t a = 0; a < CHARBYTES; a += CHARALIGN)
|
||||
for (size_t b = 0; b < CHARBYTES; b += CHARALIGN)
|
||||
{
|
||||
UCHAR *p1 = (UCHAR *) (buf1 + page_size - 512 * CHARBYTES - a);
|
||||
UCHAR *p2 = (UCHAR *) (buf2 + page_size - 512 * CHARBYTES - b);
|
||||
UCHAR *p1 = (UCHAR *) (buf1 + page_size - 512 * CHARBYTES);
|
||||
UCHAR *p2 = (UCHAR *) (buf2 + page_size - 512 * CHARBYTES);
|
||||
|
||||
for (size_t n = 0; n < ITERATIONS; n++)
|
||||
{
|
||||
/* for wcscmp case align1 and align2 mean here alignment in wchar_t symbols, it
|
||||
equal 4*k alignment in bytes, we don't check other alignments like for example p1 = (wchar_t *)(buf1 + 1)
|
||||
because it's wrong using of wchar_t type. */
|
||||
size_t align1 = random () & 31;
|
||||
size_t align2;
|
||||
if (random () & 1)
|
||||
@ -274,7 +274,7 @@ do_random_tests (void)
|
||||
}
|
||||
|
||||
int result = 0;
|
||||
MEMCPY ((CHAR *) (p2 + align2), (CHAR *) (p1 + align1), pos);
|
||||
MEMCPY (p2 + align2, p1 + align1, pos);
|
||||
if (pos < len1)
|
||||
{
|
||||
if (p2[align2 + pos] == p1[align1 + pos])
|
||||
@ -302,13 +302,12 @@ do_random_tests (void)
|
||||
|| (r < 0 && result >= 0)
|
||||
|| (r > 0 && result <= 0))
|
||||
{
|
||||
error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %d != %d, p1 %p p2 %p",
|
||||
error (0, 0, "Iteration %zd - wrong result in function %s (align in bytes: %zd, align in bytes: %zd, len1: %zd, len2: %zd, pos: %zd) %d != %d, p1 %p p2 %p",
|
||||
n, impl->name, (size_t) (p1 + align1) & 63, (size_t) (p1 + align2) & 63, len1, len2, pos, r, result, p1, p2);
|
||||
ret = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user