mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Fix handling of tail bytes of buffer in SSE2/SSSE3 x86-64 version strn{,case}cmp
This commit is contained in:
parent
cf7a1eb81d
commit
45db99c7d0
@ -1,3 +1,11 @@
|
|||||||
|
2010-10-03 Ulrich Drepper <drepper@gmail.com>
|
||||||
|
|
||||||
|
[BZ #12077]
|
||||||
|
* sysdeps/x86_64/strcmp.S: Fix handling of remaining bytes in buffer
|
||||||
|
for strncmp and strncasecmp.
|
||||||
|
* string/stratcliff.c: Add tests for strcmp and strncmp.
|
||||||
|
* wcsmbs/wcsatcliff.c: Adjust for stratcliff change.
|
||||||
|
|
||||||
2010-09-28 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
|
2010-09-28 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
|
||||||
|
|
||||||
* sysdeps/sh/sh4/fpu/fpu_control.h: Add 'extern "C"' protection to
|
* sysdeps/sh/sh4/fpu/fpu_control.h: Add 'extern "C"' protection to
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* Test for string function add boundaries of usable memory.
|
/* Test for string function add boundaries of usable memory.
|
||||||
Copyright (C) 1996,1997,1999-2003,2007, 2009 Free Software Foundation, Inc.
|
Copyright (C) 1996,1997,1999-2003,2007,2009,2010
|
||||||
|
Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||||
|
|
||||||
@ -47,6 +48,8 @@
|
|||||||
# define MEMCPY memcpy
|
# define MEMCPY memcpy
|
||||||
# define MEMPCPY mempcpy
|
# define MEMPCPY mempcpy
|
||||||
# define MEMCHR memchr
|
# define MEMCHR memchr
|
||||||
|
# define STRCMP strcmp
|
||||||
|
# define STRNCMP strncmp
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -70,12 +73,12 @@ do_test (void)
|
|||||||
if (adr == MAP_FAILED || dest == MAP_FAILED)
|
if (adr == MAP_FAILED || dest == MAP_FAILED)
|
||||||
{
|
{
|
||||||
if (errno == ENOSYS)
|
if (errno == ENOSYS)
|
||||||
puts ("No test, mmap not available.");
|
puts ("No test, mmap not available.");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf ("mmap failed: %m");
|
printf ("mmap failed: %m");
|
||||||
result = 1;
|
result = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -93,8 +96,8 @@ do_test (void)
|
|||||||
|
|
||||||
/* strlen/wcslen test */
|
/* strlen/wcslen test */
|
||||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
||||||
{
|
{
|
||||||
adr[inner] = L('\0');
|
adr[inner] = L('\0');
|
||||||
|
|
||||||
@ -107,12 +110,12 @@ do_test (void)
|
|||||||
|
|
||||||
adr[inner] = L('T');
|
adr[inner] = L('T');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* strnlen/wcsnlen test */
|
/* strnlen/wcsnlen test */
|
||||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
||||||
{
|
{
|
||||||
adr[inner] = L('\0');
|
adr[inner] = L('\0');
|
||||||
|
|
||||||
@ -126,9 +129,9 @@ do_test (void)
|
|||||||
|
|
||||||
adr[inner] = L('T');
|
adr[inner] = L('T');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (inner = MAX (outer, nchars - 64); inner <= nchars; ++inner)
|
for (inner = MAX (outer, nchars - 64); inner <= nchars; ++inner)
|
||||||
{
|
{
|
||||||
if (STRNLEN (&adr[outer], inner - outer)
|
if (STRNLEN (&adr[outer], inner - outer)
|
||||||
@ -139,11 +142,11 @@ do_test (void)
|
|||||||
result = 1;
|
result = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* strchr/wcschr test */
|
/* strchr/wcschr test */
|
||||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||||
{
|
{
|
||||||
for (inner = middle; inner < nchars; ++inner)
|
for (inner = middle; inner < nchars; ++inner)
|
||||||
@ -167,7 +170,7 @@ do_test (void)
|
|||||||
adr[middle] = L('T');
|
adr[middle] = L('T');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Special test. */
|
/* Special test. */
|
||||||
adr[nchars - 1] = L('\0');
|
adr[nchars - 1] = L('\0');
|
||||||
@ -180,7 +183,7 @@ do_test (void)
|
|||||||
|
|
||||||
/* strrchr/wcsrchr test */
|
/* strrchr/wcsrchr test */
|
||||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||||
{
|
{
|
||||||
for (inner = middle; inner < nchars; ++inner)
|
for (inner = middle; inner < nchars; ++inner)
|
||||||
@ -204,11 +207,11 @@ do_test (void)
|
|||||||
adr[middle] = L('T');
|
adr[middle] = L('T');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* memchr test */
|
/* memchr test */
|
||||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||||
{
|
{
|
||||||
adr[middle] = L('V');
|
adr[middle] = L('V');
|
||||||
@ -224,9 +227,9 @@ do_test (void)
|
|||||||
|
|
||||||
adr[middle] = L('T');
|
adr[middle] = L('T');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
CHAR *cp = MEMCHR (&adr[outer], L('V'), nchars - outer);
|
CHAR *cp = MEMCHR (&adr[outer], L('V'), nchars - outer);
|
||||||
|
|
||||||
if (cp != NULL)
|
if (cp != NULL)
|
||||||
@ -235,13 +238,13 @@ do_test (void)
|
|||||||
STRINGIFY (MEMCHR), outer);
|
STRINGIFY (MEMCHR), outer);
|
||||||
result = 1;
|
result = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function only exists for single-byte characters. */
|
/* This function only exists for single-byte characters. */
|
||||||
#ifndef WCSTEST
|
#ifndef WCSTEST
|
||||||
/* rawmemchr test */
|
/* rawmemchr test */
|
||||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||||
{
|
{
|
||||||
adr[middle] = L('V');
|
adr[middle] = L('V');
|
||||||
@ -257,13 +260,13 @@ do_test (void)
|
|||||||
|
|
||||||
adr[middle] = L('T');
|
adr[middle] = L('T');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* strcpy/wcscpy test */
|
/* strcpy/wcscpy test */
|
||||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
||||||
{
|
{
|
||||||
adr[inner] = L('\0');
|
adr[inner] = L('\0');
|
||||||
|
|
||||||
@ -277,7 +280,74 @@ do_test (void)
|
|||||||
|
|
||||||
adr[inner] = L('T');
|
adr[inner] = L('T');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* strcmp/wcscmp tests */
|
||||||
|
for (outer = 1; outer < 32; ++outer)
|
||||||
|
for (middle = 0; middle < 16; ++middle)
|
||||||
|
{
|
||||||
|
MEMSET (adr + middle, L('T'), 256);
|
||||||
|
adr[256] = L('\0');
|
||||||
|
MEMSET (dest + nchars - outer, L('T'), outer - 1);
|
||||||
|
dest[nchars - 1] = L('\0');
|
||||||
|
|
||||||
|
if (STRCMP (adr + middle, dest + nchars - outer) <= 0)
|
||||||
|
{
|
||||||
|
printf ("%s 1 flunked for outer = %d, middle = %d\n",
|
||||||
|
STRINGIFY (STRCMP), outer, middle);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (STRCMP (dest + nchars - outer, adr + middle) >= 0)
|
||||||
|
{
|
||||||
|
printf ("%s 2 flunked for outer = %d, middle = %d\n",
|
||||||
|
STRINGIFY (STRCMP), outer, middle);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* strncmp/wcsncmp tests */
|
||||||
|
for (outer = 1; outer < 32; ++outer)
|
||||||
|
for (middle = 0; middle < 16; ++middle)
|
||||||
|
{
|
||||||
|
MEMSET (adr + middle, L('T'), 256);
|
||||||
|
adr[256] = L('\0');
|
||||||
|
MEMSET (dest + nchars - outer, L('T'), outer - 1);
|
||||||
|
dest[nchars - 1] = L('U');
|
||||||
|
|
||||||
|
for (inner = 0; inner < outer; ++inner)
|
||||||
|
{
|
||||||
|
if (STRNCMP (adr + middle, dest + nchars - outer, inner) != 0)
|
||||||
|
{
|
||||||
|
printf ("%s 1 flunked for outer = %d, middle = %d, "
|
||||||
|
"inner = %d\n",
|
||||||
|
STRINGIFY (STRNCMP), outer, middle, inner);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (STRNCMP (dest + nchars - outer, adr + middle, inner) != 0)
|
||||||
|
{
|
||||||
|
printf ("%s 2 flunked for outer = %d, middle = %d, "
|
||||||
|
"inner = %d\n",
|
||||||
|
STRINGIFY (STRNCMP), outer, middle, inner);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (STRNCMP (adr + middle, dest + nchars - outer, outer) >= 0)
|
||||||
|
{
|
||||||
|
printf ("%s 1 flunked for outer = %d, middle = %d, full\n",
|
||||||
|
STRINGIFY (STRNCMP), outer, middle);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (STRNCMP (dest + nchars - outer, adr + middle, outer) <= 0)
|
||||||
|
{
|
||||||
|
printf ("%s 2 flunked for outer = %d, middle = %d, full\n",
|
||||||
|
STRINGIFY (STRNCMP), outer, middle);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* strncpy/wcsncpy tests */
|
/* strncpy/wcsncpy tests */
|
||||||
adr[nchars - 1] = L('T');
|
adr[nchars - 1] = L('T');
|
||||||
@ -295,12 +365,12 @@ do_test (void)
|
|||||||
result = 1;
|
result = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
adr[nchars - 1] = L('\0');
|
adr[nchars - 1] = L('\0');
|
||||||
|
|
||||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
||||||
{
|
{
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
@ -334,12 +404,12 @@ do_test (void)
|
|||||||
|
|
||||||
adr[inner] = L('T');
|
adr[inner] = L('T');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* stpcpy/wcpcpy test */
|
/* stpcpy/wcpcpy test */
|
||||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
||||||
{
|
{
|
||||||
adr[inner] = L('\0');
|
adr[inner] = L('\0');
|
||||||
|
|
||||||
@ -352,7 +422,7 @@ do_test (void)
|
|||||||
|
|
||||||
adr[inner] = L('T');
|
adr[inner] = L('T');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* stpncpy/wcpncpy test */
|
/* stpncpy/wcpncpy test */
|
||||||
adr[nchars - 1] = L('T');
|
adr[nchars - 1] = L('T');
|
||||||
@ -374,8 +444,8 @@ do_test (void)
|
|||||||
adr[nchars - 1] = L('\0');
|
adr[nchars - 1] = L('\0');
|
||||||
|
|
||||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||||
{
|
{
|
||||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||||
{
|
{
|
||||||
adr[middle] = L('\0');
|
adr[middle] = L('\0');
|
||||||
|
|
||||||
@ -393,7 +463,7 @@ do_test (void)
|
|||||||
|
|
||||||
adr[middle] = L('T');
|
adr[middle] = L('T');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* memcpy/wmemcpy test */
|
/* memcpy/wmemcpy test */
|
||||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||||
|
@ -458,7 +458,7 @@ LABEL(nibble_ashr_1):
|
|||||||
jnz LABEL(ashr_1_exittail) /* find null char*/
|
jnz LABEL(ashr_1_exittail) /* find null char*/
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $14, %r11
|
cmp $15, %r11
|
||||||
jbe LABEL(ashr_1_exittail)
|
jbe LABEL(ashr_1_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -586,7 +586,7 @@ LABEL(nibble_ashr_2):
|
|||||||
jnz LABEL(ashr_2_exittail)
|
jnz LABEL(ashr_2_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $13, %r11
|
cmp $14, %r11
|
||||||
jbe LABEL(ashr_2_exittail)
|
jbe LABEL(ashr_2_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -711,7 +711,7 @@ LABEL(nibble_ashr_3):
|
|||||||
jnz LABEL(ashr_3_exittail)
|
jnz LABEL(ashr_3_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $12, %r11
|
cmp $13, %r11
|
||||||
jbe LABEL(ashr_3_exittail)
|
jbe LABEL(ashr_3_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -836,7 +836,7 @@ LABEL(nibble_ashr_4):
|
|||||||
jnz LABEL(ashr_4_exittail)
|
jnz LABEL(ashr_4_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $11, %r11
|
cmp $12, %r11
|
||||||
jbe LABEL(ashr_4_exittail)
|
jbe LABEL(ashr_4_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -961,7 +961,7 @@ LABEL(nibble_ashr_5):
|
|||||||
jnz LABEL(ashr_5_exittail)
|
jnz LABEL(ashr_5_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $10, %r11
|
cmp $11, %r11
|
||||||
jbe LABEL(ashr_5_exittail)
|
jbe LABEL(ashr_5_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -1086,7 +1086,7 @@ LABEL(nibble_ashr_6):
|
|||||||
jnz LABEL(ashr_6_exittail)
|
jnz LABEL(ashr_6_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $9, %r11
|
cmp $10, %r11
|
||||||
jbe LABEL(ashr_6_exittail)
|
jbe LABEL(ashr_6_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -1211,7 +1211,7 @@ LABEL(nibble_ashr_7):
|
|||||||
jnz LABEL(ashr_7_exittail)
|
jnz LABEL(ashr_7_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $8, %r11
|
cmp $9, %r11
|
||||||
jbe LABEL(ashr_7_exittail)
|
jbe LABEL(ashr_7_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -1336,7 +1336,7 @@ LABEL(nibble_ashr_8):
|
|||||||
jnz LABEL(ashr_8_exittail)
|
jnz LABEL(ashr_8_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $7, %r11
|
cmp $8, %r11
|
||||||
jbe LABEL(ashr_8_exittail)
|
jbe LABEL(ashr_8_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -1461,7 +1461,7 @@ LABEL(nibble_ashr_9):
|
|||||||
jnz LABEL(ashr_9_exittail)
|
jnz LABEL(ashr_9_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $6, %r11
|
cmp $7, %r11
|
||||||
jbe LABEL(ashr_9_exittail)
|
jbe LABEL(ashr_9_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -1586,7 +1586,7 @@ LABEL(nibble_ashr_10):
|
|||||||
jnz LABEL(ashr_10_exittail)
|
jnz LABEL(ashr_10_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $5, %r11
|
cmp $6, %r11
|
||||||
jbe LABEL(ashr_10_exittail)
|
jbe LABEL(ashr_10_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -1711,7 +1711,7 @@ LABEL(nibble_ashr_11):
|
|||||||
jnz LABEL(ashr_11_exittail)
|
jnz LABEL(ashr_11_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $4, %r11
|
cmp $5, %r11
|
||||||
jbe LABEL(ashr_11_exittail)
|
jbe LABEL(ashr_11_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -1836,7 +1836,7 @@ LABEL(nibble_ashr_12):
|
|||||||
jnz LABEL(ashr_12_exittail)
|
jnz LABEL(ashr_12_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $3, %r11
|
cmp $4, %r11
|
||||||
jbe LABEL(ashr_12_exittail)
|
jbe LABEL(ashr_12_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -1961,7 +1961,7 @@ LABEL(nibble_ashr_13):
|
|||||||
jnz LABEL(ashr_13_exittail)
|
jnz LABEL(ashr_13_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $2, %r11
|
cmp $3, %r11
|
||||||
jbe LABEL(ashr_13_exittail)
|
jbe LABEL(ashr_13_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -2086,7 +2086,7 @@ LABEL(nibble_ashr_14):
|
|||||||
jnz LABEL(ashr_14_exittail)
|
jnz LABEL(ashr_14_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
cmp $1, %r11
|
cmp $2, %r11
|
||||||
jbe LABEL(ashr_14_exittail)
|
jbe LABEL(ashr_14_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -2213,8 +2213,8 @@ LABEL(nibble_ashr_15):
|
|||||||
jnz LABEL(ashr_15_exittail)
|
jnz LABEL(ashr_15_exittail)
|
||||||
|
|
||||||
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
# if defined USE_AS_STRNCMP || defined USE_AS_STRNCASECMP_L
|
||||||
test %r11, %r11
|
cmpq $1, %r11
|
||||||
je LABEL(ashr_15_exittail)
|
jbe LABEL(ashr_15_exittail)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
pxor %xmm0, %xmm0
|
pxor %xmm0, %xmm0
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
#define MEMCPY wmemcpy
|
#define MEMCPY wmemcpy
|
||||||
#define MEMPCPY wmempcpy
|
#define MEMPCPY wmempcpy
|
||||||
#define MEMCHR wmemchr
|
#define MEMCHR wmemchr
|
||||||
|
#define STRCMP wcscmp
|
||||||
|
#define STRNCMP wcsncmp
|
||||||
|
|
||||||
|
|
||||||
#include "../string/stratcliff.c"
|
#include "../string/stratcliff.c"
|
||||||
|
Loading…
Reference in New Issue
Block a user