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 /libidn/punycode.h | |
parent | 8c17cb1f6455c7a5fd6a1d05a2394129dbce012b (diff) | |
download | glibc-e05a252da92a4dd15d4be40a855d31bd864804e9.zip glibc-e05a252da92a4dd15d4be40a855d31bd864804e9.tar.gz glibc-e05a252da92a4dd15d4be40a855d31bd864804e9.tar.bz2 |
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 'libidn/punycode.h')
0 files changed, 0 insertions, 0 deletions