glibc/sysdeps/x86_64/multiarch
Matthew Sterrett 294a892769 x86: Unifies 'strnlen-evex' and 'strnlen-evex512' implementations.
This commit uses a common implementation 'strnlen-evex-base.S' for both
'strnlen-evex' and 'strnlen-evex512'

This patch serves both to reduce the number of implementations, and it also does some small optimizations that benefit strnlen-evex and strnlen-evex512.

All tests pass on x86.

Benchmarks were taken on SKX.
https://www.intel.com/content/www/us/en/products/sku/123613/intel-core-i97900x-xseries-processor-13-75m-cache-up-to-4-30-ghz/specifications.html

Geometric mean for strnlen-evex over all benchmarks (N=10) was (new/old) 0.881
Geometric mean for strnlen-evex512 over all benchmarks (N=10) was (new/old) 0.953

Code Size Changes:
    strnlen-evex       :  +31 bytes
    strnlen-evex512    :  +156 bytes
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
2024-08-19 07:34:02 -07:00
..
scripts
dl-symbol-redir-ifunc.h
ifunc-avx2.h
ifunc-evex.h
ifunc-impl-list.c x86_64: Remove avx512 strstr implementation 2024-03-27 13:48:16 -03:00
ifunc-memcmp.h
ifunc-memcmpeq.h
ifunc-memmove.h
ifunc-memset.h x86: Add Avoid_STOSB tunable to allow NT memset without ERMS 2024-08-15 08:19:15 -07:00
ifunc-sse4_2.h
ifunc-strcasecmp.h
ifunc-strcpy.h
ifunc-strncpy.h
ifunc-wcs.h
ifunc-wcslen.h
ifunc-wmemset.h
Makefile x86_64: Remove avx512 strstr implementation 2024-03-27 13:48:16 -03:00
memchr-avx2-rtm.S
memchr-avx2.S
memchr-evex512.S
memchr-evex-base.S
memchr-evex-rtm.S
memchr-evex.S
memchr-sse2.S
memchr.c
memcmp-avx2-movbe-rtm.S
memcmp-avx2-movbe.S
memcmp-evex-movbe.S
memcmp-sse2.S
memcmp.c
memcmpeq-avx2-rtm.S
memcmpeq-avx2.S
memcmpeq-evex.S
memcmpeq-sse2.S
memcmpeq.c
memcpy_chk-nonshared.S
memcpy_chk.c
memcpy.c
memmove_chk-nonshared.S
memmove_chk.c
memmove-avx512-no-vzeroupper.S
memmove-avx512-unaligned-erms.S
memmove-avx-unaligned-erms-rtm.S
memmove-avx-unaligned-erms.S
memmove-erms.S
memmove-evex-unaligned-erms.S
memmove-shlib-compat.h
memmove-sse2-unaligned-erms.S
memmove-ssse3.S x86_64: Optimize large size copy in memmove-ssse3 2024-06-30 06:26:43 -07:00
memmove-vec-unaligned-erms.S
memmove.c
mempcpy_chk-nonshared.S
mempcpy_chk.c
mempcpy.c
memrchr-avx2-rtm.S
memrchr-avx2.S
memrchr-evex.S
memrchr-sse2.S
memrchr.c
memset_chk-nonshared.S
memset_chk.c
memset-avx2-unaligned-erms-rtm.S
memset-avx2-unaligned-erms.S
memset-avx512-no-vzeroupper.S
memset-avx512-unaligned-erms.S
memset-erms.S
memset-evex-unaligned-erms.S
memset-sse2-unaligned-erms.S
memset-vec-unaligned-erms.S x86: Add seperate non-temporal tunable for memset 2024-05-30 12:36:09 -05:00
memset.c
rawmemchr-avx2-rtm.S
rawmemchr-avx2.S
rawmemchr-evex512.S
rawmemchr-evex-rtm.S
rawmemchr-evex.S
rawmemchr-sse2.S
rawmemchr.c
reg-macros.h
rtld-memchr.S
rtld-memcmp.S
rtld-memcmpeq.S
rtld-memmove.S
rtld-memset.S
rtld-rawmemchr.S
rtld-stpcpy.S
rtld-stpncpy.S
rtld-strchr.S
rtld-strchrnul.S
rtld-strcmp.S
rtld-strcpy.S
rtld-strcspn.c
rtld-strlen.S
rtld-strncmp.S
rtld-strncpy.S
rtld-strnlen.S
stpcpy-avx2-rtm.S
stpcpy-avx2.S
stpcpy-evex.S
stpcpy-sse2-unaligned.S
stpcpy-sse2.S
stpcpy.c
stpncpy-avx2-rtm.S
stpncpy-avx2.S
stpncpy-evex.S
stpncpy-sse2-unaligned.S
stpncpy.c
strcasecmp_l-avx2-rtm.S
strcasecmp_l-avx2.S
strcasecmp_l-evex.S
strcasecmp_l-sse2.S
strcasecmp_l-sse4_2.S
strcasecmp_l.c
strcasecmp.c
strcat-avx2-rtm.S
strcat-avx2.S
strcat-evex.S
strcat-sse2-unaligned.S
strcat-sse2.S
strcat-strlen-avx2.h.S
strcat-strlen-evex.h.S
strcat.c
strchr-avx2-rtm.S
strchr-avx2.S
strchr-evex512.S
strchr-evex-base.S x86: Fix bug in strchrnul-evex512 [BZ #32078] 2024-08-15 08:11:33 -07:00
strchr-evex.S
strchr-sse2-no-bsf.S
strchr-sse2.S
strchr.c
strchrnul-avx2-rtm.S
strchrnul-avx2.S
strchrnul-evex512.S
strchrnul-evex.S
strchrnul-sse2.S
strchrnul.c
strcmp-avx2-rtm.S
strcmp-avx2.S
strcmp-evex.S
strcmp-naming.h
strcmp-sse2-unaligned.S
strcmp-sse2.S
strcmp-sse4_2.S
strcmp.c
strcpy-avx2-rtm.S
strcpy-avx2.S
strcpy-evex.S
strcpy-sse2-unaligned.S
strcpy-sse2.S
strcpy.c
strcspn-generic.c
strcspn-sse4.c
strcspn.c
strlen-avx2-rtm.S
strlen-avx2.S
strlen-evex512.S
strlen-evex-base.S
strlen-evex.S
strlen-sse2.S
strlen.c
strncase_l-avx2-rtm.S
strncase_l-avx2.S
strncase_l-evex.S
strncase_l-sse2.S
strncase_l-sse4_2.S
strncase_l.c
strncase.c
strncat-avx2-rtm.S
strncat-avx2.S
strncat-evex.S
strncat-sse2-unaligned.S
strncat.c
strncmp-avx2-rtm.S
strncmp-avx2.S
strncmp-evex.S
strncmp-sse2.S
strncmp-sse4_2.S
strncmp.c
strncpy-avx2-rtm.S
strncpy-avx2.S
strncpy-evex.S
strncpy-or-cat-overflow-def.h
strncpy-sse2-unaligned.S
strncpy.c
strnlen-avx2-rtm.S
strnlen-avx2.S
strnlen-evex512.S x86: Unifies 'strnlen-evex' and 'strnlen-evex512' implementations. 2024-08-19 07:34:02 -07:00
strnlen-evex-base.S x86: Unifies 'strnlen-evex' and 'strnlen-evex512' implementations. 2024-08-19 07:34:02 -07:00
strnlen-evex.S x86: Unifies 'strnlen-evex' and 'strnlen-evex512' implementations. 2024-08-19 07:34:02 -07:00
strnlen-sse2.S
strnlen.c
strpbrk-generic.c
strpbrk-sse4.c
strpbrk.c
strrchr-avx2-rtm.S
strrchr-avx2.S
strrchr-evex512.S
strrchr-evex-base.S
strrchr-evex.S
strrchr-sse2.S
strrchr.c
strspn-generic.c
strspn-sse4.c
strspn.c
strstr-sse2-unaligned.S
strstr.c x86_64: Remove avx512 strstr implementation 2024-03-27 13:48:16 -03:00
varshift.c
varshift.h
wcpcpy-avx2.S
wcpcpy-evex.S
wcpcpy-generic.c
wcpcpy.c
wcpncpy-avx2.S
wcpncpy-evex.S
wcpncpy-generic.c
wcpncpy.c
wcscat-avx2.S
wcscat-evex.S
wcscat-generic.c
wcscat.c
wcschr-avx2-rtm.S
wcschr-avx2.S
wcschr-evex512.S
wcschr-evex.S
wcschr-sse2.S
wcschr.c
wcscmp-avx2-rtm.S
wcscmp-avx2.S
wcscmp-evex.S
wcscmp-sse2.S
wcscmp.c
wcscpy-avx2.S
wcscpy-evex.S
wcscpy-generic.c
wcscpy-ssse3.S
wcscpy.c
wcslen-avx2-rtm.S
wcslen-avx2.S
wcslen-evex512.S
wcslen-evex.S
wcslen-sse2.S
wcslen-sse4_1.S
wcslen.c
wcsncat-avx2.S
wcsncat-evex.S x86_64: Fix missing wcsncat function definition without multiarch (x86-64-v4) 2024-05-08 07:37:59 -07:00
wcsncat-generic.c
wcsncat.c
wcsncmp-avx2-rtm.S
wcsncmp-avx2.S
wcsncmp-evex.S
wcsncmp-generic.c
wcsncmp.c
wcsncpy-avx2.S
wcsncpy-evex.S
wcsncpy-generic.c
wcsncpy.c
wcsnlen-avx2-rtm.S
wcsnlen-avx2.S
wcsnlen-evex512.S
wcsnlen-evex.S
wcsnlen-generic.c
wcsnlen-sse4_1.S
wcsnlen.c
wcsrchr-avx2-rtm.S
wcsrchr-avx2.S
wcsrchr-evex512.S
wcsrchr-evex.S
wcsrchr-sse2.S
wcsrchr.c
wmemchr-avx2-rtm.S
wmemchr-avx2.S
wmemchr-evex512.S
wmemchr-evex-rtm.S
wmemchr-evex.S
wmemchr-sse2.S
wmemchr.c
wmemcmp-avx2-movbe-rtm.S
wmemcmp-avx2-movbe.S
wmemcmp-evex-movbe.S
wmemcmp-sse2.S
wmemcmp.c
wmemset_chk-nonshared.S
wmemset_chk.c
wmemset.c
x86-avx-rtm-vecs.h
x86-avx-vecs.h
x86-evex256-vecs.h
x86-evex512-vecs.h
x86-evex-vecs-common.h
x86-sse2-vecs.h
x86-vec-macros.h