]> git.ipfire.org Git - thirdparty/glibc.git/commit
x86-64: Add ifunc-avx2.h functions with 256-bit EVEX
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 5 Mar 2021 14:24:52 +0000 (06:24 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 27 Jan 2022 18:36:43 +0000 (10:36 -0800)
commit9cee072f8fd3eb8212e16bcde8bd637157d5af6d
tree7d94709d73e3b70544c80b2fb922918dd79b1f56
parentf0a2b671471bf1fe943feb4a2d00409625e05ba4
x86-64: Add ifunc-avx2.h functions with 256-bit EVEX

Update ifunc-avx2.h, strchr.c, strcmp.c, strncmp.c and wcsnlen.c to
select the function optimized with 256-bit EVEX instructions using
YMM16-YMM31 registers to avoid RTM abort with usable AVX512VL, AVX512BW
and BMI2 since VZEROUPPER isn't needed at function exit.

For strcmp/strncmp, prefer AVX2 strcmp/strncmp if Prefer_AVX2_STRCMP
is set.

(cherry picked from commit 1fd8c163a83d96ace1ff78fa6bac7aee084f6f77)
24 files changed:
sysdeps/x86_64/multiarch/Makefile
sysdeps/x86_64/multiarch/ifunc-avx2.h
sysdeps/x86_64/multiarch/ifunc-impl-list.c
sysdeps/x86_64/multiarch/memchr-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/memrchr-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/rawmemchr-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/strchr-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/strchr.c
sysdeps/x86_64/multiarch/strchrnul-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/strcmp-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/strcmp.c
sysdeps/x86_64/multiarch/strlen-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/strncmp-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/strncmp.c
sysdeps/x86_64/multiarch/strnlen-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/strrchr-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/wcschr-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/wcscmp-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/wcslen-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/wcsncmp-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/wcsnlen-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/wcsnlen.c
sysdeps/x86_64/multiarch/wcsrchr-evex.S [new file with mode: 0644]
sysdeps/x86_64/multiarch/wmemchr-evex.S [new file with mode: 0644]