summaryrefslogtreecommitdiffstats
path: root/newlib/libc/machine/aarch64
Commit message (Collapse)AuthorAgeFilesLines
* Add rawmemchrWilco Dijkstra2016-05-204-2/+118
| | | | | | | | | | | | | | | | | | | | | | | Marcus Shawcroft wrote: > This patch appears to have been munged by the mail system, can you > repost as an attachment please. Sure, I've attached the patch. Wilco Add a simple rawmemchr implementation. Use strlen for rawmemchr(s, '\0') as it is the fastest way to search for '\0', and use memchr with an infinite size for other cases. This is 3x faster for large sizes. ChangeLog: 2016-04-22 Wilco Dijkstra <wdijkstr@arm.com> * newlib/libc/machine/aarch64/Makefile.in: Add rawmemchr.S and rawmemchr-stub.c. * newlib/libc/machine/aarch64/Makefile.am: Likewise. * newlib/libc/machine/aarch64/rawmemchr.S (rawmemchr): Add rawmemchr. * newlib/libc/machine/aarch64/rawmemchr-stub.c (rawmemchr): Likewise.
* Use __machine_*_t_defined for internal typesSebastian Huber2016-04-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | Newlib defines defaults for internal types via <sys/_types.h> and uses <machine/_types.h> to let targets define their own type if necessary. Previously for example #ifndef __dev_t_defined typedef short __dev_t; #endif However, the __*_t_defined pattern conflicts with the glibc type guard pattern for user types, e.g. dev_t in this example. Introduce a __machine_*_t_defined pattern for internal types (defined by <machine/_types.h>, used by <sys/_types.h>). For example #ifndef __machine_dev_t_defined typedef short __dev_t; #endif Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Bump up newlib version to 2.4.0 due to feature test refactoringnewlib-2_4_0Jeff Johnston2016-03-291-10/+10
|
* Regenerate files for newlib 2.3.0.newlib-2_3_0Jeff Johnston2015-12-211-10/+10
|
* AArch64: Tune memcpyWilco Dijkstra2015-11-121-24/+32
| | | | | * newlib/libc/machine/aarch64/memcpy.S (memcpy): Further tuning for performance.
* [AArch64] Rewrite optimized memset.Wilco Dijkstra2015-07-301-191/+184
| | | | | | | | | | | This is an optimized memset for AArch64. Memset is split into 4 main cases: small sets of up to 16 bytes, medium of 16..96 bytes which are fully unrolled. Large memsets of more than 96 bytes align the destination and use an unrolled loop processing 64 bytes per iteration. Memsets of zero of more than 256 use the dc zva instruction, and there are faster versions for the common ZVA sizes 64 or 128. STP of Q registers is used to reduce codesize without loss of performance.
* [AArch64] Reverting recent optimized memset().Marcus Shawcroft2015-07-151-184/+191
|
* [AArch64] Optimized memset.Wilco Dijkstra2015-07-131-191/+184
| | | | | | | | | | | This is an optimized memset for AArch64. Memset is split into 4 main cases: small sets of up to 16 bytes, medium of 16..96 bytes which are fully unrolled. Large memsets of more than 96 bytes align the destination and use an unrolled loop processing 64 bytes per iteration. Memsets of zero of more than 256 use the dc zva instruction, and there are faster versions for the common ZVA sizes 64 or 128. STP of Q registers is used to reduce codesize without loss of performance.
* [AArch64] Optimized memcpy.Wilco Dijkstra2015-07-131-134/+161
| | | | | | | | | | This is an optimized memcpy for AArch64. Copies are split into 3 main cases: small copies of up to 16 bytes, medium copies of 17..96 bytes which are fully unrolled. Large copies of more than 96 bytes align the destination and use an unrolled loop processing 64 bytes per iteration. In order to share code with memmove, small and medium copies read all data before writing, allowing any kind of overlap. On a random copy test memcpy is 40.8% faster on A57 and 28.4% on A53.
* [AArch64] Optimized memmove.Wilco Dijkstra2015-07-131-282/+108
| | | | | | | This is an optimized memmove for AArch64. All copies of up to 96 bytes and all backward copies are done by the new memcpy. The only remaining case is large forward copies which are done in the same way as the memcpy loop, but copying from the end rather than the start.
* * libc/machine/aarch64/strlen.S (strlen): Improve performance.Corinna Vinschen2015-01-201-69/+171
|
* * libc/machine/aarch64/strcpy.S (strcpy): Further performanceRichard Earnshaw2015-01-065-125/+250
| | | | | | | | improvements. Adjust to allow building as stpcpy. * libc/machine/aarch64/stpcpy.S: New file. * libc/machine/aarch64/stpcpy-stub.c: New file. * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Build stpcpy. * libc/machine/aarch64/Makefile.in: Regenerated.
* 2014-12-18 Jeff Johnston <jjohnstn@redhat.com>Jeff Johnston2014-12-181-10/+10
| | | | | | | | | | | | | | * NEWS: Update with 2.2.0 info. * README: Ditto. * acinclude.m4: Change version number to 2.2.0. * libc/libc.texinfo: Ditto. * libm/libm.texinfo: Ditto. * configure: Regenerated. * Makefile.in: Regenerated. * doc/configure: Ditto. * libc/*/configure: Ditto. * libm/*/configure: Ditto. * libc/sys/linux/shared.ld: Add VERS_2.2
* * libc/machine/aarch64/strcpy.S: Improve handling of short strings.Richard Earnshaw2014-12-161-135/+207
|
* * libc/machine/aarch64/strchrnul.S (vrepmask): Use a call-clobberedRichard Earnshaw2014-12-101-1/+1
| | | | register.
* * libc/machine/aarch64/strrchr.S: New file.Richard Earnshaw2014-12-084-2/+230
| | | | | | * libc/machine/aarch64/strrchr-stub.c: New file. * libc/machine/aarch64/Makefile.am: Add them to build list. * libc/machine/aarch64/Makefile.in: Regenerated.
* * libc/machine/aarch64/strcpy.S: New file.Richard Earnshaw2014-11-104-3/+274
| | | | | | * libc/machine/aarch64/strcpy-stub.S: New file. * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add new files. * libc/machine/aarch64/Makefile.in: Regenerate.
* * libc/machine/aarch64/memchr.S: Add check for zero-sized buffer.Richard Earnshaw2014-08-191-0/+6
|
* [aarch64] Add memchr.Richard Earnshaw2014-07-114-6/+222
| | | | | | | | | 2014-07-11 K�vin Petit <kevin.petit@arm.com> * libc/machine/aarch64/memchr.S: New file. * libc/machine/aarch64/memchr-stub.c: New file. * libc/machine/aarch64/Makefile.am: Add the new files. * libc/machine/aarch64/Makefile.in: Regenerated.
* * libc/machine/aarch64/strchrnul.S: New file.Richard Earnshaw2014-06-114-3/+199
| | | | | | * libc/machine/aarch64/strchrnul-stub.c: New file. * libc/machine/aarch64/Makefile.am: Add them to build list. * libc/machine/aarch64/Makefile.in: Regenerated.
* * libc/machine/aarch64/strchr.S: New fileRichard Earnshaw2014-06-104-3/+213
| | | | | | * libc/machine/aarch64/strchr-stub.c: New file * libc/machine/aarch64/Makefile.am: Add them to build list. * libc/machine/aarch64/Makefile.in: Regenerated.
* 2013-12-23 Jeff Johnston <jjohnstn@redhat.com>Jeff Johnston2013-12-231-10/+10
| | | | | | | | | | | | | | | | | | * NEWS: Update with 2.1.0 info. * README: Ditto. * acinclude.m4: Change version number to 2.1.0. * aclocal.m4: Regenerated. * configure: Ditto. * Makefile.in: Regenerated. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_2.1
* 2013-01-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>Marcus Shawcroft2013-01-171-12/+19
| | | | | | * libc/machine/aarch64/strncmp.S: Correct arithmetic for argument N values close to the maximum representable value in an unsigned 64 bit value.
* 2013-01-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>Marcus Shawcroft2013-01-171-11/+28
| | | | | | * libc/machine/aarch64/strnlen.S: Correct arithmetic for argument N values close to the maximum representable value in an unsigned 64 bit value.
* 2013-01-10 Marcus Shawcroft <marcus.shawcroft@linaro.org>Marcus Shawcroft2013-01-104-5/+218
| | | | | | | | * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add memcmp-stub.c and memcmp.S * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/memcmp-stub.c: New file. * libc/machine/aarch64/memcmp.S: New file.
* 2013-01-10 Marcus Shawcroft <marcus.shawcroft@linaro.org>Marcus Shawcroft2013-01-104-2/+219
| | | | | | | | * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add strnlen-stub.c and strnlen.S * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/strnlen-stub.c: New file. * libc/machine/aarch64/strnlen.S: New file.
* 2013-01-10 Marcus Shawcroft <marcus.shawcroft@linaro.org>Marcus Shawcroft2013-01-104-2/+184
| | | | | | | | * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add strlen.S and strlen-stub.c. * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/strlen-stub.c: New file. * libc/machine/aarch64/strlen.S: New file.
* 2013-01-10 Marcus Shawcroft <marcus.shawcroft@linaro.org>Marcus Shawcroft2013-01-104-2/+378
| | | | | | | | * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add memmove.S and memmove-stub.c. * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/memmove-stub.c: New file. * libc/machine/aarch64/memmove.S: New file.
* 2013-01-10 Marcus Shawcroft <marcus.shawcroft@linaro.org>Marcus Shawcroft2013-01-104-9/+276
| | | | | | | | * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Re-ordered. Add strncmp.S and strncmp-stub.c. * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/strncmp-stub.c: New file. * libc/machine/aarch64/strncmp.S: New file.
* 2013-01-10 Marcus Shawcroft <marcus.shawcroft@linaro.org>Marcus Shawcroft2013-01-108-4/+764
| | | | | | | | | | | | | * libc/machine/aarch64/Makefile.am (lib_a_SOURCES): Add memcpy.c memcpy-stub.c memset.S memset-stub.c strcmp.S strcmp-stub.c. * libc/machine/aarch64/Makefile.in: Regenerated. * libc/machine/aarch64/memcpy-stub.c: New file. * libc/machine/aarch64/memcpy.S: New file. * libc/machine/aarch64/memset-stub.c: New file. * libc/machine/aarch64/memset.S: New file. * libc/machine/aarch64/strcmp.S: New file. * libc/machine/aarch64/strcmp-stub.c: New file.
* 2012-12-20 Jeff Johnston <jjohnstn@redhat.com>Jeff Johnston2012-12-203-51/+101
| | | | | | | | | | | | | | | | | | * NEWS: Update with 2.0.0 info. * README: Ditto. * acinclude.m4: Change version number to 2.0.0. * aclocal.m4: Regenerated. * configure: Ditto. * Makefile.in: Regenerated. * doc/aclocal.m4: Ditto. * doc/configure: Ditto. * libc/*/aclocal.m4: Ditto. * libc/*/configure: Ditto. * libc/libc.texinfo: Ditto. * libm/*/aclocal.m4: Ditto. * libm/*/configure: Ditto. * libm/libm.texinfo: Ditto. * libc/sys/linux/shared.ld: Add VERS_2.0
* 2012-12-14 Yufeng Zhang <yufeng.zhang@arm.com>Jeff Johnston2012-12-141-0/+37
| | | | | * libc/machine/aarch64/machine/_types.h: New file; define _ssize_t as long.
* 2012-09-26 Ian Bolton <ian.bolton@arm.com>Jeff Johnston2012-09-266-0/+6255
Jim MacArthur <jim.macarthur@arm.com> Marcus Shawcroft <marcus.shawcroft@arm.com> Nigel Stephens <nigel.stephens@arm.com> Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> Richard Earnshaw <rearnsha@arm.com> Sofiane Naci <sofiane.naci@arm.com> Tejas Belagod <tejas.belagod@arm.com> Yufeng Zhang <yufeng.zhang@arm.com> * configure.host: Add AArch64. * libc/include/machine/ieeefp.h: Add AArch64. * libc/include/machine/setjmp.h: Add AArch64. * libc/include/machine/time.h: Add AArch64. * libc/include/sys/config.h: Add AArch64. * libc/machine/aarch64/Makefile.am: New file. * libc/machine/aarch64/Makefile.in: Generated. * libc/machine/aarch64/aclocal.m4: Generated. * libc/machine/aarch64/configure: Generated. * libc/machine/aarch64/configure.in: New file. * libc/machine/aarch64/setjmp.S: New file. * libc/machine/configure.in: Add AArch64. * libc/machine/configure: Re-generated. * libm/machine/aarch64/Makefile.am: New file. * libm/machine/aarch64/Makefile.in: Generated. * libm/machine/aarch64/aclocal.m4: Generated. * libm/machine/aarch64/configure: Generated. * libm/machine/aarch64/configure.in: New file. * libm/machine/aarch64/s_ceil.c: New file. * libm/machine/aarch64/s_floor.c: New file. * libm/machine/aarch64/s_fma.c: New file. * libm/machine/aarch64/s_fmax.c: New file. * libm/machine/aarch64/s_fmin.c: New file. * libm/machine/aarch64/s_llrint.c: New file. * libm/machine/aarch64/s_llround.c: New file. * libm/machine/aarch64/s_lrint.c: New file. * libm/machine/aarch64/s_lround.c: New file. * libm/machine/aarch64/s_nearbyint.c: New file. * libm/machine/aarch64/s_rint.c: New file. * libm/machine/aarch64/s_round.c: New file. * libm/machine/aarch64/s_trunc.c: New file. * libm/machine/aarch64/sf_ceil.c: New file. * libm/machine/aarch64/sf_floor.c: New file. * libm/machine/aarch64/sf_fma.c: New file. * libm/machine/aarch64/sf_fmax.c: New file. * libm/machine/aarch64/sf_fmin.c: New file. * libm/machine/aarch64/sf_llrint.c: New file. * libm/machine/aarch64/sf_llround.c: New file. * libm/machine/aarch64/sf_lrint.c: New file. * libm/machine/aarch64/sf_lround.c: New file. * libm/machine/aarch64/sf_nearbyint.c: New file. * libm/machine/aarch64/sf_rint.c: New file. * libm/machine/aarch64/sf_round.c: New file. * libm/machine/aarch64/sf_trunc.c: New file. * libm/machine/configure.in: Add AArch64. * libm/machine/configure: Re-generated.