Skip to content

Commit

Permalink
Optimized st{r,p}{,n}cpy for SSE2/SSSE3 on x86-32
Browse files Browse the repository at this point in the history
  • Loading branch information
H.J. Lu authored and Ulrich Drepper committed Jun 24, 2011
1 parent 07f494a commit 0b1cbaa
Show file tree
Hide file tree
Showing 18 changed files with 6,585 additions and 5 deletions.
25 changes: 25 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,28 @@
2011-06-22 H.J. Lu <hongjiu.lu@intel.com>

* sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add
strncpy-c strcpy-ssse3 strncpy-ssse3 stpcpy-ssse3 stpncpy-ssse3
strcpy-sse2 strncpy-sse2 stpcpy-sse2 stpncpy-sse2.
* sysdeps/i386/i686/multiarch/stpcpy-sse2.S: New file.
* sysdeps/i386/i686/multiarch/stpcpy-ssse3.S: New file.
* sysdeps/i386/i686/multiarch/stpncpy-sse2.S: New file.
* sysdeps/i386/i686/multiarch/stpncpy-ssse3.S: New file.
* sysdeps/i386/i686/multiarch/stpncpy.S : New file.
* sysdeps/i386/i686/multiarch/strcpy-sse2.S : New file.
* sysdeps/i386/i686/multiarch/strcpy-ssse3.S: New file.
* sysdeps/i386/i686/multiarch/strcpy.S: New file.
* sysdeps/i386/i686/multiarch/strncpy-c.c: New file.
* sysdeps/i386/i686/multiarch/strncpy-sse2.S: New file.
* sysdeps/i386/i686/multiarch/strncpy-ssse3.S: New file.
* sysdeps/i386/i686/multiarch/strncpy.S: New file.
* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features):
Enable unaligned load optimization for Intel Core i3, i5 and i7
processors.
* sysdeps/x86_64/multiarch/init-arch.h (bit_Fast_Unaligned_Load):
Define.
(index_Fast_Unaligned_Load): Define.
(HAS_FAST_UNALIGNED_LOAD): Define.

2011-06-23 Marek Polacek <mpolacek@redhat.com>

* nss/nss_db/db-open.c: Include <unistd.h> for read declaration.
Expand Down
5 changes: 4 additions & 1 deletion NEWS
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
GNU C Library NEWS -- history of user-visible changes. 2011-6-22
GNU C Library NEWS -- history of user-visible changes. 2011-6-24
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
See the end for copying conditions.

Expand All @@ -17,6 +17,9 @@ Version 2.15
* Add nss_db support back to glibc. No more dependency on Berkeley db
and support for initgroups lookups.
Implemented by Ulrich Drepper.

* Optimized strcpy, strncpy, stpcpy, stpncpy for SSE2 and SSSE3 on x86-32.
Contributed by HJ Lu.

Version 2.14

Expand Down
4 changes: 3 additions & 1 deletion sysdeps/i386/i686/multiarch/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ sysdep_routines += bzero-sse2 memset-sse2 memcpy-ssse3 mempcpy-ssse3 \
memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \
strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \
memcmp-ssse3 memcmp-sse4 strcasestr-nonascii varshift \
strlen-sse2 strlen-sse2-bsf
strlen-sse2 strlen-sse2-bsf strncpy-c strcpy-ssse3 \
strncpy-ssse3 stpcpy-ssse3 stpncpy-ssse3 strcpy-sse2 \
strncpy-sse2 stpcpy-sse2 stpncpy-sse2
ifeq (yes,$(config-cflags-sse4))
sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c
CFLAGS-varshift.c += -msse4
Expand Down
3 changes: 3 additions & 0 deletions sysdeps/i386/i686/multiarch/stpcpy-sse2.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#define USE_AS_STPCPY
#define STRCPY __stpcpy_sse2
#include "strcpy-sse2.S"
3 changes: 3 additions & 0 deletions sysdeps/i386/i686/multiarch/stpcpy-ssse3.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#define USE_AS_STPCPY
#define STRCPY __stpcpy_ssse3
#include "strcpy-ssse3.S"
7 changes: 7 additions & 0 deletions sysdeps/i386/i686/multiarch/stpcpy.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#define USE_AS_STPCPY
#define STRCPY __stpcpy
#include "strcpy.S"

weak_alias (__stpcpy, stpcpy)
libc_hidden_def (__stpcpy)
libc_hidden_builtin_def (stpcpy)
4 changes: 4 additions & 0 deletions sysdeps/i386/i686/multiarch/stpncpy-sse2.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#define USE_AS_STPCPY
#define USE_AS_STRNCPY
#define STRCPY __stpncpy_sse2
#include "strcpy-sse2.S"
4 changes: 4 additions & 0 deletions sysdeps/i386/i686/multiarch/stpncpy-ssse3.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#define USE_AS_STPCPY
#define USE_AS_STRNCPY
#define STRCPY __stpncpy_ssse3
#include "strcpy-ssse3.S"
6 changes: 6 additions & 0 deletions sysdeps/i386/i686/multiarch/stpncpy.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#define STRCPY __stpncpy
#define USE_AS_STPCPY
#define USE_AS_STRNCPY
#include "strcpy.S"

weak_alias (__stpncpy, stpncpy)
Loading

0 comments on commit 0b1cbaa

Please sign in to comment.