mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-15 01:21:06 +00:00
c867597bff
Since the new SSE2/AVX2 memcpy/memmove are faster than the previous ones, we can remove the previous SSE2/AVX2 memcpy/memmove and replace them with the new ones. No change in IFUNC selection if SSE2 and AVX2 memcpy/memmove weren't used before. If SSE2 or AVX2 memcpy/memmove were used, the new SSE2 or AVX2 memcpy/memmove optimized with Enhanced REP MOVSB will be used for processors with ERMS. The new AVX512 memcpy/memmove will be used for processors with AVX512 which prefer vzeroupper. Since the new SSE2 memcpy/memmove are faster than the previous default memcpy/memmove used in libc.a and ld.so, we also remove the previous default memcpy/memmove and make them the default memcpy/memmove, except that non-temporal store isn't used in ld.so. Together, it reduces the size of libc.so by about 6 KB and the size of ld.so by about 2 KB. [BZ #19776] * sysdeps/x86_64/memcpy.S: Make it dummy. * sysdeps/x86_64/mempcpy.S: Likewise. * sysdeps/x86_64/memmove.S: New file. * sysdeps/x86_64/memmove_chk.S: Likewise. * sysdeps/x86_64/multiarch/memmove.S: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.S: Likewise. * sysdeps/x86_64/memmove.c: Removed. * sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S: Likewise. * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Likewise. * sysdeps/x86_64/multiarch/memmove-avx-unaligned.S: Likewise. * sysdeps/x86_64/multiarch/memmove-sse2-unaligned-erms.S: Likewise. * sysdeps/x86_64/multiarch/memmove.c: Likewise. * sysdeps/x86_64/multiarch/memmove_chk.c: Likewise. * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Remove memcpy-sse2-unaligned, memmove-avx-unaligned, memcpy-avx-unaligned and memmove-sse2-unaligned-erms. * sysdeps/x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Replace __memmove_chk_avx512_unaligned_2 with __memmove_chk_avx512_unaligned. Remove __memmove_chk_avx_unaligned_2. Replace __memmove_chk_sse2_unaligned_2 with __memmove_chk_sse2_unaligned. Remove __memmove_chk_sse2 and __memmove_avx_unaligned_2. Replace __memmove_avx512_unaligned_2 with __memmove_avx512_unaligned. Replace __memmove_sse2_unaligned_2 with __memmove_sse2_unaligned. Remove __memmove_sse2. Replace __memcpy_chk_avx512_unaligned_2 with __memcpy_chk_avx512_unaligned. Remove __memcpy_chk_avx_unaligned_2. Replace __memcpy_chk_sse2_unaligned_2 with __memcpy_chk_sse2_unaligned. Remove __memcpy_chk_sse2. Remove __memcpy_avx_unaligned_2. Replace __memcpy_avx512_unaligned_2 with __memcpy_avx512_unaligned. Remove __memcpy_sse2_unaligned_2 and __memcpy_sse2. Replace __mempcpy_chk_avx512_unaligned_2 with __mempcpy_chk_avx512_unaligned. Remove __mempcpy_chk_avx_unaligned_2. Replace __mempcpy_chk_sse2_unaligned_2 with __mempcpy_chk_sse2_unaligned. Remove __mempcpy_chk_sse2. Replace __mempcpy_avx512_unaligned_2 with __mempcpy_avx512_unaligned. Remove __mempcpy_avx_unaligned_2. Replace __mempcpy_sse2_unaligned_2 with __mempcpy_sse2_unaligned. Remove __mempcpy_sse2. * sysdeps/x86_64/multiarch/memcpy.S (__new_memcpy): Support __memcpy_avx512_unaligned_erms and __memcpy_avx512_unaligned. Use __memcpy_avx_unaligned_erms and __memcpy_sse2_unaligned_erms if processor has ERMS. Default to __memcpy_sse2_unaligned. (ENTRY): Removed. (END): Likewise. (ENTRY_CHK): Likewise. (libc_hidden_builtin_def): Likewise. Don't include ../memcpy.S. * sysdeps/x86_64/multiarch/memcpy_chk.S (__memcpy_chk): Support __memcpy_chk_avx512_unaligned_erms and __memcpy_chk_avx512_unaligned. Use __memcpy_chk_avx_unaligned_erms and __memcpy_chk_sse2_unaligned_erms if if processor has ERMS. Default to __memcpy_chk_sse2_unaligned. * sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S Change function suffix from unaligned_2 to unaligned. * sysdeps/x86_64/multiarch/mempcpy.S (__mempcpy): Support __mempcpy_avx512_unaligned_erms and __mempcpy_avx512_unaligned. Use __mempcpy_avx_unaligned_erms and __mempcpy_sse2_unaligned_erms if processor has ERMS. Default to __mempcpy_sse2_unaligned. (ENTRY): Removed. (END): Likewise. (ENTRY_CHK): Likewise. (libc_hidden_builtin_def): Likewise. Don't include ../mempcpy.S. (mempcpy): New. Add a weak alias. * sysdeps/x86_64/multiarch/mempcpy_chk.S (__mempcpy_chk): Support __mempcpy_chk_avx512_unaligned_erms and __mempcpy_chk_avx512_unaligned. Use __mempcpy_chk_avx_unaligned_erms and __mempcpy_chk_sse2_unaligned_erms if if processor has ERMS. Default to __mempcpy_chk_sse2_unaligned. |
||
---|---|---|
.. | ||
64 | ||
fpu | ||
multiarch | ||
nptl | ||
x32 | ||
____longjmp_chk.S | ||
__longjmp.S | ||
_mcount.S | ||
abort-instr.h | ||
add_n.S | ||
addmul_1.S | ||
atomic-machine.h | ||
backtrace.c | ||
bsd-_setjmp.S | ||
bsd-setjmp.S | ||
bzero.S | ||
configure | ||
configure.ac | ||
crti.S | ||
crtn.S | ||
dl-irel.h | ||
dl-lookupcfg.h | ||
dl-machine.h | ||
dl-procinfo.c | ||
dl-runtime.c | ||
dl-tls.h | ||
dl-tlsdesc.h | ||
dl-tlsdesc.S | ||
dl-trampoline.h | ||
dl-trampoline.S | ||
ffs.c | ||
ffsll.c | ||
hp-timing.h | ||
htonl.S | ||
ifuncmain8.c | ||
ifuncmod8.c | ||
Implies | ||
jmpbuf-offsets.h | ||
jmpbuf-unwind.h | ||
l10nflist.c | ||
ldbl2mpn.c | ||
ldsodefs.h | ||
link-defines.sym | ||
locale-defines.sym | ||
localplt.data | ||
lshift.S | ||
machine-gmon.h | ||
Makefile | ||
memchr.S | ||
memcmp.S | ||
memcpy_chk.S | ||
memcpy.S | ||
memmove_chk.S | ||
memmove.S | ||
mempcpy_chk.S | ||
mempcpy.S | ||
memrchr.S | ||
memset_chk.S | ||
memset.S | ||
memusage.h | ||
mp_clz_tab.c | ||
mul_1.S | ||
preconfigure | ||
preconfigure.ac | ||
rawmemchr.S | ||
rshift.S | ||
sched_cpucount.c | ||
setjmp.S | ||
stack-aliasing.h | ||
stackguard-macros.h | ||
stackinfo.h | ||
start.S | ||
stpcpy.S | ||
strcasecmp_l-nonascii.c | ||
strcasecmp_l.S | ||
strcasecmp.S | ||
strcat.S | ||
strchr.S | ||
strchrnul.S | ||
strcmp.S | ||
strcpy.S | ||
strcspn.S | ||
strlen.S | ||
strncase_l-nonascii.c | ||
strncase_l.S | ||
strncase.S | ||
strncmp.S | ||
strnlen.S | ||
strpbrk.S | ||
strrchr.S | ||
strspn.S | ||
strtok_r.S | ||
strtok.S | ||
sub_n.S | ||
submul_1.S | ||
sysdep.h | ||
tls-macros.h | ||
tlsdesc.c | ||
tlsdesc.sym | ||
tst-audit3.c | ||
tst-audit4-aux.c | ||
tst-audit4.c | ||
tst-audit5.c | ||
tst-audit6.c | ||
tst-audit7.c | ||
tst-audit10-aux.c | ||
tst-audit10.c | ||
tst-audit.h | ||
tst-auditmod3a.c | ||
tst-auditmod3b.c | ||
tst-auditmod4a.c | ||
tst-auditmod4b.c | ||
tst-auditmod5a.c | ||
tst-auditmod5b.c | ||
tst-auditmod6a.c | ||
tst-auditmod6b.c | ||
tst-auditmod6c.c | ||
tst-auditmod7a.c | ||
tst-auditmod7b.c | ||
tst-auditmod10a.c | ||
tst-auditmod10b.c | ||
tst-mallocalign1.c | ||
tst-quad1.c | ||
tst-quad1pie.c | ||
tst-quad2.c | ||
tst-quad2pie.c | ||
tst-quadmod1.S | ||
tst-quadmod1pie.S | ||
tst-quadmod2.S | ||
tst-quadmod2pie.S | ||
tst-split-dynreloc.c | ||
tst-split-dynreloc.lds | ||
tst-stack-align.h | ||
Versions | ||
wcschr.S | ||
wcscmp.S | ||
wcslen.S | ||
wcsrchr.S |