glibc/sysdeps/x86_64/multiarch
Noah Goldstein b712be5264 x86: Prevent SIGSEGV in memcmp-sse2 when data is concurrently modified [BZ #29863]
In the case of INCORRECT usage of `memcmp(a, b, N)` where `a` and `b`
are concurrently modified as `memcmp` runs, there can be a SIGSEGV
in `L(ret_nonzero_vec_end_0)` because the sequential logic
assumes that `(rdx - 32 + rax)` is a positive 32-bit integer.

To be clear, this change does not mean the usage of `memcmp` is
supported.  The program behaviour is undefined (UB) in the
presence of data races, and `memcmp` is incorrect when the values
of `a` and/or `b` are modified concurrently (data race). This UB
may manifest itself as a SIGSEGV. That being said, if we can
allow the idiomatic use cases, like those in yottadb with
opportunistic concurrency control (OCC), to execute without a
SIGSEGV, at no cost to regular use cases, then we can aim to
minimize harm to those existing users.

The fix replaces a 32-bit `addl %edx, %eax` with the 64-bit variant
`addq %rdx, %rax`. The 1-extra byte of code size from using the
64-bit instruction doesn't contribute to overall code size as the
next target is aligned and has multiple bytes of `nop` padding
before it. As well all the logic between the add and `ret` still
fits in the same fetch block, so the cost of this change is
basically zero.

The relevant sequential logic can be seen in the following
pseudo-code:
```
    /*
     * rsi = a
     * rdi = b
     * rdx = len - 32
     */
    /* cmp a[0:15] and b[0:15]. Since length is known to be [17, 32]
    in this case, this check is also assumed to cover a[0:(31 - len)]
    and b[0:(31 - len)].  */
    movups  (%rsi), %xmm0
    movups  (%rdi), %xmm1
    PCMPEQ  %xmm0, %xmm1
    pmovmskb %xmm1, %eax
    subl    %ecx, %eax
    jnz L(END_NEQ)

    /* cmp a[len-16:len-1] and b[len-16:len-1].  */
    movups  16(%rsi, %rdx), %xmm0
    movups  16(%rdi, %rdx), %xmm1
    PCMPEQ  %xmm0, %xmm1
    pmovmskb %xmm1, %eax
    subl    %ecx, %eax
    jnz L(END_NEQ2)
    ret

L(END2):
    /* Position first mismatch.  */
    bsfl    %eax, %eax

    /* The sequential version is able to assume this value is a
    positive 32-bit value because the first check included bytes in
    range a[0:(31 - len)] and b[0:(31 - len)] so `eax` must be
    greater than `31 - len` so the minimum value of `edx` + `eax` is
    `(len - 32) + (32 - len) >= 0`. In the concurrent case, however,
    `a` or `b` could have been changed so a mismatch in `eax` less or
    equal than `(31 - len)` is possible (the new low bound is `(16 -
    len)`. This can result in a negative 32-bit signed integer, which
    when zero extended to 64-bits is a random large value this out
    out of bounds. */
    addl %edx, %eax

    /* Crash here because 32-bit negative number in `eax` zero
    extends to out of bounds 64-bit offset.  */
    movzbl  16(%rdi, %rax), %ecx
    movzbl  16(%rsi, %rax), %eax
```

This fix is quite simple, just make the `addl %edx, %eax` 64 bit (i.e
`addq %rdx, %rax`). This prevents the 32-bit zero extension
and since `eax` is still a low bound of `16 - len` the `rdx + rax`
is bound by `(len - 32) - (16 - len) >= -16`. Since we have a
fixed offset of `16` in the memory access this must be in bounds.
2022-12-15 09:09:35 -08:00
..
scripts x86: Update VEC macros to complete API for evex/evex512 impls 2022-10-14 21:21:58 -07:00
dl-symbol-redir-ifunc.h elf: Remove -fno-tree-loop-distribute-patterns usage on dl-support 2022-10-10 10:32:28 -03:00
ifunc-avx2.h x86-64: Require BMI1/BMI2 for AVX2 strrchr and wcsrchr implementations 2022-10-03 23:46:11 +02:00
ifunc-evex.h x86: Fix backwards Prefer_No_VZEROUPPER check in ifunc-evex.h 2022-06-27 08:35:51 -07:00
ifunc-impl-list.c x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
ifunc-memcmp.h x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
ifunc-memcmpeq.h x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
ifunc-memmove.h x86: Add support for building {w}memmove{_chk} with explicit ISA level 2022-07-05 16:42:42 -07:00
ifunc-memset.h x86: Add support for building {w}memset{_chk} with explicit ISA level 2022-07-05 16:42:42 -07:00
ifunc-sse4_2.h x86: Add support for building str{c|p}{brk|spn} with explicit ISA level 2022-07-05 16:42:42 -07:00
ifunc-strcasecmp.h x86-64: Require BMI2 for AVX2 str(n)casecmp implementations 2022-10-03 23:46:11 +02:00
ifunc-strcpy.h x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
ifunc-strncpy.h x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
ifunc-wcs.h x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
ifunc-wcslen.h x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
ifunc-wmemset.h x86: Add support for building {w}memset{_chk} with explicit ISA level 2022-07-05 16:42:42 -07:00
Makefile x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
memchr-avx2-rtm.S x86: Shrink code size of memchr-avx2.S 2022-06-07 13:10:31 -07:00
memchr-avx2.S x86: Add support for compiling {raw|w}memchr with high ISA level 2022-06-22 19:41:35 -07:00
memchr-evex512.S x86_64: Implement evex512 version of memchr, rawmemchr and wmemchr 2022-10-18 13:26:33 -07:00
memchr-evex-base.S x86_64: Implement evex512 version of memchr, rawmemchr and wmemchr 2022-10-18 13:26:33 -07:00
memchr-evex-rtm.S x86: Add EVEX optimized memchr family not safe for RTM 2021-05-08 16:26:30 -04:00
memchr-evex.S x86: Optimize memchr-evex.S and implement with VMM headers 2022-10-19 17:31:03 -07:00
memchr-sse2.S x86: Add support for compiling {raw|w}memchr with high ISA level 2022-06-22 19:41:35 -07:00
memchr.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memcmp-avx2-movbe-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
memcmp-avx2-movbe.S x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
memcmp-evex-movbe.S x86: Use VMM API in memcmp-evex-movbe.S and minor changes 2022-11-08 19:19:35 -08:00
memcmp-sse2.S x86: Prevent SIGSEGV in memcmp-sse2 when data is concurrently modified [BZ #29863] 2022-12-15 09:09:35 -08:00
memcmp.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memcmpeq-avx2-rtm.S x86_64: Add avx2 optimized __memcmpeq in memcmpeq-avx2.S 2021-10-27 13:03:46 -05:00
memcmpeq-avx2.S x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
memcmpeq-evex.S x86: Use VMM API in memcmpeq-evex.S and minor changes 2022-11-08 19:22:08 -08:00
memcmpeq-sse2.S x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
memcmpeq.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memcpy_chk-nonshared.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memcpy_chk.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memcpy.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memmove_chk-nonshared.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memmove_chk.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memmove-avx512-no-vzeroupper.S x86: Add support for building {w}memmove{_chk} with explicit ISA level 2022-07-05 16:42:42 -07:00
memmove-avx512-unaligned-erms.S x86: Update memmove to use new VEC macros 2022-10-14 21:21:58 -07:00
memmove-avx-unaligned-erms-rtm.S x86: Update memmove to use new VEC macros 2022-10-14 21:21:58 -07:00
memmove-avx-unaligned-erms.S x86: Update memmove to use new VEC macros 2022-10-14 21:21:58 -07:00
memmove-erms.S x86: Move mem{p}{mov|cpy}_{chk_}erms to its own file 2022-06-29 19:47:52 -07:00
memmove-evex-unaligned-erms.S x86: Update memmove to use new VEC macros 2022-10-14 21:21:58 -07:00
memmove-shlib-compat.h x86: Add support for building {w}memmove{_chk} with explicit ISA level 2022-07-05 16:42:42 -07:00
memmove-sse2-unaligned-erms.S x86: Update memmove to use new VEC macros 2022-10-14 21:21:58 -07:00
memmove-ssse3.S x86: Add support for building {w}memmove{_chk} with explicit ISA level 2022-07-05 16:42:42 -07:00
memmove-vec-unaligned-erms.S x86: Use testb for FSRM check in memmove-vec-unaligned-erms 2022-10-20 11:29:05 -07:00
memmove.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
mempcpy_chk-nonshared.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
mempcpy_chk.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
mempcpy.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memrchr-avx2-rtm.S x86: Optimize memrchr-avx2.S 2022-06-07 13:10:27 -07:00
memrchr-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
memrchr-evex.S x86: Optimize memrchr-evex.S 2022-10-19 17:31:03 -07:00
memrchr-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
memrchr.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memset_chk-nonshared.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memset_chk.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
memset-avx2-unaligned-erms-rtm.S x86: Update memset to use new VEC macros 2022-10-14 21:21:58 -07:00
memset-avx2-unaligned-erms.S x86: Update memset to use new VEC macros 2022-10-14 21:21:58 -07:00
memset-avx512-no-vzeroupper.S x86: Add support for building {w}memset{_chk} with explicit ISA level 2022-07-05 16:42:42 -07:00
memset-avx512-unaligned-erms.S x86: Update memset to use new VEC macros 2022-10-14 21:21:58 -07:00
memset-erms.S x86: Move and slightly improve memset_erms 2022-06-29 19:47:52 -07:00
memset-evex-unaligned-erms.S x86: Update memset to use new VEC macros 2022-10-14 21:21:58 -07:00
memset-sse2-unaligned-erms.S x86: Update memset to use new VEC macros 2022-10-14 21:21:58 -07:00
memset-vec-unaligned-erms.S x86: Update memset to use new VEC macros 2022-10-14 21:21:58 -07:00
memset.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
rawmemchr-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
rawmemchr-avx2.S x86: Add support for compiling {raw|w}memchr with high ISA level 2022-06-22 19:41:35 -07:00
rawmemchr-evex512.S x86_64: Implement evex512 version of memchr, rawmemchr and wmemchr 2022-10-18 13:26:33 -07:00
rawmemchr-evex-rtm.S x86: Optimize memchr-evex.S and implement with VMM headers 2022-10-19 17:31:03 -07:00
rawmemchr-evex.S x86: Optimize memchr-evex.S and implement with VMM headers 2022-10-19 17:31:03 -07:00
rawmemchr-sse2.S x86: Add support for compiling {raw|w}memchr with high ISA level 2022-06-22 19:41:35 -07:00
rawmemchr.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
reg-macros.h x86: Update VEC macros to complete API for evex/evex512 impls 2022-10-14 21:21:58 -07:00
rtld-memchr.S x86: Add support for compiling {raw|w}memchr with high ISA level 2022-06-22 19:41:35 -07:00
rtld-memcmp.S x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
rtld-memcmpeq.S x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
rtld-memmove.S x86: Add support for building {w}memmove{_chk} with explicit ISA level 2022-07-05 16:42:42 -07:00
rtld-memset.S x86: Add support for building {w}memset{_chk} with explicit ISA level 2022-07-05 16:42:42 -07:00
rtld-rawmemchr.S x86: Add support for compiling {raw|w}memchr with high ISA level 2022-06-22 19:41:35 -07:00
rtld-stpcpy.S x86: Move strcpy SSE2 implementation to multiarch/strcpy-sse2.S 2022-07-13 14:55:31 -07:00
rtld-strchr.S x86: Move strchr SSE2 implementation to multiarch/strchr-sse2.S 2022-07-13 14:55:31 -07:00
rtld-strchrnul.S x86: Move strchr SSE2 implementation to multiarch/strchr-sse2.S 2022-07-13 14:55:31 -07:00
rtld-strcmp.S x86: Move strcmp SSE2 implementation to multiarch/strcmp-sse2.S 2022-07-13 14:55:31 -07:00
rtld-strcpy.S x86: Fix -Os build (BZ #29576) 2022-10-05 18:04:13 -03:00
rtld-strcspn.c x86: Add support for building str{c|p}{brk|spn} with explicit ISA level 2022-07-05 16:42:42 -07:00
rtld-strlen.S x86: Move strlen SSE2 implementation to multiarch/strlen-sse2.S 2022-07-13 14:55:31 -07:00
rtld-strncmp.S x86: Move strcmp SSE2 implementation to multiarch/strcmp-sse2.S 2022-07-13 14:55:31 -07:00
rtld-strnlen.S x86: Move strlen SSE2 implementation to multiarch/strlen-sse2.S 2022-07-13 14:55:31 -07:00
stpcpy-avx2-rtm.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
stpcpy-avx2.S x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
stpcpy-evex.S x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
stpcpy-sse2-unaligned.S x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
stpcpy-sse2.S x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
stpcpy.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
stpncpy-avx2-rtm.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
stpncpy-avx2.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
stpncpy-evex.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-evex functions 2022-11-08 19:22:33 -08:00
stpncpy-sse2-unaligned.S x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
stpncpy.c x86: Remove generic strncat, strncpy, and stpncpy implementations 2022-07-12 11:44:12 -07:00
strcasecmp_l-avx2-rtm.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strcasecmp_l-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strcasecmp_l-evex.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strcasecmp_l-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strcasecmp_l-sse4_2.S x86: Move strcmp SSE42 implementation to multiarch/strcmp-sse4_2.S 2022-07-13 14:55:31 -07:00
strcasecmp_l.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strcasecmp.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strcat-avx2-rtm.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
strcat-avx2.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
strcat-evex.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-evex functions 2022-11-08 19:22:33 -08:00
strcat-sse2-unaligned.S x86-64 strncat: Properly handle the length parameter [BZ# 24097] 2022-12-02 08:18:10 -08:00
strcat-sse2.S x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
strcat-strlen-avx2.h.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
strcat-strlen-evex.h.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-evex functions 2022-11-08 19:22:33 -08:00
strcat.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strchr-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
strchr-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strchr-evex512.S x86_64: Implement evex512 version of strchrnul, strchr and wcschr 2022-10-25 22:39:35 -07:00
strchr-evex-base.S x86_64: Implement evex512 version of strchrnul, strchr and wcschr 2022-10-25 22:39:35 -07:00
strchr-evex.S x86: Shrink / minorly optimize strchr-evex and implement with VMM headers 2022-10-19 17:31:03 -07:00
strchr-sse2-no-bsf.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strchr-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strchr.c x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strchrnul-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
strchrnul-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strchrnul-evex512.S x86_64: Implement evex512 version of strchrnul, strchr and wcschr 2022-10-25 22:39:35 -07:00
strchrnul-evex.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strchrnul-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strchrnul.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strcmp-avx2-rtm.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strcmp-avx2.S x86: Use testb for case-locale check in str{n}casecmp-avx2 2022-10-20 11:29:05 -07:00
strcmp-evex.S x86: Add support for VEC_SIZE == 64 in strcmp-evex.S impl 2022-10-20 11:29:05 -07:00
strcmp-naming.h x86: Move strcmp SSE2 implementation to multiarch/strcmp-sse2.S 2022-07-13 14:55:31 -07:00
strcmp-sse2-unaligned.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strcmp-sse2.S x86: Use testb for case-locale check in str{n}casecmp-sse2 2022-10-20 11:29:05 -07:00
strcmp-sse4_2.S x86: Use testb for case-locale check in str{n}casecmp-sse42 2022-10-20 11:29:05 -07:00
strcmp.c x86-64: Require BMI2 for AVX2 strcmp implementation 2022-10-03 23:46:11 +02:00
strcpy-avx2-rtm.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
strcpy-avx2.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
strcpy-evex.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-evex functions 2022-11-08 19:22:33 -08:00
strcpy-sse2-unaligned.S x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
strcpy-sse2.S x86: Fix #define STRCPY guard in strcpy-sse2.S 2022-08-09 17:00:03 +08:00
strcpy.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strcspn-generic.c x86: Add support for building str{c|p}{brk|spn} with explicit ISA level 2022-07-05 16:42:42 -07:00
strcspn-sse4.c x86: Add support for building str{c|p}{brk|spn} with explicit ISA level 2022-07-05 16:42:42 -07:00
strcspn.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strlen-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
strlen-avx2.S x86: Fix wcsnlen-avx2 page cross length comparison [BZ #29591] 2022-09-28 20:15:16 -07:00
strlen-evex512.S x86: Update strlen-evex-base to use new reg/vec macros. 2022-10-14 21:21:58 -07:00
strlen-evex-base.S x86-64: Improve evex512 version of strlen functions 2022-10-30 13:09:56 -07:00
strlen-evex.S x86: Optimize strnlen-evex.S and implement with VMM headers 2022-10-19 17:31:03 -07:00
strlen-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strlen.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strncase_l-avx2-rtm.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strncase_l-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strncase_l-evex.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strncase_l-sse2.S x86: Move strcmp SSE2 implementation to multiarch/strcmp-sse2.S 2022-07-13 14:55:31 -07:00
strncase_l-sse4_2.S x86: Move strcmp SSE42 implementation to multiarch/strcmp-sse4_2.S 2022-07-13 14:55:31 -07:00
strncase_l.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strncase.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strncat-avx2-rtm.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
strncat-avx2.S x86-64 strncat: Properly handle the length parameter [BZ# 24097] 2022-12-02 08:18:10 -08:00
strncat-evex.S x86-64 strncat: Properly handle the length parameter [BZ# 24097] 2022-12-02 08:18:10 -08:00
strncat-sse2-unaligned.S x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
strncat.c x86: Remove generic strncat, strncpy, and stpncpy implementations 2022-07-12 11:44:12 -07:00
strncmp-avx2-rtm.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strncmp-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strncmp-evex.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strncmp-sse2.S x86: Move strcmp SSE2 implementation to multiarch/strcmp-sse2.S 2022-07-13 14:55:31 -07:00
strncmp-sse4_2.S x86: Move strcmp SSE42 implementation to multiarch/strcmp-sse4_2.S 2022-07-13 14:55:31 -07:00
strncmp.c x86-64: Require BMI2 for AVX2 strncmp implementation 2022-10-03 23:46:11 +02:00
strncpy-avx2-rtm.S x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
strncpy-avx2.S x86-64 strncpy: Properly handle the length parameter [BZ# 29839] 2022-12-02 08:18:41 -08:00
strncpy-evex.S x86-64 strncpy: Properly handle the length parameter [BZ# 29839] 2022-12-02 08:18:41 -08:00
strncpy-or-cat-overflow-def.h x86: Optimize and shrink st{r|p}{n}{cat|cpy}-evex functions 2022-11-08 19:22:33 -08:00
strncpy-sse2-unaligned.S x86: Add support to build st{p|r}{n}{cpy|cat} with explicit ISA level 2022-07-16 03:07:59 -07:00
strncpy.c x86: Remove generic strncat, strncpy, and stpncpy implementations 2022-07-12 11:44:12 -07:00
strnlen-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
strnlen-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strnlen-evex512.S x86_64: Implement evex512 version of strlen, strnlen, wcslen and wcsnlen 2022-05-26 13:11:36 -07:00
strnlen-evex.S x86: Optimize strnlen-evex.S and implement with VMM headers 2022-10-19 17:31:03 -07:00
strnlen-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strnlen.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strpbrk-generic.c x86: Add support for building str{c|p}{brk|spn} with explicit ISA level 2022-07-05 16:42:42 -07:00
strpbrk-sse4.c x86: Add support for building str{c|p}{brk|spn} with explicit ISA level 2022-07-05 16:42:42 -07:00
strpbrk.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strrchr-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
strrchr-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strrchr-evex512.S x86_64: Implement evex512 version of strrchr and wcsrchr 2022-11-03 15:51:52 -07:00
strrchr-evex-base.S x86_64: Implement evex512 version of strrchr and wcsrchr 2022-11-03 15:51:52 -07:00
strrchr-evex.S x86: Remove AVX512-BVMI2 instruction from strrchr-evex.S 2022-10-20 11:29:05 -07:00
strrchr-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strrchr.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strspn-generic.c x86: Add support for building str{c|p}{brk|spn} with explicit ISA level 2022-07-05 16:42:42 -07:00
strspn-sse4.c x86: Add support for building str{c|p}{brk|spn} with explicit ISA level 2022-07-05 16:42:42 -07:00
strspn.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
strstr-avx512.c x86: Remove __mmask intrinsics in strstr-avx512.c 2022-07-12 15:41:14 -07:00
strstr-sse2-unaligned.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
strstr.c x86: Rename strstr_sse2 to strstr_generic as it uses string/strstr.c 2022-06-27 08:35:51 -07:00
varshift.c x86: Add support for building str{c|p}{brk|spn} with explicit ISA level 2022-07-05 16:42:42 -07:00
varshift.h x86: Align varshift table to 32-bytes 2022-06-09 12:50:26 -07:00
wcpcpy-avx2.S x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcpcpy-evex.S x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcpcpy-generic.c x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcpcpy.c x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcpncpy-avx2.S x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcpncpy-evex.S x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcpncpy-generic.c x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcpncpy.c x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcscat-avx2.S x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcscat-evex.S x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcscat-generic.c x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcscat.c x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcschr-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
wcschr-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcschr-evex512.S x86_64: Implement evex512 version of strchrnul, strchr and wcschr 2022-10-25 22:39:35 -07:00
wcschr-evex.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcschr-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcschr.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
wcscmp-avx2-rtm.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcscmp-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcscmp-evex.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcscmp-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcscmp.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
wcscpy-avx2.S x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcscpy-evex.S x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcscpy-generic.c x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcscpy-ssse3.S x86: Add support to build wcscpy with explicit ISA level 2022-07-16 03:07:59 -07:00
wcscpy.c x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcslen-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
wcslen-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcslen-evex512.S x86_64: Implement evex512 version of strlen, strnlen, wcslen and wcsnlen 2022-05-26 13:11:36 -07:00
wcslen-evex.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcslen-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcslen-sse4_1.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcslen.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
wcsncat-avx2.S x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcsncat-evex.S x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcsncat-generic.c x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcsncat.c x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcsncmp-avx2-rtm.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcsncmp-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcsncmp-evex.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcsncmp-generic.c x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcsncmp.c x86: Rename generic functions with unique postfix for clarity 2022-06-16 20:17:45 -07:00
wcsncpy-avx2.S x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcsncpy-evex.S x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcsncpy-generic.c x86: Add avx2 optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcsncpy.c x86: Add evex optimized functions for the wchar_t strcpy family 2022-11-08 19:22:33 -08:00
wcsnlen-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
wcsnlen-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcsnlen-evex512.S x86_64: Implement evex512 version of strlen, strnlen, wcslen and wcsnlen 2022-05-26 13:11:36 -07:00
wcsnlen-evex.S x86: Optimize strnlen-evex.S and implement with VMM headers 2022-10-19 17:31:03 -07:00
wcsnlen-generic.c x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcsnlen-sse4_1.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcsnlen.c x86: Rename generic functions with unique postfix for clarity 2022-06-16 20:17:45 -07:00
wcsrchr-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
wcsrchr-avx2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcsrchr-evex512.S x86_64: Implement evex512 version of strrchr and wcsrchr 2022-11-03 15:51:52 -07:00
wcsrchr-evex.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcsrchr-sse2.S x86: Add support to build strcmp/strlen/strchr with explicit ISA level 2022-07-16 03:07:59 -07:00
wcsrchr.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
wmemchr-avx2-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
wmemchr-avx2.S x86: Add support for compiling {raw|w}memchr with high ISA level 2022-06-22 19:41:35 -07:00
wmemchr-evex512.S x86_64: Implement evex512 version of memchr, rawmemchr and wmemchr 2022-10-18 13:26:33 -07:00
wmemchr-evex-rtm.S x86: Add EVEX optimized memchr family not safe for RTM 2021-05-08 16:26:30 -04:00
wmemchr-evex.S x86: Add support for compiling {raw|w}memchr with high ISA level 2022-06-22 19:41:35 -07:00
wmemchr-sse2.S x86: Add support for compiling {raw|w}memchr with high ISA level 2022-06-22 19:41:35 -07:00
wmemchr.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
wmemcmp-avx2-movbe-rtm.S x86-64: Add AVX optimized string/memory functions for RTM 2021-03-29 07:40:17 -07:00
wmemcmp-avx2-movbe.S x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
wmemcmp-evex-movbe.S x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
wmemcmp-sse2.S x86: Add support for building {w}memcmp{eq} with explicit ISA level 2022-07-05 16:42:42 -07:00
wmemcmp.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
wmemset_chk-nonshared.S Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
wmemset_chk.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
wmemset.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
x86-avx-rtm-vecs.h x86: Update VEC macros to complete API for evex/evex512 impls 2022-10-14 21:21:58 -07:00
x86-avx-vecs.h x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions 2022-11-08 19:22:33 -08:00
x86-evex256-vecs.h x86: Update VEC macros to complete API for evex/evex512 impls 2022-10-14 21:21:58 -07:00
x86-evex512-vecs.h x86: Update VEC macros to complete API for evex/evex512 impls 2022-10-14 21:21:58 -07:00
x86-evex-vecs-common.h x86: Update VEC macros to complete API for evex/evex512 impls 2022-10-14 21:21:58 -07:00
x86-sse2-vecs.h x86: Update VEC macros to complete API for evex/evex512 impls 2022-10-14 21:21:58 -07:00
x86-vec-macros.h x86: Update VEC macros to complete API for evex/evex512 impls 2022-10-14 21:21:58 -07:00