]> 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 19:44:17 +0000 (11:44 -0800)
commit375515bdf77dc4b78862cdb8a1fb5e51e28b25b3
treedc5cf54b3f1e4e5f406b857acb7f285877604316
parent293a787c88328bdad56b2cbe5d3b4b87a362bf5d
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]