about summary refs log tree commit diff
path: root/sysdeps/x86_64/multiarch/ifunc-impl-list.c
diff options
context:
space:
mode:
authorOndrej Bilka <neleai@seznam.cz>2013-05-20 08:20:00 +0200
committerOndrej Bilka <neleai@seznam.cz>2013-05-20 08:24:41 +0200
commit2d48b41c8fa610067c4d664ac2339ae6ca43e78c (patch)
tree4d1ca07a1228ba16c12a67ddb08595770f397da1 /sysdeps/x86_64/multiarch/ifunc-impl-list.c
parent3e694268750d51acc6a68b0ee7ded25a52902c20 (diff)
downloadglibc-2d48b41c8fa610067c4d664ac2339ae6ca43e78c.tar.gz
glibc-2d48b41c8fa610067c4d664ac2339ae6ca43e78c.tar.xz
glibc-2d48b41c8fa610067c4d664ac2339ae6ca43e78c.zip
Faster memcpy on x64.
We add new memcpy version that uses unaligned loads which are fast
on modern processors. This allows second improvement which is avoiding
computed jump which is relatively expensive operation.

Tests available here:
http://kam.mff.cuni.cz/~ondra/memcpy_profile_result27_04_13.tar.bz2
Diffstat (limited to 'sysdeps/x86_64/multiarch/ifunc-impl-list.c')
-rw-r--r--sysdeps/x86_64/multiarch/ifunc-impl-list.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sysdeps/x86_64/multiarch/ifunc-impl-list.c b/sysdeps/x86_64/multiarch/ifunc-impl-list.c
index 05315fdd7a..28d35793c5 100644
--- a/sysdeps/x86_64/multiarch/ifunc-impl-list.c
+++ b/sysdeps/x86_64/multiarch/ifunc-impl-list.c
@@ -227,6 +227,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
 	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSSE3,
 			      __memcpy_ssse3_back)
 	      IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSSE3, __memcpy_ssse3)
+	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_sse2_unaligned)
 	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_sse2))
 
   /* Support sysdeps/x86_64/multiarch/mempcpy_chk.S.  */