]> git.ipfire.org Git - thirdparty/glibc.git/commit - ChangeLog
i386: memcpy functions with SSE2 unaligned load/store
authorAndrew Senkevich <andrew.senkevich@intel.com>
Mon, 29 Dec 2014 11:39:46 +0000 (14:39 +0300)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 30 Dec 2014 15:19:38 +0000 (07:19 -0800)
commit8b4416d83c79ba77b0669203741c712880a09ae4
treec0701090d02b9e3c9ddcb840e2ad62084c498b4a
parent6d6d7fde04c8ef830205a9900bf101597a2f4b18
i386: memcpy functions with SSE2 unaligned load/store

These new memcpy functions are the 32-bit version of x86_64 SSE2 unaligned
memcpy.  Memcpy average performace benefit is 18% on Silvermont, other
platforms also improved about 35%, benchmarked on Silvermont, Haswell, Ivy
Bridge, Sandy Bridge and Westmere, performance results attached in

https://sourceware.org/ml/libc-alpha/2014-07/msg00157.html

* sysdeps/i386/i686/multiarch/bcopy-sse2-unaligned.S: New file.
* sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S: Likewise.
* sysdeps/i386/i686/multiarch/memmove-sse2-unaligned.S: Likewise.
* sysdeps/i386/i686/multiarch/mempcpy-sse2-unaligned.S: Likewise.
* sysdeps/i386/i686/multiarch/bcopy.S: Select the sse2_unaligned
version if bit_Fast_Unaligned_Load is set.
* sysdeps/i386/i686/multiarch/memcpy.S: Likewise.
* sysdeps/i386/i686/multiarch/memcpy_chk.S: Likewise.
* sysdeps/i386/i686/multiarch/memmove.S: Likewise.
* sysdeps/i386/i686/multiarch/memmove_chk.S: Likewise.
* sysdeps/i386/i686/multiarch/mempcpy.S: Likewise.
* sysdeps/i386/i686/multiarch/mempcpy_chk.S: Likewise.
* sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add
bcopy-sse2-unaligned, memcpy-sse2-unaligned,
memmove-sse2-unaligned and mempcpy-sse2-unaligned.
* sysdeps/i386/i686/multiarch/ifunc-impl-list.c (MAX_IFUNC): Set
to 4.
(__libc_ifunc_impl_list): Test __bcopy_sse2_unaligned,
__memmove_chk_sse2_unaligned, __memmove_sse2_unaligned,
__memcpy_chk_sse2_unaligned, __memcpy_sse2_unaligned,
__mempcpy_chk_sse2_unaligned, and __mempcpy_sse2_unaligned.
14 files changed:
ChangeLog
sysdeps/i386/i686/multiarch/Makefile
sysdeps/i386/i686/multiarch/bcopy-sse2-unaligned.S [new file with mode: 0644]
sysdeps/i386/i686/multiarch/bcopy.S
sysdeps/i386/i686/multiarch/ifunc-impl-list.c
sysdeps/i386/i686/multiarch/memcpy-sse2-unaligned.S [new file with mode: 0644]
sysdeps/i386/i686/multiarch/memcpy.S
sysdeps/i386/i686/multiarch/memcpy_chk.S
sysdeps/i386/i686/multiarch/memmove-sse2-unaligned.S [new file with mode: 0644]
sysdeps/i386/i686/multiarch/memmove.S
sysdeps/i386/i686/multiarch/memmove_chk.S
sysdeps/i386/i686/multiarch/mempcpy-sse2-unaligned.S [new file with mode: 0644]
sysdeps/i386/i686/multiarch/mempcpy.S
sysdeps/i386/i686/multiarch/mempcpy_chk.S