Fix x86-64 strchr propagation of search byte into all bytes of SSE register

This commit is contained in:
Richard Li 2010-10-25 14:13:17 -04:00 committed by Ulrich Drepper
parent fdc0f374bc
commit dbf3a06904
3 changed files with 10 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2010-10-25 Ulrich Drepper <drepper@redhat.com>
[BZ #12159]
* sysdeps/x86_64/multiarch/strchr.S: Fix propagation of search byte
into all bytes of SSE register.
Patch by Richard Li <richardpku@gmail.com>.
2010-10-24 Ulrich Drepper <drepper@redhat.com> 2010-10-24 Ulrich Drepper <drepper@redhat.com>
[BZ #12140] [BZ #12140]

2
NEWS
View File

@ -11,7 +11,7 @@ Version 2.13
3268, 7066, 10851, 11611, 11640, 11701, 11840, 11856, 11883, 11903, 11904, 3268, 7066, 10851, 11611, 11640, 11701, 11840, 11856, 11883, 11903, 11904,
11968, 11979, 12005, 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 11968, 11979, 12005, 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108,
12113, 12140 12113, 12140, 12159
* New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark * New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark

View File

@ -1,5 +1,5 @@
/* strchr with SSE4.2 /* strchr with SSE4.2
Copyright (C) 2009 Free Software Foundation, Inc. Copyright (C) 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -87,13 +87,13 @@ __strchr_sse42:
pxor %xmm2, %xmm2 pxor %xmm2, %xmm2
movd %esi, %xmm1 movd %esi, %xmm1
movl %edi, %ecx movl %edi, %ecx
pshufb %xmm2, %xmm1
andl $15, %ecx andl $15, %ecx
movq %rdi, %r8 movq %rdi, %r8
je L(aligned_start) je L(aligned_start)
/* Handle unaligned string. */ /* Handle unaligned string. */
andq $-16, %r8 andq $-16, %r8
pshufb %xmm2, %xmm1
movdqa (%r8), %xmm0 movdqa (%r8), %xmm0
pcmpeqb %xmm0, %xmm2 pcmpeqb %xmm0, %xmm2
pcmpeqb %xmm1, %xmm0 pcmpeqb %xmm1, %xmm0