musl/src/string
Rich Felker 90edf1cc15 optimized C memcpy
unlike the old C memcpy, this version handles word-at-a-time reads and
writes even for misaligned copies. it does not require that the cpu
support misaligned accesses; instead, it performs bit shifts to
realign the bytes for the destination.

essentially, this is the C version of the ARM assembly language
memcpy. the ideas are all the same, and it should perform well on any
arch with a decent number of general-purpose registers that has a
barrel shift operation. since the barrel shifter is an optional cpu
feature on microblaze, it may be desirable to provide an alternate asm
implementation on microblaze, but otherwise the C code provides a
competitive implementation for "generic risc-y" cpu archs that should
alleviate the urgent need for arch-specific memcpy asm.
2013-08-28 03:34:57 -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 optimized C memcpy 2013-08-28 03:34:57 -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 optimized C memset 2013-08-27 18:08:29 -04: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