[PATCH v2 1/1] x86: fix wmemset ifunc stray '!' (bug 33542)
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Wed Oct 15 12:28:27 GMT 2025
On 14/10/25 09:14, Jiamei Xie wrote:
> 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>
LGTM, thanks.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> sysdeps/x86_64/multiarch/ifunc-wmemset.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sysdeps/x86_64/multiarch/ifunc-wmemset.h b/sysdeps/x86_64/multiarch/ifunc-wmemset.h
> index f95cca6ae5..50af138230 100644
> --- a/sysdeps/x86_64/multiarch/ifunc-wmemset.h
> +++ b/sysdeps/x86_64/multiarch/ifunc-wmemset.h
> @@ -35,7 +35,7 @@ IFUNC_SELECTOR (void)
>
> if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX2)
> && X86_ISA_CPU_FEATURES_ARCH_P (cpu_features,
> - AVX_Fast_Unaligned_Load, !))
> + AVX_Fast_Unaligned_Load,))
> {
> if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512VL))
> {
More information about the Libc-alpha
mailing list