glibc/sysdeps
Prakhar Bahuguna f8f72bc0c3 [ARM] Optimise memchr for NEON-enabled processors
This patch provides an optimised implementation of memchr using NEON
instructions to improve its performance, especially with longer search regions.
This gave an improvement in performance against the Thumb2+DSP optimised code,
with more significant gains for larger inputs. The NEON code also wins in cases
where the input is small (less than 8 bytes) by defaulting to a simple
byte-by-byte search. This avoids the overhead imposed by filling two quadword
registers from memory.

	* sysdeps/arm/armv7/multiarch/Makefile: Add memchr_neon to
	sysdep_routines.
	* sysdeps/arm/armv7/multiarch/ifunc-impl-list.c: Add define for
	__memchr_neon.
	Add ifunc definitions for __memchr_neon and __memchr_noneon.
	* sysdeps/arm/armv7/multiarch/memchr.S: New file.
	* sysdeps/arm/armv7/multiarch/memchr_impl.S: Likewise.
	* sysdeps/arm/armv7/multiarch/memchr_neon.S: Likewise.

Testing done: Ran regression tests for arm-none-linux-gnueabihf as well as a
full toolchain bootstrap. Benchmark tests were ran on ARMv7-A and ARMv8-A
hardware targets.
2017-06-27 15:43:50 +00:00
..
aarch64 [AArch64] Add more cfi annotations to tlsdesc entry points 2017-06-21 15:04:37 +01:00
alpha PowerPC64 ELFv2 PPC64_OPT_LOCALENTRY 2017-06-14 10:47:25 +09:30
arm [ARM] Optimise memchr for NEON-enabled processors 2017-06-27 15:43:50 +00:00
generic Rename struct ucontext tag (bug 21457). 2017-06-26 22:03:58 +00:00
gnu Regenerate sysdeps/gnu/errlist.c. 2017-06-04 15:27:14 -04:00
hppa PowerPC64 ELFv2 PPC64_OPT_LOCALENTRY 2017-06-14 10:47:25 +09:30
i386 Rename struct ucontext tag (bug 21457). 2017-06-26 22:03:58 +00:00
ia64 Add float128 support for ia64. 2017-06-26 22:50:45 +00:00
ieee754 Add libio-mtsafe flags to the build of strfromf128 2017-06-23 10:31:49 -03:00
init_array Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
m68k Rename struct ucontext tag (bug 21457). 2017-06-26 22:03:58 +00:00
mach Remove __need macros from errno.h (__need_Emath, __need_error_t). 2017-06-14 08:14:34 -04:00
microblaze PowerPC64 ELFv2 PPC64_OPT_LOCALENTRY 2017-06-14 10:47:25 +09:30
mips Rename struct ucontext tag (bug 21457). 2017-06-26 22:03:58 +00:00
nios2 PowerPC64 ELFv2 PPC64_OPT_LOCALENTRY 2017-06-14 10:47:25 +09:30
nptl fork: Remove bogus parent PID assertions [BZ #21386] 2017-05-12 16:04:16 +02:00
posix resolv: Call _res_hconf_init from __res_vinit 2017-06-27 09:26:46 +02:00
powerpc Rename struct ucontext tag (bug 21457). 2017-06-26 22:03:58 +00:00
pthread Remove __need macros from signal.h. 2017-05-20 19:04:43 -04:00
s390 S390: Use cu21 instruction for converting from utf16 to utf8. 2017-06-27 17:09:43 +02:00
sh PowerPC64 ELFv2 PPC64_OPT_LOCALENTRY 2017-06-14 10:47:25 +09:30
sparc Remove bits/string.h. 2017-06-20 08:21:24 -04:00
tile PowerPC64 ELFv2 PPC64_OPT_LOCALENTRY 2017-06-14 10:47:25 +09:30
unix S390: Add new hwcap values for new cpu architecture - arch12. 2017-06-27 17:09:42 +02:00
wordsize-32 Build divdi3 only for architecture that required it 2017-04-06 15:14:34 -03:00
wordsize-64 Add missing header files throughout the testsuite. 2017-02-16 17:33:18 -05:00
x86 Add float128 support for x86_64, x86. 2017-06-26 22:02:24 +00:00
x86_64 x86-64: Optimize memcmp-avx2-movbe.S for short difference 2017-06-27 07:55:00 -07:00