[{"id":3669368,"web_url":"http://patchwork.ozlabs.org/comment/3669368/","msgid":"<CAMe9rOqtEi3YMp--jtjRBt7H1GLM0XBU2OACLyCk9Mh+DHOYdg@mail.gmail.com>","list_archive_url":null,"date":"2026-03-25T22:24:33","subject":"Re: [PATCH v2 1/1] x86_64: Prefer EVEX512 code-path on AMD Zen5 CPUs","submitter":{"id":4387,"url":"http://patchwork.ozlabs.org/api/people/4387/","name":"H.J. Lu","email":"hjl.tools@gmail.com"},"content":"On Tue, Mar 24, 2026 at 12:21 PM Sajan Karumanchi\n<sajan.karumanchi@gmail.com> wrote:\n>\n> Introduced a synthetic architecture preference flag (Prefer_EVEX512)\n> and enabled it for AMD Zen5 (CPUID Family 0x1A) when AVX-512 is supported.\n>\n> This flag modifies IFUNC dispatch to prefer 512-bit EVEX variants over\n> 256-bit EVEX variants for string and memory functions on Zen5 processors,\n> leveraging their native 512-bit execution units for improved throughput.\n> When Prefer_EVEX512 is set, the dispatcher selects evex512 implementations;\n> otherwise, it falls back to evex (256-bit) variants.\n>\n> The implementation updates the IFUNC selection logic in ifunc-avx2.h and\n> ifunc-evex.h to check for the Prefer_EVEX512 flag before dispatching to\n> EVEX512 implementations. This change affects six string/memory functions:\n>\n>   - strchr\n>   - strlen\n>   - strnlen\n>   - strrchr\n>   - strchrnul\n>   - memchr\n>\n> Benchmarks conducted on AMD Zen5 hardware demonstrate significant\n> performance improvements across all affected functions:\n>\n> Function    Baseline   Patched    Avg         Avg        Avg      Max\n>             Variant    Variant    Baseline    Patched    Change   Improve\n>                                   (ns)        (ns)       %        %\n> ------------+----------+----------+-----------+----------+--------+--------\n> STRCHR      evex       evex512    16.408      12.293     25.08%   37.69%\n> STRLEN      evex       evex512    16.862      11.436     32.18%   56.74%\n> STRNLEN     evex       evex512    18.493      11.762     36.40%   64.40%\n> STRRCHR     evex       evex512    15.154      10.874     28.24%   44.38%\n> STRCHRNUL   evex       evex512    16.464      12.605     23.44%   45.56%\n> MEMCHR      evex       evex512    9.984       8.268      17.19%   39.99%\n>\n> Additionally, a tunable option (glibc.cpu.x86_cpu_features.preferred)\n> is provided to allow runtime control of the Prefer_EVEX512 flag for testing\n> and compatibility.\n>\n> Reviewed-by: Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>\n> ---\n>  sysdeps/x86/cpu-features.c                        |  8 ++++++++\n>  sysdeps/x86/cpu-tunables.c                        |  6 ++++++\n>  .../cpu-features-preferred_feature_index_1.def    |  1 +\n>  sysdeps/x86_64/multiarch/ifunc-avx2.h             | 15 ++++++++++++---\n>  sysdeps/x86_64/multiarch/ifunc-evex.h             | 11 ++++++++++-\n>  sysdeps/x86_64/multiarch/memchr.c                 |  1 +\n>  sysdeps/x86_64/multiarch/strchr.c                 |  8 +++++++-\n>  sysdeps/x86_64/multiarch/strchrnul.c              |  1 +\n>  sysdeps/x86_64/multiarch/strlen.c                 |  1 +\n>  sysdeps/x86_64/multiarch/strnlen.c                |  1 +\n>  sysdeps/x86_64/multiarch/strrchr.c                |  1 +\n>  11 files changed, 49 insertions(+), 5 deletions(-)\n>\n> diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c\n> index ccfef55652..0112a0dcc5 100644\n> --- a/sysdeps/x86/cpu-features.c\n> +++ b/sysdeps/x86/cpu-features.c\n> @@ -1009,6 +1009,14 @@ disable_tsx:\n>        cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset]\n>           &= ~bit_arch_Avoid_Non_Temporal_Memset;\n>\n> +      /* Prefer EVEX512 string/memory variants on AMD Zen5 (Family 0x1A)\n> +         when AVX-512 is usable. */\n> +      if (family == 0x1A && CPU_FEATURE_USABLE_P (cpu_features, AVX512F))\n> +        {\n\nDrop {}.\n\n> +          cpu_features->preferred[index_arch_Prefer_EVEX512]\n> +            |= bit_arch_Prefer_EVEX512;\n> +        }\n> +\n>        if (CPU_FEATURE_USABLE_P (cpu_features, AVX))\n>         {\n>           /* Since the FMA4 bit is in CPUID_INDEX_80000001 and\n> diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c\n> index 51769a5493..59dde5f1d7 100644\n> --- a/sysdeps/x86/cpu-tunables.c\n> +++ b/sysdeps/x86/cpu-tunables.c\n> @@ -203,6 +203,12 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)\n>                                                      11);\n>             }\n>           break;\n> +       case 14:\n> +           {\n> +             CHECK_GLIBC_IFUNC_PREFERRED_NEED_BOTH\n> +               (n, cpu_features, Prefer_EVEX512, AVX512F, 14);\n> +           }\n> +         break;\n>         case 15:\n>             {\n>               CHECK_GLIBC_IFUNC_PREFERRED_BOTH (n, cpu_features,\n> diff --git a/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def b/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def\n> index 8cab2ae248..74acb3fde1 100644\n> --- a/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def\n> +++ b/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def\n> @@ -35,3 +35,4 @@ BIT (Prefer_FSRM)\n>  BIT (Avoid_Short_Distance_REP_MOVSB)\n>  BIT (Avoid_Non_Temporal_Memset)\n>  BIT (Avoid_STOSB)\n> +BIT (Prefer_EVEX512)\n> diff --git a/sysdeps/x86_64/multiarch/ifunc-avx2.h b/sysdeps/x86_64/multiarch/ifunc-avx2.h\n> index bc7178d97e..474466ba93 100644\n> --- a/sysdeps/x86_64/multiarch/ifunc-avx2.h\n> +++ b/sysdeps/x86_64/multiarch/ifunc-avx2.h\n> @@ -1,4 +1,4 @@\n> -/* Common definition for ifunc selections optimized with SSE2 and AVX2.\n> +/* Common definition for ifunc selections optimized with SSE2, AVX2 and EVEX512.\n>     All versions must be listed in ifunc-impl-list.c.\n>     Copyright (C) 2017-2026 Free Software Foundation, Inc.\n>     This file is part of the GNU C Library.\n> @@ -25,6 +25,10 @@\n>\n>  extern __typeof (REDIRECT_NAME) OPTIMIZE (evex) attribute_hidden;\n>\n> +#ifdef USE_EVEX512\n> +extern __typeof (REDIRECT_NAME) OPTIMIZE (evex512) attribute_hidden;\n> +#endif\n> +\n>  extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2) attribute_hidden;\n>  extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2_rtm) attribute_hidden;\n>\n> @@ -44,8 +48,13 @@ IFUNC_SELECTOR (void)\n>      {\n>        if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512VL)\n>           && X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512BW))\n> -       return OPTIMIZE (evex);\n> -\n> +      {\n> +#ifdef USE_EVEX512\n> +        if (CPU_FEATURES_ARCH_P (cpu_features, Prefer_EVEX512))\n> +      return OPTIMIZE (evex512);\n> +#endif\n> +         return OPTIMIZE (evex);\n> +      }\n>        if (CPU_FEATURE_USABLE_P (cpu_features, RTM))\n>         return OPTIMIZE (avx2_rtm);\n>\n> diff --git a/sysdeps/x86_64/multiarch/ifunc-evex.h b/sysdeps/x86_64/multiarch/ifunc-evex.h\n> index 973a5b3d15..02ca749a72 100644\n> --- a/sysdeps/x86_64/multiarch/ifunc-evex.h\n> +++ b/sysdeps/x86_64/multiarch/ifunc-evex.h\n> @@ -1,4 +1,4 @@\n> -/* Common definition for ifunc selection optimized with EVEX.\n> +/* Common definition for ifunc selection optimized with EVEX and EVEX512.\n>     All versions must be listed in ifunc-impl-list.c.\n>     Copyright (C) 2017-2026 Free Software Foundation, Inc.\n>     This file is part of the GNU C Library.\n> @@ -22,6 +22,10 @@\n>  extern __typeof (REDIRECT_NAME) OPTIMIZE (evex) attribute_hidden;\n>  extern __typeof (REDIRECT_NAME) OPTIMIZE (evex_rtm) attribute_hidden;\n>\n> +#ifdef USE_EVEX512\n> +extern __typeof (REDIRECT_NAME) OPTIMIZE (evex512) attribute_hidden;\n> +#endif\n> +\n>  extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2) attribute_hidden;\n>  extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2_rtm) attribute_hidden;\n>\n> @@ -42,6 +46,11 @@ IFUNC_SELECTOR (void)\n>        if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512VL)\n>           && X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512BW))\n>         {\n> +#ifdef USE_EVEX512\n> +      if (CPU_FEATURES_ARCH_P (cpu_features, Prefer_EVEX512))\n> +        return OPTIMIZE (evex512);\n> +#endif\n> +\n>           if (CPU_FEATURE_USABLE_P (cpu_features, RTM))\n>             return OPTIMIZE (evex_rtm);\n>\n> diff --git a/sysdeps/x86_64/multiarch/memchr.c b/sysdeps/x86_64/multiarch/memchr.c\n> index cea0518787..b2a6c666a9 100644\n> --- a/sysdeps/x86_64/multiarch/memchr.c\n> +++ b/sysdeps/x86_64/multiarch/memchr.c\n> @@ -24,6 +24,7 @@\n>  # undef memchr\n>\n>  # define SYMBOL_NAME memchr\n> +# define USE_EVEX512 1\n>  # include \"ifunc-evex.h\"\n>\n>  libc_ifunc_redirected (__redirect_memchr, memchr, IFUNC_SELECTOR ());\n> diff --git a/sysdeps/x86_64/multiarch/strchr.c b/sysdeps/x86_64/multiarch/strchr.c\n> index 1064bc8e5b..f6bd36ba73 100644\n> --- a/sysdeps/x86_64/multiarch/strchr.c\n> +++ b/sysdeps/x86_64/multiarch/strchr.c\n> @@ -27,6 +27,7 @@\n>  # include <init-arch.h>\n>\n>  extern __typeof (REDIRECT_NAME) OPTIMIZE (evex) attribute_hidden;\n> +extern __typeof (REDIRECT_NAME) OPTIMIZE (evex512) attribute_hidden;\n>\n>  extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2) attribute_hidden;\n>  extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2_rtm) attribute_hidden;\n> @@ -46,7 +47,12 @@ IFUNC_SELECTOR (void)\n>      {\n>        if (X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512VL)\n>           && X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512BW))\n> -       return OPTIMIZE (evex);\n> +       {\n> +         if (CPU_FEATURES_ARCH_P (cpu_features, Prefer_EVEX512))\n> +           return OPTIMIZE (evex512);\n> +\n> +         return OPTIMIZE (evex);\n> +       }\n>\n>        if (CPU_FEATURE_USABLE_P (cpu_features, RTM))\n>         return OPTIMIZE (avx2_rtm);\n> diff --git a/sysdeps/x86_64/multiarch/strchrnul.c b/sysdeps/x86_64/multiarch/strchrnul.c\n> index f4bfc28c7b..3bb93bb812 100644\n> --- a/sysdeps/x86_64/multiarch/strchrnul.c\n> +++ b/sysdeps/x86_64/multiarch/strchrnul.c\n> @@ -26,6 +26,7 @@\n>  # undef strchrnul\n>\n>  # define SYMBOL_NAME strchrnul\n> +# define USE_EVEX512 1\n>  # include \"ifunc-avx2.h\"\n>\n>  libc_ifunc_redirected (__redirect_strchrnul, __strchrnul,\n> diff --git a/sysdeps/x86_64/multiarch/strlen.c b/sysdeps/x86_64/multiarch/strlen.c\n> index 95aa48e5d3..2f93abf1c8 100644\n> --- a/sysdeps/x86_64/multiarch/strlen.c\n> +++ b/sysdeps/x86_64/multiarch/strlen.c\n> @@ -24,6 +24,7 @@\n>  # undef strlen\n>\n>  # define SYMBOL_NAME strlen\n> +# define USE_EVEX512 1\n>  # include \"ifunc-avx2.h\"\n>\n>  libc_ifunc_redirected (__redirect_strlen, strlen, IFUNC_SELECTOR ());\n> diff --git a/sysdeps/x86_64/multiarch/strnlen.c b/sysdeps/x86_64/multiarch/strnlen.c\n> index bfe4d7abf0..62e50a27e4 100644\n> --- a/sysdeps/x86_64/multiarch/strnlen.c\n> +++ b/sysdeps/x86_64/multiarch/strnlen.c\n> @@ -26,6 +26,7 @@\n>  # undef strnlen\n>\n>  # define SYMBOL_NAME strnlen\n> +# define USE_EVEX512 1\n>  # include \"ifunc-avx2.h\"\n>\n>  libc_ifunc_redirected (__redirect_strnlen, __strnlen, IFUNC_SELECTOR ());\n> diff --git a/sysdeps/x86_64/multiarch/strrchr.c b/sysdeps/x86_64/multiarch/strrchr.c\n> index 66d3f5b1d1..0965938561 100644\n> --- a/sysdeps/x86_64/multiarch/strrchr.c\n> +++ b/sysdeps/x86_64/multiarch/strrchr.c\n> @@ -23,6 +23,7 @@\n>  # undef strrchr\n>\n>  # define SYMBOL_NAME strrchr\n> +# define USE_EVEX512 1\n>  # include \"ifunc-avx2.h\"\n>\n>  libc_ifunc_redirected (__redirect_strrchr, strrchr, IFUNC_SELECTOR ());\n> --\n> 2.34.1","headers":{"Return-Path":"<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>","X-Original-To":["incoming@patchwork.ozlabs.org","libc-alpha@sourceware.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","libc-alpha@sourceware.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=eV31DzAy;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=eV31DzAy","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","sourceware.org; spf=pass smtp.mailfrom=gmail.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=2607:f8b0:4864:20::102e"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fh1h5650Tz1y1x\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 09:25:41 +1100 (AEDT)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 3C3EC4BA23F5\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 22:25:34 +0000 (GMT)","from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com\n [IPv6:2607:f8b0:4864:20::102e])\n by sourceware.org (Postfix) with ESMTPS id 1E1E34BA23D7\n for <libc-alpha@sourceware.org>; Wed, 25 Mar 2026 22:25:11 +0000 (GMT)","by mail-pj1-x102e.google.com with SMTP id\n 98e67ed59e1d1-358d80f60ccso211548a91.3\n for <libc-alpha@sourceware.org>; Wed, 25 Mar 2026 15:25:11 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 3C3EC4BA23F5","OpenDKIM Filter v2.11.0 sourceware.org 1E1E34BA23D7"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 1E1E34BA23D7","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 1E1E34BA23D7","ARC-Seal":["i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1774477511; cv=pass;\n b=oHKXWz4qzOeYJQ6CxRuEynfZtYzPniwUyCeOP2g+d5V/JFTJxmwdV2fLhKHUVofeBi2SuftqQGBBzqJDX2a4/A9iwzOAIulmKCZ3JcBk4vg1K+0gSO3HMtfGky3HeqKHKi7cQpk9heuoKQyHMqm6/QXNR9qO3bwUFlNcMXAwxxQ=","i=1; a=rsa-sha256; t=1774477510; cv=none;\n d=google.com; s=arc-20240605;\n b=QWLGK1n3hacGA5asrXNccbNSFXhNYMDu8XXCnmtc+qbv0AjP4v4WyYg9I5Z64El02C\n P5ErEYpKN1c4dOhwP79qupImQPOYeB8cT9gxU8W4UXS3trM0/3djbfoT5cZJ0DKK2pEh\n yoE6UXC/6yGcs3IhMIOGJvroAVDGi3B1mAKyUS712zbMWuZKs5YvYhyzczLX13rYBmIm\n ulKvHj11YDGO0qG/h1wtMgOTqDb60VP11gd52H4E1qILXxCOVcjXVjetbrNzVbHmk9yk\n XZIGKdeVCnKEjNBDcVpIfQP38uydWRZt39hnVCuFwxGpRi14Se61SbMQSTEt3InetaI+\n rzzw=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1774477511; c=relaxed/simple;\n bh=MR6w0FQXGKgWWuEToG74gSadhtcIKJ3Pw65zT2FWoCM=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=kRbBIeBfGkHqwdDhkMpCEUApeCZUoyEummh6ZS1UQau64S0KyOXMWM91i6WeZgqszauzBt2sXHjdfnf4PDr2xrjljG5Ef2U7+jBdlx+4fyqwq/XVMzMX0Lth2C6o9NTYQMH1ZJUOKAHrfK20RdAX1DZm3G+Cnh5HTcg8H53feDw=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=vuW5sLTiKxq7YEOgHMwefJJjjQ4qMT3eT5TQuGfdXOs=;\n fh=vU00GV6An53B9cuOcChv7kM8+jkmclgSIvxH2SfjV0w=;\n b=LjbLu2nvmkw+jcb48vpZaIwWa+L0cUcPlGMkZAvw3nVpqLyjXiJRQdZ+fVBOyCI5E9\n 6+nxw8p+4BJfI2gcB3qyOJ3HZsjQy8fwgMzU64WGqencG+ovqewzAw9hi9jQPxwtPEE9\n MZl9C283DKvU2sPzL02zevulKB/0VJVV1tGAAjffsSiQRGE3HogXInsY3+NF3v8HZvKA\n RgvhhXNm9crP2ksJD1jPvBUaGqj+kqrDLoKn4i5hl1/dozh1Hi4b1fs2u/AoE0ZXzWRf\n Cra8VyFYiWSUouy26P4mpSHSKyLr48IAMBmB6zYO1jAzMfRAcjn5YDt8jmvso9w5taCR\n LReA==; darn=sourceware.org"],"ARC-Authentication-Results":["i=2; server2.sourceware.org","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1774477510; x=1775082310; darn=sourceware.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=vuW5sLTiKxq7YEOgHMwefJJjjQ4qMT3eT5TQuGfdXOs=;\n b=eV31DzAyhIFIt11zjYZbEyvcRZnhWsjFJbNQ85i0YfzUahJNCGhtVCUxPlsU0n/4U/\n 4q8Lh8sdiTDPJLhSCygIIZTmiPeSr8WRiMFyQ3dPlyiuDV4VngidmIEV5tVrtqp/+EaK\n qzZYInYXHSSbOH5/XUnePQiBPj1fsgZD65H32SEDeN2BLB7mpX612sBKkuH/oeichSja\n Vidj/Cx4yRf2LXBiDVxmqGqmRCFxt0wJYMLkHBHGiUsaFQbMap/Im5e48NGrFhIVXIdI\n zqSpSqcW54fxUuhQx/gl2ONsgu5A3yssY24XNg70fpVYrrjYzW7FiYj2L6sVZ+T2EjQf\n BAhw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774477510; x=1775082310;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=vuW5sLTiKxq7YEOgHMwefJJjjQ4qMT3eT5TQuGfdXOs=;\n b=SqF7GZ+QezBxKi/imdDjC0a1oa32KSLNjxFQnCi1V87h4j/nmQ6rkTg5WwludWh5OH\n m76Ld73+vwOSS1xGad7g6Gljlj4O7rSmywrJx3xF0OtkeGw2CcmZekp+9KVot7wqstDz\n eHxOVAE0CbqVcHqV6yVhrp5SmYaWedCsWLbtlbFq5oTzRpTjKCi4vf0zTP9V5xX/2mQ9\n oeoBqAC46/yHMmbAgybAJhzP7oOzfunaGWML0STcjRy+XTjCgwDNq3NSqnmDGrNQ9Sp7\n edeJaedoQKaBalza7pzTAlspy8WiRGCxj4d09dbscUtvtzRl6xPpsKizpzziCCaQ3SuS\n nKEg==","X-Gm-Message-State":"AOJu0YwShiYM5kjLMll5AG9vPKT/NayQXHeSZO/1FXpayYm6bmrnLiRt\n aBjPiWe75yT+v9P1fBPmqCcJRpbAi7M+Kx0X+G2ILBEhDOwnNkSHtyeYyqsgqgYuC3Jcf4j6WnG\n 8LRsr3Kgy54tHZ3zW9Aa56GIWDN/+UUQKgDdm","X-Gm-Gg":"ATEYQzxLTdcszcvOpO1dpTG+HT75q9JMt4/ZC8vew+daGul4M09fsZcnSffHLOEZQbF\n EyDK1cxykoLUtO3pkQ5BFlCyfDdjgkiC0WuGZJAMSmFF+Q4DPopJi1zKeLym512HLXENBt5huAE\n +jv2Ui3AiI6kouRNxreNHr0GbRo3PhbZ5/OtRVa9Ywjpiimr6fSJC+QbJvgTEWPeIsDwV6yHGrh\n uPn7kdYER3+HuBeJbYt4im492X4UIMarIUq7DY3NLxzLPaTQjy/8v3sUF2GUoDPtwwYveiXc7V/\n GYe4cnSI","X-Received":"by 2002:a17:90b:1dcd:b0:34c:c514:ee1f with SMTP id\n 98e67ed59e1d1-35c0dcf1a05mr4770966a91.11.1774477509835; Wed, 25 Mar 2026\n 15:25:09 -0700 (PDT)","MIME-Version":"1.0","References":"<20260218180907.902116-2-sajan.karumanchi@amd.com>\n <20260324191707.3676629-1-sajan.karumanchi@amd.com>\n <20260324191707.3676629-2-sajan.karumanchi@amd.com>","In-Reply-To":"<20260324191707.3676629-2-sajan.karumanchi@amd.com>","From":"\"H.J. Lu\" <hjl.tools@gmail.com>","Date":"Wed, 25 Mar 2026 15:24:33 -0700","X-Gm-Features":"AaiRm53Jr29ThqTboQWAuvBYYwF8WG4APNThSAo-tAsdcTAAP9_QRv_lFeIg82Y","Message-ID":"\n <CAMe9rOqtEi3YMp--jtjRBt7H1GLM0XBU2OACLyCk9Mh+DHOYdg@mail.gmail.com>","Subject":"Re: [PATCH v2 1/1] x86_64: Prefer EVEX512 code-path on AMD Zen5 CPUs","To":"Sajan Karumanchi <sajan.karumanchi@gmail.com>","Cc":"libc-alpha@sourceware.org, sajan.karumanchi@amd.com, fweimer@redhat.com,\n goldstein.w.n@gmail.com,\n Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"libc-alpha@sourceware.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Libc-alpha mailing list <libc-alpha.sourceware.org>","List-Unsubscribe":"<https://sourceware.org/mailman/options/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe>","List-Archive":"<https://sourceware.org/pipermail/libc-alpha/>","List-Post":"<mailto:libc-alpha@sourceware.org>","List-Help":"<mailto:libc-alpha-request@sourceware.org?subject=help>","List-Subscribe":"<https://sourceware.org/mailman/listinfo/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>","Errors-To":"libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org"}}]