[PATCH 0/4] x86: Fix AVX2 string functions requiring BMI2 or LZCNT (BZ #29611)
Aurelien Jarno
aurelien@aurel32.net
Sat Oct 1 19:09:07 GMT 2022
Some early Intel Haswell CPU have AVX2 instructions, but do not have
BMI2 instructions. Some AVX2 string functions only check for AVX2, but
use BMI2 or LZCNT instructions. This patchset tries to fix that.
While most fixes only change ifunc-impl-list.c, and thus only concerns
the testsuite, the strn(case)cmp is a real issue affecting early Intel
Haswell CPU, reported to affect Debian Sid and Fedora Rawhide.
On the other hand, the check for LZCNT in memrchr is purely for
correctness, I am not aware of a CPU implementing AVX2 without LZCNT.
This has been tested by remplacing all BMI2 and LZCNT instruction in the
source code by the "ud2" instruction and disabling the BMI1, BMI2
feature detection, and running the testsuite.
Resolves: BZ #29611
Aurelien Jarno (4):
x86: include BMI1 and BMI2 in x86-64-v3 level
x86-64: Require BMI2 for AVX2 strn(case)cmp and wcsncmp
implementations
x86-64: Require BMI2 for AVX2 (raw|w)memchr implementations
x86-64: Require LZCNT for AVX2 memrchr implementation
sysdeps/x86/get-isa-level.h | 2 +
sysdeps/x86_64/multiarch/ifunc-avx2.h | 1 +
sysdeps/x86_64/multiarch/ifunc-impl-list.c | 44 +++++++++++++++------
sysdeps/x86_64/multiarch/ifunc-strcasecmp.h | 1 +
sysdeps/x86_64/multiarch/strncmp.c | 4 +-
5 files changed, 38 insertions(+), 14 deletions(-)
--
2.35.1
More information about the Libc-alpha
mailing list