summaryrefslogtreecommitdiff
path: root/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2018-12-27 17:45:04 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-12-27 17:45:04 +0000
commit6aa82888e61d3e2232926ee68e764f17eae2e7e1 (patch)
tree17b2fb350da15d1d097f22dc7e2e7d20db1bd486 /sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
parentffbe9c552a1009167ec7a765c1543c7f3e4169d6 (diff)
parent963c37d5c0eb62b38f8764b23931c0dcdd497a13 (diff)
Merge commit 'refs/top-bases/t/sendmsg-SCM_RIGHTS' into t/sendmsg-SCM_RIGHTS
Diffstat (limited to 'sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S')
-rw-r--r--sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S12
1 files changed, 9 insertions, 3 deletions
diff --git a/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S b/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
index 5d48898ffa..c8278ba36d 100644
--- a/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
+++ b/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
@@ -1,5 +1,5 @@
/* Optimized memchr with sse2
- Copyright (C) 2011-2016 Free Software Foundation, Inc.
+ Copyright (C) 2011-2018 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -149,9 +149,15 @@ L(crosscache):
.p2align 4
L(unaligned_no_match):
# ifndef USE_AS_RAWMEMCHR
- sub $16, %edx
+ /* Calculate the last acceptable address and check for possible
+ addition overflow by using satured math:
+ edx = ecx + edx
+ edx |= -(edx < ecx) */
add %ecx, %edx
- jle L(return_null)
+ sbb %eax, %eax
+ or %eax, %edx
+ sub $16, %edx
+ jbe L(return_null)
add $16, %edi
# else
add $16, %edx