From 3d1895e17136b4a565ffefd37c02a159664017ed Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sun, 10 Apr 2011 17:29:44 +0300 Subject: [PATCH] memcpy overlap test Signed-off-by: Felipe Contreras --- sysdeps/x86_64/multiarch/memcpy-ssse3-back.S | 11 +++++++++++ sysdeps/x86_64/multiarch/memcpy-ssse3.S | 11 +++++++++++ 2 files changed, 22 insertions(+), 0 deletions(-) diff --git a/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S b/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S index 48c974e..4e3ee78 100644 --- a/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S +++ b/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S @@ -57,6 +57,17 @@ END (MEMCPY_CHK) #endif ENTRY (MEMCPY) +#ifndef USE_AS_MEMMOVE + lea (%rsi, %rdx), %r9 + lea (%rdi, %rdx), %r11 + cmp %r9, %rdi /* dest start >= source end */ + jae L(nonoverlap) /* -> nonoverlapping */ + cmp %r11, %rsi /* source start >= destination end */ + jae L(nonoverlap) /* -> nonoverlapping */ + movb $0, 0 + L(nonoverlap): +#endif + mov %rdi, %rax #ifdef USE_AS_MEMPCPY add %rdx, %rax diff --git a/sysdeps/x86_64/multiarch/memcpy-ssse3.S b/sysdeps/x86_64/multiarch/memcpy-ssse3.S index 9a878d3..cc316e8 100644 --- a/sysdeps/x86_64/multiarch/memcpy-ssse3.S +++ b/sysdeps/x86_64/multiarch/memcpy-ssse3.S @@ -57,6 +57,17 @@ END (MEMCPY_CHK) #endif ENTRY (MEMCPY) +#ifndef USE_AS_MEMMOVE + lea (%rsi, %rdx), %r9 + lea (%rdi, %rdx), %r11 + cmp %r9, %rdi /* dest start >= source end */ + jae L(nonoverlap) /* -> nonoverlapping */ + cmp %r11, %rsi /* source start >= destination end */ + jae L(nonoverlap) /* -> nonoverlapping */ + movb $0, 0 + L(nonoverlap): +#endif + mov %rdi, %rax #ifdef USE_AS_MEMPCPY add %rdx, %rax -- 1.7.5.rc1