Improved st{r,p}{,n}cpy for SSE2 and SSSE3 on x86-64

This commit is contained in:
H.J. Lu 2011-06-24 15:14:22 -04:00 committed by Ulrich Drepper
parent d5495a116c
commit 8912479f9e
12 changed files with 5508 additions and 1838 deletions

View File

@ -1,3 +1,20 @@
2011-06-22 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
strcpy-ssse3 strncpy-ssse3 stpcpy-ssse3 stpncpy-ssse3
strcpy-sse2-unaligned strncpy-sse2-unaligned
stpcpy-sse2-unaligned stpncpy-sse2-unaligned.
* sysdeps/x86_64/multiarch/stpcpy-sse2-unaligned.S: New file.
* sysdeps/x86_64/multiarch/stpcpy-ssse3.S: New file.
* sysdeps/x86_64/multiarch/stpncpy-sse2-unaligned.S: New file.
* sysdeps/x86_64/multiarch/stpncpy-ssse3.S: New file.
* sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: New file.
* sysdeps/x86_64/multiarch/strcpy-ssse3.S: New file.
* sysdeps/x86_64/multiarch/strncpy-sse2-unaligned.S: New file.
* sysdeps/x86_64/multiarch/strncpy-ssse3.S: New file.
* sysdeps/x86_64/multiarch/strcpy.S: Remove strcpy with SSSE3.
(STRCPY): Support SSE2 and SSSE3 versions.
2011-06-24 Ulrich Drepper <drepper@gmail.com>
[BZ #12874]

3
NEWS
View File

@ -20,6 +20,9 @@ Version 2.15
* Optimized strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-32.
Contributed by HJ Lu.
* Improved strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-64.
Contributed by HJ Lu.
Version 2.14

View File

@ -4,12 +4,15 @@ gen-as-const-headers += ifunc-defines.sym
endif
ifeq ($(subdir),string)
sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \
strend-sse4 memcmp-sse4 memcpy-ssse3 mempcpy-ssse3 \
memmove-ssse3 memcpy-ssse3-back mempcpy-ssse3-back \
memmove-ssse3-back strcasestr-nonascii strcasecmp_l-ssse3 \
strncase_l-ssse3 strlen-sse4 strlen-no-bsf \
memset-x86-64
strncase_l-ssse3 strlen-sse4 strlen-no-bsf memset-x86-64 \
strcpy-ssse3 strncpy-ssse3 stpcpy-ssse3 stpncpy-ssse3 \
strcpy-sse2-unaligned strncpy-sse2-unaligned \
stpcpy-sse2-unaligned stpncpy-sse2-unaligned
ifeq (yes,$(config-cflags-sse4))
sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c varshift
CFLAGS-varshift.c += -msse4

View File

@ -0,0 +1,3 @@
#define USE_AS_STPCPY
#define STRCPY __stpcpy_sse2_unaligned
#include "strcpy-sse2-unaligned.S"

View File

@ -0,0 +1,3 @@
#define USE_AS_STPCPY
#define STRCPY __stpcpy_ssse3
#include "strcpy-ssse3.S"

View File

@ -0,0 +1,4 @@
#define USE_AS_STPCPY
#define USE_AS_STRNCPY
#define STRCPY __stpncpy_sse2_unaligned
#include "strcpy-sse2-unaligned.S"

View File

@ -0,0 +1,4 @@
#define USE_AS_STPCPY
#define USE_AS_STRNCPY
#define STRCPY __stpncpy_ssse3
#include "strcpy-ssse3.S"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
#define USE_AS_STRNCPY
#define STRCPY __strncpy_sse2_unaligned
#include "strcpy-sse2-unaligned.S"

View File

@ -0,0 +1,3 @@
#define USE_AS_STRNCPY
#define STRCPY __strncpy_ssse3
#include "strcpy-ssse3.S"