about summary refs log tree commit diff
path: root/sysdeps/i386/crti.S
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-08-28 05:40:35 -0700
committerH.J. Lu <hjl.tools@gmail.com>2015-08-28 06:02:43 -0700
commite05a252da92a4dd15d4be40a855d31bd864804e9 (patch)
treeb3e4d102227a8c910ef87b02634a1f497caf2a51 /sysdeps/i386/crti.S
parent8c17cb1f6455c7a5fd6a1d05a2394129dbce012b (diff)
downloadglibc-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