glibc/sysdeps/x86_64
Jiamei Xie 96f1804a0d
x86: fix wmemset ifunc stray '!' (bug 33542)
The ifunc selector for wmemset had a stray '!' in the
X86_ISA_CPU_FEATURES_ARCH_P(...) check:

  if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX2)
      && X86_ISA_CPU_FEATURES_ARCH_P (cpu_features,
                                      AVX_Fast_Unaligned_Load, !))

This effectively negated the predicate and caused the AVX2/AVX512
paths to be skipped, making the dispatcher fall back to the SSE2
implementation even on CPUs where AVX2/AVX512 are available. The
regression leads to noticeable throughput loss for wmemset.

Remove the stray '!' so the AVX_Fast_Unaligned_Load capability is
tested as intended and the correct AVX2/EVEX variants are selected.

Impact:
- On AVX2/AVX512-capable x86_64, wmemset no longer incorrectly
  falls back to SSE2; perf now shows __wmemset_evex/avx2 variants.

Testing:
- benchtests/bench-wmemset shows improved bandwidth across sizes.
- perf confirm the selected symbol is no longer SSE2.

Signed-off-by: xiejiamei <xiejiamei@hygon.com>
Signed-off-by: Li jing <lijing@hygon.cn>
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
(cherry picked from commit 4d86b6cdd8)
2025-11-04 12:23:06 +00:00
..
64
fpu Apply the Makefile sorting fix 2025-08-20 06:11:54 -07:00
htl
multiarch x86: fix wmemset ifunc stray '!' (bug 33542) 2025-11-04 12:23:06 +00:00
nptl x86/cet: Sync with Linux kernel 6.6 shadow stack interface 2025-08-19 15:39:23 -07:00
sys
x32 x86-64: Remove sysdeps/x86_64/x32/dl-machine.h 2025-08-19 18:11:21 -07:00
Implies
Makefile i386: Also add GLIBC_ABI_GNU2_TLS version [BZ #33129] 2025-08-20 15:11:09 -07:00
Versions i386: Also add GLIBC_ABI_GNU2_TLS version [BZ #33129] 2025-08-20 15:11:09 -07:00
____longjmp_chk.S
__longjmp.S x86-64/cet: Check the restore token in longjmp 2025-08-19 15:39:23 -07:00
_mcount.S
abort-instr.h
add_n.S
addmul_1.S
bsd-_setjmp.S
bsd-setjmp.S
check-cet.awk x86-64/cet: Move check-cet.awk to x86_64 2025-08-19 15:39:23 -07:00
configure x86-64: Update _dl_tlsdesc_dynamic to preserve AMX registers 2025-08-19 18:22:00 -07:00
configure.ac x86-64: Update _dl_tlsdesc_dynamic to preserve AMX registers 2025-08-19 18:22:00 -07:00
crti.S
crtn.S
dl-cache.h
dl-cet.c x86-64/cet: Move dl-cet.[ch] to x86_64 directories 2025-08-19 15:39:23 -07:00
dl-hwcaps-subdirs.c
dl-irel.h
dl-machine.h x86: Update _dl_tlsdesc_dynamic to preserve caller-saved registers 2025-08-19 18:22:00 -07:00
dl-procinfo.c x86: Update _dl_tlsdesc_dynamic to preserve caller-saved registers 2025-08-19 18:22:00 -07:00
dl-procruntime.c i386: Remove CET support bits 2025-08-19 15:39:23 -07:00
dl-runtime.h
dl-tls.c elf: Support recursive use of dynamic TLS in interposed malloc 2025-01-10 16:49:38 -08:00
dl-tls.h
dl-tlsdesc-dynamic.h x86: Use separate variable for TLSDESC XSAVE/XSAVEC state size (bug 32810) 2025-08-20 06:14:48 -07:00
dl-tlsdesc.S x86-64: Don't use SSE resolvers for ISA level 3 or above 2025-10-17 08:04:28 +08:00
dl-tlsdesc.h
dl-trampoline-state.h x86: Update _dl_tlsdesc_dynamic to preserve caller-saved registers 2025-08-19 18:22:00 -07:00
dl-trampoline.S i386: Update ___tls_get_addr to preserve vector registers 2025-08-20 11:09:07 -07:00
dl-trampoline.h x86: Update _dl_tlsdesc_dynamic to preserve caller-saved registers 2025-08-19 18:22:00 -07:00
feature-control.h i386: Remove CET support bits 2025-08-19 15:39:23 -07:00
ffs.c
ffsll.c
ifuncmain8.c
ifuncmod8.c
isa-default-impl.h
isa.h
jmpbuf-offsets.h
jmpbuf-unwind.h
l10nflist.c
ldsodefs.h i386: Remove CET support bits 2025-08-19 15:39:23 -07:00
link-defines.sym
locale-defines.sym
localplt.data
lshift.S
machine-gmon.h
memchr.S
memcmp-isa-default-impl.h
memcmp.S
memcmpeq.S
memcpy.S
memcpy_chk.S
memmove.S
memmove_chk.S
mempcpy.S
mempcpy_chk.S
memrchr.S
memset.S
memset_chk.S
mp_clz_tab.c
mul_1.S
preconfigure
preconfigure.ac
rawmemchr.S
rshift.S
rtld-offsets.sym
setjmp.S
stackguard-macros.h
stackinfo.h
start.S
stpcpy.S
stpncpy.S
strcasecmp.S
strcasecmp_l-nonascii.c
strcasecmp_l.S
strcat.S
strchr-isa-default-impl.h
strchr.S
strchrnul.S
strcmp.S
strcpy.S
strcspn-generic.c
strcspn.c
strlen.S
strncase.S
strncase_l-nonascii.c
strncase_l.S
strncat.S
strncmp.S
strncpy.S
strnlen.S
strpbrk-generic.c
strpbrk.c
strrchr.S
strspn-generic.c
strspn.c
sub_n.S
submul_1.S
sysdep.h i386: Remove CET support 2025-08-19 06:29:04 -07:00
tls_get_addr.S
tlsdesc.c
tlsdesc.sym
tst-audit.h
tst-audit3.c
tst-audit4-aux.c
tst-audit4.c
tst-audit5.c
tst-audit6.c
tst-audit7.c
tst-audit10-aux.c
tst-audit10.c
tst-auditmod3a.c
tst-auditmod3b.c
tst-auditmod4a.c
tst-auditmod4b.c
tst-auditmod5a.c
tst-auditmod5b.c
tst-auditmod6a.c
tst-auditmod6b.c
tst-auditmod6c.c
tst-auditmod7a.c
tst-auditmod7b.c
tst-auditmod10a.c
tst-auditmod10b.c
tst-avx-aux.c
tst-avx.c
tst-avx512-aux.c
tst-avx512.c
tst-avx512mod.c
tst-avxmod.c
tst-cet-legacy-1.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-1a.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-2.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-2a.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-3.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-4.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-4a.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-4b.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-4c.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-5.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-5a.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-5b.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-6.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-6a.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-6b.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-7.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-8.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-9-static.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-9.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-10-static.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-10.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-10a-static.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-10a.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-1.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-2.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-4.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-5.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-5a.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-5b.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-5c.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-6.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-6a.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-6b.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-6c.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-cet-legacy-mod-6d.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-glibc-hwcaps.c
tst-gnu2-tls2mod1.S x86-64: Allocate state buffer space for RDI, RSI and RBX 2025-08-19 18:22:00 -07:00
tst-platform-1.c
tst-platformmod-1.c
tst-platformmod-2.c
tst-quad1.c
tst-quad1pie.c
tst-quad2.c
tst-quad2pie.c
tst-quadmod1.S
tst-quadmod1pie.S
tst-quadmod2.S
tst-quadmod2pie.S
tst-rsi-strlen.c
tst-rsi-wcslen.c
tst-shstk-legacy-1-extra.S x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1a-static.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1a.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1b-static.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1b.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1c-static.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1c.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1d-static.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1d.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1e-static.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1e-static.sh x86/cet: fix shadow stack test scripts 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1e.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1e.sh x86/cet: fix shadow stack test scripts 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1f.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1g.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-1g.sh x86/cet: fix shadow stack test scripts 2025-08-19 15:39:23 -07:00
tst-shstk-legacy-mod-1.c x86: Move CET infrastructure to x86_64 2025-08-19 15:39:23 -07:00
tst-split-dynreloc.c
tst-split-dynreloc.lds
tst-sse.c
tst-ssemod.c
varshift.c
wcpcpy-generic.c
wcpcpy.S
wcpncpy-generic.c
wcpncpy.S
wcscat-generic.c
wcscat.S
wcschr.S
wcscmp.S
wcscpy-generic.c
wcscpy.S
wcslen.S
wcsncat-generic.c
wcsncat.S
wcsncmp-generic.c
wcsncmp.S
wcsncpy-generic.c
wcsncpy.S
wcsnlen-generic.c
wcsnlen.S
wcsrchr.S
wmemchr.S
wmemcmp.S
wmemset.S
wmemset_chk.S
wordcopy.c
x86-lp_size.h