[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