mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-30 12:31:53 +08:00
5f3d0b78e0
memcpy with unaligned 256-bit AVX register loads/stores are slow on older processorsl like Sandy Bridge. This patch adds bit_AVX_Fast_Unaligned_Load and sets it only when AVX2 is available. [BZ #17801] * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): Set the bit_AVX_Fast_Unaligned_Load bit for AVX2. * sysdeps/x86_64/multiarch/init-arch.h (bit_AVX_Fast_Unaligned_Load): New. (index_AVX_Fast_Unaligned_Load): Likewise. (HAS_AVX_FAST_UNALIGNED_LOAD): Likewise. * sysdeps/x86_64/multiarch/memcpy.S (__new_memcpy): Check the bit_AVX_Fast_Unaligned_Load bit instead of the bit_AVX_Usable bit. * sysdeps/x86_64/multiarch/memcpy_chk.S (__memcpy_chk): Likewise. * sysdeps/x86_64/multiarch/mempcpy.S (__mempcpy): Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S (__mempcpy_chk): Likewise. * sysdeps/x86_64/multiarch/memmove.c (__libc_memmove): Replace HAS_AVX with HAS_AVX_FAST_UNALIGNED_LOAD. * sysdeps/x86_64/multiarch/memmove_chk.c (__memmove_chk): Likewise. |
||
---|---|---|
.. | ||
bcopy.S | ||
cacheinfo.c | ||
ifunc-defines.sym | ||
ifunc-impl-list.c | ||
init-arch.c | ||
init-arch.h | ||
Makefile | ||
memcmp-sse4.S | ||
memcmp-ssse3.S | ||
memcmp.S | ||
memcpy_chk.S | ||
memcpy-avx-unaligned.S | ||
memcpy-sse2-unaligned.S | ||
memcpy-ssse3-back.S | ||
memcpy-ssse3.S | ||
memcpy.S | ||
memmove_chk.c | ||
memmove-avx-unaligned.S | ||
memmove-ssse3-back.S | ||
memmove-ssse3.S | ||
memmove.c | ||
mempcpy_chk.S | ||
mempcpy-avx-unaligned.S | ||
mempcpy-ssse3-back.S | ||
mempcpy-ssse3.S | ||
mempcpy.S | ||
memset_chk.S | ||
memset-avx2.S | ||
memset.S | ||
rtld-memcmp.c | ||
rtld-memset.S | ||
sched_cpucount.c | ||
stpcpy-sse2-unaligned.S | ||
stpcpy-ssse3.S | ||
stpcpy.S | ||
stpncpy-c.c | ||
stpncpy-sse2-unaligned.S | ||
stpncpy-ssse3.S | ||
stpncpy.S | ||
strcasecmp_l-ssse3.S | ||
strcasecmp_l.S | ||
strcasestr.c | ||
strcat-sse2-unaligned.S | ||
strcat-ssse3.S | ||
strcat.S | ||
strchr-sse2-no-bsf.S | ||
strchr.S | ||
strcmp-sse2-unaligned.S | ||
strcmp-sse42.S | ||
strcmp-ssse3.S | ||
strcmp.S | ||
strcpy-sse2-unaligned.S | ||
strcpy-ssse3.S | ||
strcpy.S | ||
strcspn-c.c | ||
strcspn.S | ||
strncase_l-ssse3.S | ||
strncase_l.S | ||
strncat-c.c | ||
strncat-sse2-unaligned.S | ||
strncat-ssse3.S | ||
strncat.S | ||
strncmp-ssse3.S | ||
strncmp.S | ||
strncpy-c.c | ||
strncpy-sse2-unaligned.S | ||
strncpy-ssse3.S | ||
strncpy.S | ||
strpbrk-c.c | ||
strpbrk.S | ||
strspn-c.c | ||
strspn.S | ||
strstr-sse2-unaligned.S | ||
strstr.c | ||
test-multiarch.c | ||
varshift.c | ||
varshift.h | ||
Versions | ||
wcscpy-c.c | ||
wcscpy-ssse3.S | ||
wcscpy.S | ||
wmemcmp-c.c | ||
wmemcmp-sse4.S | ||
wmemcmp-ssse3.S | ||
wmemcmp.S |