diff options
author | Ulrich Drepper <drepper@redhat.com> | 2009-04-07 14:53:04 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2009-04-07 14:53:04 +0000 |
commit | ddba0f17007795ac53ee2f82e6e954dc1a50d104 (patch) | |
tree | 62715ca2e6a1422c4a196ed13d80ef2496488a19 /sysdeps/x86_64/memchr.S | |
parent | 4bcb2658ff02d72aa83640cf76ac65a430f17004 (diff) | |
download | glibc-ddba0f17007795ac53ee2f82e6e954dc1a50d104.tar.gz glibc-ddba0f17007795ac53ee2f82e6e954dc1a50d104.tar.xz glibc-ddba0f17007795ac53ee2f82e6e954dc1a50d104.zip |
* string/stratcliff.c (do_test): Add memchr tests..
* sysdeps/x86_64/memchr.S: Fix handling of end of buffer after first read quad word.
Diffstat (limited to 'sysdeps/x86_64/memchr.S')
-rw-r--r-- | sysdeps/x86_64/memchr.S | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sysdeps/x86_64/memchr.S b/sysdeps/x86_64/memchr.S index 15484cb9f3..644362d565 100644 --- a/sysdeps/x86_64/memchr.S +++ b/sysdeps/x86_64/memchr.S @@ -37,12 +37,12 @@ ENTRY (memchr) shl %cl, %esi pmovmskb %xmm0, %ecx andl %esi, %ecx - movl $0, %esi + movl $16, %esi jnz 1f cmpq %rsi, %rdx jle 3f -2: movdqa 16(%rdi,%rsi), %xmm0 +2: movdqa (%rdi,%rsi), %xmm0 leaq 16(%rsi), %rsi pcmpeqb %xmm1, %xmm0 pmovmskb %xmm0, %ecx @@ -54,10 +54,10 @@ ENTRY (memchr) 3: xorl %eax, %eax ret -1: leaq (%rdi,%rsi), %rax +1: leaq -16(%rdi,%rsi), %rax bsfl %ecx, %ecx addq %rcx, %rax - addq %rcx, %rsi + leaq -16(%rsi,%rcx), %rsi cmpq %rsi, %rdx jle 3b ret |