diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-08-28 05:40:35 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-08-28 06:02:43 -0700 |
commit | e05a252da92a4dd15d4be40a855d31bd864804e9 (patch) | |
tree | b3e4d102227a8c910ef87b02634a1f497caf2a51 /sysdeps/i386/crti.S | |
parent | 8c17cb1f6455c7a5fd6a1d05a2394129dbce012b (diff) | |
download | glibc-e05a252da92a4dd15d4be40a855d31bd864804e9.tar.gz glibc-e05a252da92a4dd15d4be40a855d31bd864804e9.tar.xz glibc-e05a252da92a4dd15d4be40a855d31bd864804e9.zip |
Correct x86-64 memcpy/mempcpy multiarch selector
For x86-64 memcpy/mempcpy, we choose the best implementation by the order: 1. __memcpy_avx_unaligned if AVX_Fast_Unaligned_Load bit is set. 2. __memcpy_sse2_unaligned if Fast_Unaligned_Load bit is set. 3. __memcpy_sse2 if SSSE3 isn't available. 4. __memcpy_ssse3_back if Fast_Copy_Backward bit it set. 5. __memcpy_ssse3 In libc.a and ld.so, we choose __memcpy_sse2_unaligned which is optimized for current Intel and AMD x86-64 processors. [BZ #18880] * sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: Moved to ... * sysdeps/x86_64/memcpy.S: Here. Remove "#if !IS_IN (libc)". Add libc_hidden_builtin_def and versioned_symbol. (__memcpy_chk): New. (__memcpy_sse2_unaligned): Renamed to ... (memcpy): This. Support USE_AS_MEMPCPY. * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add mempcpy-sse2. * sysdeps/x86_64/memcpy.S: Moved to ... sysdeps/x86_64/multiarch/memcpy-sse2.S: Here. (__memcpy_chk): Renamed to ... (__memcpy_chk_sse2): This. (memcpy): Renamed to ... (__memcpy_sse2): This. * sysdeps/x86_64/multiarch/memcpy.S (__new_memcpy): Properly select the best implementation. (ENTRY): Replace __memcpy_sse2 with __memcpy_sse2_unaligned. (END): Likewise. (libc_hidden_builtin_def): Likewise. (ENTRY_CHK): Replace __memcpy_chk_sse2 with __memcpy_chk_sse2_unaligned. (END_CHK): Likewise. * sysdeps/x86_64/multiarch/memcpy_chk.S (__memcpy_chk): Properly select the best implementation. * sysdeps/x86_64/multiarch/mempcpy.S (__mempcpy): Properly select the best implementation. (ENTRY): Replace __mempcpy_sse2 with __mempcpy_sse2_unaligned. (END): Likewise. (libc_hidden_def): Likewise. (libc_hidden_builtin_def): Likewise. (ENTRY_CHK): Replace __mempcpy_chk_sse2 with __mempcpy_chk_sse2_unaligned. (END_CHK): Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S (__mempcpy_chk): Properly select the best implementation.
Diffstat (limited to 'sysdeps/i386/crti.S')
0 files changed, 0 insertions, 0 deletions