summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2010-02-23 13:14:37 +0100
committerAndreas Schwab <schwab@redhat.com>2010-02-23 13:18:05 +0100
commit5abc599d9ea29b8f43dfe67a6409f9cde6a869b4 (patch)
treec8dce89e3527ef52d8bfa7d28bcca8ccb60b61a4
parent8404561b1998d867d6631643780c72ba03e48390 (diff)
Fix SSSE3 memcpy
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S3
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index d5b67e804f..a4bb213f5e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-02-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S: Properly
+ decrement ECX when jumping to copy_page_by_rep.
+
2010-02-19 Carl Fredrik Hammar <hammy.lite@gmail.com>
* hurd/hurdioctl.c (tiocsctty): Call `do_tiocsctty' instead of
diff --git a/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
index f85049185c..0547b56d7c 100644
--- a/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
+++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
@@ -1249,11 +1249,12 @@ L(large_page):
movdqu %xmm0, (%esi)
movntdq %xmm1, (%edx)
lea 16(%edx), %edx
+ lea -16(%ecx), %ecx
cmp %al, %dl
je L(copy_page_by_rep)
L(large_page_loop_init):
POP (%esi)
- lea -0x90(%ecx), %ecx
+ lea -0x80(%ecx), %ecx
POP (%edi)
L(large_page_loop):
prefetchnta 0x1c0(%eax)