musl/src/string
Rich Felker cccc1844be add arm-optimized memcpy implementation from bionic libc
the approach of this implementation was heavily investigated prior to
adopting it. attempts to obtain similar performance with pure C code
were capping out at about 75% of the performance of the asm, with
considerably larger code size, and were fragile in that the compiler
would sometimes compile part of memcpy into a call to itself.
therefore, just using the asm seems to be the best option.

this commit is the first to make use of the new subarch-specific asm
framework. the new armel directory is the location for arm asm that
should not be used for all arm subarchs, only the default one. armhf
is the name of the little-endian hardfloat-ABI subarch, which can use
the exact same asm. in both cases, the build system finds the asm by
following a memcpy.sub file.

the other two subarchs, armeb and armebhf, would need a big-endian
variant of this code. it would not be hard to adapt the code to big
endian, but I will hold off on doing so until there is demand for it.
2013-08-14 03:06:21 -04:00
..
armel add arm-optimized memcpy implementation from bionic libc 2013-08-14 03:06:21 -04:00
armhf add arm-optimized memcpy implementation from bionic libc 2013-08-14 03:06:21 -04:00
i386 optimized memset asm for i386 and x86_64 2013-08-01 21:44:43 -04:00
x86_64 optimized memset asm for i386 and x86_64 2013-08-01 21:44:43 -04:00
bcmp.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
bcopy.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
bzero.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
index.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
memccpy.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
memchr.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
memcmp.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
memcpy.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
memmem.c add memmem function (gnu extension) 2012-10-15 23:02:57 -04:00
memmove.c reenable word-at-at-time copying in memmove 2012-09-10 18:16:11 -04:00
mempcpy.c optimize mempcpy to minimize need for data saved across the call 2012-07-31 21:18:17 -04:00
memrchr.c implement memrchr (nonstandard) and optimize strrchr in terms of it 2011-04-13 08:36:29 -04:00
memset.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
rindex.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
stpcpy.c simplify logic in stpcpy; avoid copying first aligned byte twice 2012-10-22 15:17:09 -04:00
stpncpy.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
strcasecmp.c fix all implicit conversion between signed/unsigned pointers 2011-03-25 16:34:03 -04:00
strcasestr.c replace stub with working strcasestr 2013-02-21 23:54:25 -05:00
strcat.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
strchr.c optimize strchrnul/strcspn not to scan string twice on no-match 2012-09-27 17:19:09 -04:00
strchrnul.c optimize strchrnul/strcspn not to scan string twice on no-match 2012-09-27 17:19:09 -04:00
strcmp.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
strcpy.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
strcspn.c optimize strchrnul/strcspn not to scan string twice on no-match 2012-09-27 17:19:09 -04:00
strdup.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
strerror_r.c Add ABI compatability aliases. 2013-04-05 23:20:28 -07:00
strlcat.c more header cleanup and conformance fixes - string.h 2011-02-14 20:53:15 -05:00
strlcpy.c fix alignment logic in strlcpy 2012-12-26 23:48:02 -05:00
strlen.c slightly cleaner strlen, also seems to compile to better code 2012-09-27 16:56:33 -04:00
strncasecmp.c fix all implicit conversion between signed/unsigned pointers 2011-03-25 16:34:03 -04:00
strncat.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
strncmp.c fix all implicit conversion between signed/unsigned pointers 2011-03-25 16:34:03 -04:00
strncpy.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
strndup.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
strnlen.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
strpbrk.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
strrchr.c fix failure of strrchr(str, 0) 2012-05-26 18:01:34 -04:00
strsep.c fix prototype for strsep 2011-04-06 14:28:29 -04:00
strsignal.c fix a couple misleading/wrong signal descriptions in strsignal 2013-07-09 02:30:21 -04:00
strspn.c fix all implicit conversion between signed/unsigned pointers 2011-03-25 16:34:03 -04:00
strstr.c remove unused but buggy code from strstr.c 2012-08-11 18:40:33 -04:00
strtok.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
strtok_r.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
strverscmp.c fix integer type issue in strverscmp 2013-02-26 01:42:11 -05:00
swab.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
wcpcpy.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
wcpncpy.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
wcscasecmp.c add all missing wchar functions except floating point parsers 2012-03-01 23:24:45 -05:00
wcscasecmp_l.c add all missing wchar functions except floating point parsers 2012-03-01 23:24:45 -05:00
wcscat.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
wcschr.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
wcscmp.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
wcscpy.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
wcscspn.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
wcsdup.c add all missing wchar functions except floating point parsers 2012-03-01 23:24:45 -05:00
wcslen.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
wcsncasecmp.c add all missing wchar functions except floating point parsers 2012-03-01 23:24:45 -05:00
wcsncasecmp_l.c add all missing wchar functions except floating point parsers 2012-03-01 23:24:45 -05:00
wcsncat.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
wcsncmp.c fix overrun (n essentially ignored) in wcsncmp 2012-05-26 18:04:17 -04:00
wcsncpy.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
wcsnlen.c add all missing wchar functions except floating point parsers 2012-03-01 23:24:45 -05:00
wcspbrk.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
wcsrchr.c fix wrong type for wcsrchr argument 2 2011-06-13 14:06:04 -04:00
wcsspn.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
wcsstr.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
wcstok.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
wcswcs.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
wmemchr.c fix broken wmemchr (unbounded search) 2011-03-17 22:38:45 -04:00
wmemcmp.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00
wmemcpy.c use restrict everywhere it's required by c99 and/or posix 2008 2012-09-06 22:44:55 -04:00
wmemmove.c fix wrong return value from wmemmove on forward copies 2013-02-21 23:19:18 -05:00
wmemset.c initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00