[{"id":3680282,"web_url":"http://patchwork.ozlabs.org/comment/3680282/","msgid":"<12114165.NyiUUSuA9g@vir-laptop>","list_archive_url":null,"date":"2026-04-22T07:07:16","subject":"Re: [PATCH v2] libstdc++: simd: x86: accept 64-bit long double as\n double [PR124657]","submitter":{"id":92625,"url":"http://patchwork.ozlabs.org/api/people/92625/","name":"Matthias Kretz","email":"MatthiasKretz@gmx.net"},"content":"OK from my side.\n\n> Jonathan, should I credit you for the preprocessor micro-optimization?\n> I didn't quite follow it to the letter, because I thought it looked\n> cleaner this way, and IIUC it would not bring any notable inefficiency.\n\nsee below\n\nAlexandre Oliva [Wednesday, 22 April 2026, 08:20:28 CEST]:\n> diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h\n> b/libstdc++-v3/include/experimental/bits/simd_x86.h index\n> 74c7a61998e0d..5d4ed5ad58c8e 100644\n> --- a/libstdc++-v3/include/experimental/bits/simd_x86.h\n> +++ b/libstdc++-v3/include/experimental/bits/simd_x86.h\n> @@ -415,13 +415,31 @@ template <size_t _Np, typename _Tp, typename _Kp>\n>  #endif\n> \n>  // ISA & type detection {{{\n> +template <typename _Tp>\n> +  constexpr bool\n> +  __is_x86_ps()\n> +  {\n> +    return is_same_v<_Tp, float>;\n> +  }\n> +\n> +template <typename _Tp>\n> +  constexpr bool\n> +  __is_x86_pd()\n> +  {\n> +#if __LDBL_MANT_DIG == __DBL_MANT_DIG\n> +    if constexpr (is_same_v<_Tp, long double>)\n> +      return true;\n> +#endif\n> +    return is_same_v<_Tp, double>;\n> +  }\n\nI believe Jonathan's approach would not instantiate is_same_v<_Tp, long \ndouble> for __is_x86_pd<double>(). Yours always instantiates both is_same_v \ntemplates for any _Tp.\nHowever, this is certainly fine for the usual case (where long double is not \n64 bits). And by now I doubt there's any measurable difference with -mlong-\ndouble-64 even between this and what Jonathan suggested. (because there are \nvery few instantiations of __is_x86_pd anyway and is_same_v will surely get \ninstantiated somewhere already.)\n\n- Matthias","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=gmx.net header.i=matthiaskretz@gmx.net header.a=rsa-sha256\n header.s=s31663417 header.b=PPTHbKbN;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n secure) header.d=gmx.net header.i=matthiaskretz@gmx.net header.a=rsa-sha256\n header.s=s31663417 header.b=PPTHbKbN","sourceware.org;\n dmarc=pass (p=quarantine dis=none) header.from=gmx.net","sourceware.org; spf=pass smtp.mailfrom=gmx.net","server2.sourceware.org;\n arc=none smtp.remote-ip=212.227.17.22"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.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 4g0rzy3skfz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 17:52:45 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 26A3E4BA23DF\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 07:52:43 +0000 (GMT)","from mout.gmx.net (mout.gmx.net [212.227.17.22])\n by sourceware.org (Postfix) with ESMTPS id 5497B4BA23D1;\n Wed, 22 Apr 2026 07:52:09 +0000 (GMT)","from client.hidden.invalid by mail.gmx.net (mrgmx104\n [212.227.17.168]) with ESMTPSA (Nemesis) id 1M26vB-1wDWZS01Or-00FzV2; Wed, 22\n Apr 2026 09:52:07 +0200"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 26A3E4BA23DF","OpenDKIM Filter v2.11.0 sourceware.org 5497B4BA23D1"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 5497B4BA23D1","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 5497B4BA23D1","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776844329; cv=none;\n b=PHbD3nJGwCq+GMkb6LohE+gi7tgF4qLT/Y5c5UxOzDzrttkUlbbv3jKyAdGDZB+e37C/hCtyzVrPjYCichhyC8+vPv+i1y+ZdkSKu3DtwWlmuHHOlWWSZKdQ9bpKUlYXbE4HHHOZI69s8BX6WNMOTSd/Hhw2DXrsGGW2ocB7cLM=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776844329; c=relaxed/simple;\n bh=wzhRJvRjeMJxEtiIbG8SuB5X1ILC2xiZfgPEyWDVRrU=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=C6iYGyggDs8UDHRcP69DOquiScEsRIoYVSNBZSSlxVOWQY9St6Srv2ReiNFAX2Q/YGch69qeTeTIt9F+T8pznvAcYeOaMh4KQTxZhxX3XjHbKML0ZcuwGheoV3QyzmwJAVvMNuMltkt6iO+3kfTH+HJ8DLKbi1c1PLKg4uzSFP8=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net;\n s=s31663417; t=1776844327; x=1777449127; i=matthiaskretz@gmx.net;\n bh=wzhRJvRjeMJxEtiIbG8SuB5X1ILC2xiZfgPEyWDVRrU=;\n h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To:\n References:MIME-Version:Content-Transfer-Encoding:Content-Type:cc:\n content-transfer-encoding:content-type:date:from:message-id:\n mime-version:reply-to:subject:to;\n b=PPTHbKbNEGJ8i/rZwh2eEi54GSRO+WunCNOyTF83QPCh6GC70DwdM68MFBJVfVqC\n mv0E4qnOJNbRbQYQJZ2QpIMwGSv+uR0OCDTupME3KPeIz5hEp8laYUN5fGLuiTxWv\n bCn/6Y8yhvEJsXSXDbzGDcySSr5l2imGBpwVqP1UYKjtwfdmDiu9rgxO9b+Gj+v/n\n qgjEU7x0aU7bp5hgjSAntTy8Db85Rv0MrSWMznhFK67tPGQaprhkBWI8Dwo8UFQY4\n zkmbpeK7EEgFsFxE8kO/4bhXFQczK5UD3xzaaGCKNj1cQnoC/SmPdHvBXyjblxnW+\n u785Qi79QccibaFPYA==","X-UI-Sender-Class":"724b4f7f-cbec-4199-ad4e-598c01a50d3a","From":"Matthias Kretz <MatthiasKretz@gmx.net>","To":"gcc-patches@gcc.gnu.org, Alexandre Oliva <oliva@adacore.com>","Cc":"Jonathan Wakely <jwakely@redhat.com>, libstdc++@gcc.gnu.org,\n Jonathan Wakely <jwakely.gcc@gmail.com>","Subject":"Re: [PATCH v2] libstdc++: simd: x86: accept 64-bit long double as\n double [PR124657]","Date":"Wed, 22 Apr 2026 09:07:16 +0200","Message-ID":"<12114165.NyiUUSuA9g@vir-laptop>","Organization":"GSI Helmholtz Center for Heavy Ion Research","In-Reply-To":"<or1pg7tt1v.fsf_-_@lxoliva.fsfla.org>","References":"<oro6kdd9ji.fsf@lxoliva.fsfla.org> <6807915.aeNJFYEL58@vir-laptop>\n <or1pg7tt1v.fsf_-_@lxoliva.fsfla.org>","MIME-Version":"1.0","Content-Transfer-Encoding":"base64","Content-Type":"text/plain; charset=\"utf-8\"","X-Provags-ID":"V03:K1:eMWgz+r7YsZoQGfPMAAUYVKottY5VLKaSdhCkiMhjZKQ2whpdsr\n 1RxXjV3yWT8ppGfR1HWCZUwb8cEsS6Xz8zhO0x5VYWFF4GKPAZE2vglgr3VLF+N34EZuJSp\n 8LlpNV8ARNXvXjWaGACp7bwKTAIYLmbCTsIDJgT85Oh8SowgZ0P5rawbxwwc2ZaYISoR0J/\n VI7RSYEBLV6oVzaDCun4A==","UI-OutboundReport":"notjunk:1;M01:P0:qZ9G7EPn90E=;CxzO5A9AP4m9MnOU2AkkDiQqWfY\n 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\n MkzeEQ==","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3680375,"web_url":"http://patchwork.ozlabs.org/comment/3680375/","msgid":"<CACb0b4k-moRKQduw-+HkJ+fd62gHUajbXq=6RLbekORfnUj0LA@mail.gmail.com>","list_archive_url":null,"date":"2026-04-22T09:26:38","subject":"Re: [PATCH v2] libstdc++: simd: x86: accept 64-bit long double as\n double [PR124657]","submitter":{"id":48004,"url":"http://patchwork.ozlabs.org/api/people/48004/","name":"Jonathan Wakely","email":"jwakely@redhat.com"},"content":"On Wed, 22 Apr 2026 at 07:20, Alexandre Oliva <oliva@adacore.com> wrote:\n>\n> On Apr 21, 2026, Matthias Kretz <MatthiasKretz@gmx.net> wrote:\n>\n> >> This would be ever so slightly more efficient as:\n>\n> >> because it wouldn't instantiate the is_same_v variable templates\n> >> unless required, and wouldn't care about long double for the common\n> >> case of 80-bit long double.\n> >>\n> >> But the patch seems reasonable to me. Matthias?\n>\n> > Yes. It looks like a clean solution to me. I like Jonathan's suggestion.\n> > std::experimental::simd is too expensive to compile already.\n>\n> Here's a patch that implements the suggested change, and that, along\n> with https://gcc.gnu.org/pipermail/gcc-patches/2026-April/712616.html\n> (Ping?) enables pr109261_constexpr_simd.cc to succeed with\n> -mlong-double-64 on x86_64 -msse.  Regstrapped on x86_64-linux-gnu and\n> powerpc64le-linux-gnu.  Ok for stage1?\n>\n> Jonathan, should I credit you for the preprocessor micro-optimization?\n\nNo need.\n\n> I didn't quite follow it to the letter, because I thought it looked\n> cleaner this way, and IIUC it would not bring any notable inefficiency.\n\nYour version always instantiates both variable templates, even if the\nfirst one is true, but that only affects the -mlong-double-64 case\nwhich I don't care about micro-optimizing :-)\n\nOK for stage 1, thanks.\n\n>\n>\n> Various simd_x86 functions that handle double need to be adjusted to\n> match 64-bit long double as well.\n>\n> Introduce __is_x86_ps<_Tp>() and __is_x86_pd<_Tp>() and use them\n> instead of is_same_v<_Tp, float> and is_same_v<_Tp, double>,\n> respectively.\n>\n>\n> for  libstdc++-v3/ChangeLog\n>\n>         PR libstdc++/124657\n>         * include/experimental/bits/simd_x86.h\n>         (__is_x86_ps<_Tp>): New.  Replace is_same_v<_Tp, float> with it.\n>         (__is_x86_pd<_Tp>): New.  Replace is_same_v<_Tp, double> with it.\n> ---\n>  libstdc++-v3/include/experimental/bits/simd_x86.h |   82 +++++++++++++--------\n>  1 file changed, 50 insertions(+), 32 deletions(-)\n>\n> diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h b/libstdc++-v3/include/experimental/bits/simd_x86.h\n> index 74c7a61998e0d..5d4ed5ad58c8e 100644\n> --- a/libstdc++-v3/include/experimental/bits/simd_x86.h\n> +++ b/libstdc++-v3/include/experimental/bits/simd_x86.h\n> @@ -415,13 +415,31 @@ template <size_t _Np, typename _Tp, typename _Kp>\n>  #endif\n>\n>  // ISA & type detection {{{\n> +template <typename _Tp>\n> +  constexpr bool\n> +  __is_x86_ps()\n> +  {\n> +    return is_same_v<_Tp, float>;\n> +  }\n> +\n> +template <typename _Tp>\n> +  constexpr bool\n> +  __is_x86_pd()\n> +  {\n> +#if __LDBL_MANT_DIG == __DBL_MANT_DIG\n> +    if constexpr (is_same_v<_Tp, long double>)\n> +      return true;\n> +#endif\n> +    return is_same_v<_Tp, double>;\n> +  }\n> +\n>  template <typename _Tp, size_t _Np>\n>    constexpr bool\n>    __is_sse_ps()\n>    {\n>      return __have_sse\n> -          && is_same_v<_Tp,\n> -                       float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;\n> +          && __is_x86_ps<_Tp>()\n> +          && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;\n>    }\n>\n>  template <typename _Tp, size_t _Np>\n> @@ -429,8 +447,8 @@ template <typename _Tp, size_t _Np>\n>    __is_sse_pd()\n>    {\n>      return __have_sse2\n> -          && is_same_v<_Tp,\n> -                       double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;\n> +          && __is_x86_pd<_Tp>()\n> +          && sizeof(__intrinsic_type_t<_Tp, _Np>) == 16;\n>    }\n>\n>  template <typename _Tp, size_t _Np>\n> @@ -438,8 +456,8 @@ template <typename _Tp, size_t _Np>\n>    __is_avx_ps()\n>    {\n>      return __have_avx\n> -          && is_same_v<_Tp,\n> -                       float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;\n> +          && __is_x86_ps<_Tp>()\n> +          && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;\n>    }\n>\n>  template <typename _Tp, size_t _Np>\n> @@ -447,8 +465,8 @@ template <typename _Tp, size_t _Np>\n>    __is_avx_pd()\n>    {\n>      return __have_avx\n> -          && is_same_v<_Tp,\n> -                       double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;\n> +          && __is_x86_pd<_Tp>()\n> +          && sizeof(__intrinsic_type_t<_Tp, _Np>) == 32;\n>    }\n>\n>  template <typename _Tp, size_t _Np>\n> @@ -456,8 +474,8 @@ template <typename _Tp, size_t _Np>\n>    __is_avx512_ps()\n>    {\n>      return __have_avx512f\n> -          && is_same_v<_Tp,\n> -                       float> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;\n> +          && __is_x86_ps<_Tp>()\n> +          && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;\n>    }\n>\n>  template <typename _Tp, size_t _Np>\n> @@ -465,8 +483,8 @@ template <typename _Tp, size_t _Np>\n>    __is_avx512_pd()\n>    {\n>      return __have_avx512f\n> -          && is_same_v<_Tp,\n> -                       double> && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;\n> +          && __is_x86_pd<_Tp>()\n> +          && sizeof(__intrinsic_type_t<_Tp, _Np>) == 64;\n>    }\n>\n>  // }}}\n> @@ -2397,9 +2415,9 @@ template <typename _Abi, typename>\n>             [[maybe_unused]] const auto __yi = __to_intrin(__y);\n>             if constexpr (sizeof(__xi) == 64)\n>               {\n> -               if constexpr (is_same_v<_Tp, float>)\n> +               if constexpr (__is_x86_ps<_Tp> ())\n>                   return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);\n> -               else if constexpr (is_same_v<_Tp, double>)\n> +               else if constexpr (__is_x86_pd<_Tp> ())\n>                   return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);\n>                 else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)\n>                   return _mm512_mask_cmplt_epi8_mask(__k1, __xi, __yi);\n> @@ -2422,9 +2440,9 @@ template <typename _Abi, typename>\n>               }\n>             else if constexpr (sizeof(__xi) == 32)\n>               {\n> -               if constexpr (is_same_v<_Tp, float>)\n> +               if constexpr (__is_x86_ps<_Tp> ())\n>                   return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);\n> -               else if constexpr (is_same_v<_Tp, double>)\n> +               else if constexpr (__is_x86_pd<_Tp> ())\n>                   return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);\n>                 else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)\n>                   return _mm256_mask_cmplt_epi8_mask(__k1, __xi, __yi);\n> @@ -2447,9 +2465,9 @@ template <typename _Abi, typename>\n>               }\n>             else if constexpr (sizeof(__xi) == 16)\n>               {\n> -               if constexpr (is_same_v<_Tp, float>)\n> +               if constexpr (__is_x86_ps<_Tp> ())\n>                   return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LT_OS);\n> -               else if constexpr (is_same_v<_Tp, double>)\n> +               else if constexpr (__is_x86_pd<_Tp> ())\n>                   return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LT_OS);\n>                 else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)\n>                   return _mm_mask_cmplt_epi8_mask(__k1, __xi, __yi);\n> @@ -2505,9 +2523,9 @@ template <typename _Abi, typename>\n>             [[maybe_unused]] const auto __yi = __to_intrin(__y);\n>             if constexpr (sizeof(__xi) == 64)\n>               {\n> -               if constexpr (is_same_v<_Tp, float>)\n> +               if constexpr (__is_x86_ps<_Tp> ())\n>                   return _mm512_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);\n> -               else if constexpr (is_same_v<_Tp, double>)\n> +               else if constexpr (__is_x86_pd<_Tp> ())\n>                   return _mm512_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);\n>                 else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)\n>                   return _mm512_mask_cmple_epi8_mask(__k1, __xi, __yi);\n> @@ -2530,9 +2548,9 @@ template <typename _Abi, typename>\n>               }\n>             else if constexpr (sizeof(__xi) == 32)\n>               {\n> -               if constexpr (is_same_v<_Tp, float>)\n> +               if constexpr (__is_x86_ps<_Tp> ())\n>                   return _mm256_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);\n> -               else if constexpr (is_same_v<_Tp, double>)\n> +               else if constexpr (__is_x86_pd<_Tp> ())\n>                   return _mm256_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);\n>                 else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)\n>                   return _mm256_mask_cmple_epi8_mask(__k1, __xi, __yi);\n> @@ -2555,9 +2573,9 @@ template <typename _Abi, typename>\n>               }\n>             else if constexpr (sizeof(__xi) == 16)\n>               {\n> -               if constexpr (is_same_v<_Tp, float>)\n> +               if constexpr (__is_x86_ps<_Tp> ())\n>                   return _mm_mask_cmp_ps_mask(__k1, __xi, __yi, _CMP_LE_OS);\n> -               else if constexpr (is_same_v<_Tp, double>)\n> +               else if constexpr (__is_x86_pd<_Tp> ())\n>                   return _mm_mask_cmp_pd_mask(__k1, __xi, __yi, _CMP_LE_OS);\n>                 else if constexpr (is_signed_v<_Tp> && sizeof(_Tp) == 1)\n>                   return _mm_mask_cmple_epi8_mask(__k1, __xi, __yi);\n> @@ -5021,10 +5039,10 @@ template <typename _Abi, typename>\n>                   = _Abi::template _S_implicit_mask_intrin<_Tp>();\n>                 return 0 != __testc(__a, __b);\n>               }\n> -           else if constexpr (is_same_v<_Tp, float>)\n> +           else if constexpr (__is_x86_ps<_Tp> ())\n>               return (_mm_movemask_ps(__a) & ((1 << _Np) - 1))\n>                      == (1 << _Np) - 1;\n> -           else if constexpr (is_same_v<_Tp, double>)\n> +           else if constexpr (__is_x86_pd<_Tp> ())\n>               return (_mm_movemask_pd(__a) & ((1 << _Np) - 1))\n>                      == (1 << _Np) - 1;\n>             else\n> @@ -5084,9 +5102,9 @@ template <typename _Abi, typename>\n>                 else\n>                   return 0 == __testz(__a, __a);\n>               }\n> -           else if constexpr (is_same_v<_Tp, float>)\n> +           else if constexpr (__is_x86_ps<_Tp> ())\n>               return (_mm_movemask_ps(__a) & ((1 << _Np) - 1)) != 0;\n> -           else if constexpr (is_same_v<_Tp, double>)\n> +           else if constexpr (__is_x86_pd<_Tp> ())\n>               return (_mm_movemask_pd(__a) & ((1 << _Np) - 1)) != 0;\n>             else\n>               return (_mm_movemask_epi8(__a) & ((1 << (_Np * sizeof(_Tp))) - 1))\n> @@ -5120,9 +5138,9 @@ template <typename _Abi, typename>\n>                 else\n>                   return 0 != __testz(__a, __a);\n>               }\n> -           else if constexpr (is_same_v<_Tp, float>)\n> +           else if constexpr (__is_x86_ps<_Tp> ())\n>               return (__movemask(__a) & ((1 << _Np) - 1)) == 0;\n> -           else if constexpr (is_same_v<_Tp, double>)\n> +           else if constexpr (__is_x86_pd<_Tp> ())\n>               return (__movemask(__a) & ((1 << _Np) - 1)) == 0;\n>             else\n>               return (__movemask(__a) & int((1ull << (_Np * sizeof(_Tp))) - 1))\n> @@ -5150,13 +5168,13 @@ template <typename _Abi, typename>\n>                   = _Abi::template _S_implicit_mask_intrin<_Tp>();\n>                 return 0 != __testnzc(__a, __b);\n>               }\n> -           else if constexpr (is_same_v<_Tp, float>)\n> +           else if constexpr (__is_x86_ps<_Tp> ())\n>               {\n>                 constexpr int __allbits = (1 << _Np) - 1;\n>                 const auto __tmp = _mm_movemask_ps(__a) & __allbits;\n>                 return __tmp > 0 && __tmp < __allbits;\n>               }\n> -           else if constexpr (is_same_v<_Tp, double>)\n> +           else if constexpr (__is_x86_pd<_Tp> ())\n>               {\n>                 constexpr int __allbits = (1 << _Np) - 1;\n>                 const auto __tmp = _mm_movemask_pd(__a) & __allbits;\n>\n> --\n> Alexandre Oliva, happy hacker            https://blog.lx.oliva.nom.br/\n> Free Software Activist     FSFLA co-founder     GNU Toolchain Engineer\n> More tolerance and less prejudice are key for inclusion and diversity.\n> Excluding neuro-others for not behaving \"\"normal\"\" is *not* inclusive!\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=AnyC+K8z;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=AnyC+K8z","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124"],"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 4g0v5l0FRCz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 19:27:53 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 52EB64BAD16F\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 09:27:51 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id 828264BAD150\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 09:26:57 +0000 (GMT)","from mail-yx1-f70.google.com (mail-yx1-f70.google.com\n [74.125.224.70]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-499-voyG2xQLNIWQeH8gia1EBw-1; Wed, 22 Apr 2026 05:26:55 -0400","by mail-yx1-f70.google.com with SMTP id\n 956f58d0204a3-652ddb428beso10103917d50.2\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 02:26:55 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 52EB64BAD16F","OpenDKIM Filter v2.11.0 sourceware.org 828264BAD150"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 828264BAD150","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 828264BAD150","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776850017; cv=none;\n b=pYcIq8ky07C1De3PSbfgkWK+7uaG0QC10FDGd8NTo4T+TgXJD/qzump3G4k2+PMzY1L3dyVpeKZ1QxJgmW7W1jvg/xwVtxcfqMnit87RBYGEUj3IrScn6jRJxHkdQB2qxGY8A0LT0c30/H3eStl8gspdGV3W259ToNXFzzHZjBY=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776850017; c=relaxed/simple;\n bh=MeQjZTqB9S7g/7WjPoCPOH/qbb33aJdWF1x9ozznFCI=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=jLMZQKvFktYP5xmwKIZvAb0kcfUtoX68H60T0evoanMLbo8AZgNCMsKapZQqY+LK4/OY+CKJm3y1CflxQ81cC7L1VaxLTQmL/ulFkPoIIb/i+89lntqZCwvvRJk+C9jMo8Zs572FH+Xe0JPPOpS5K4Hp4sRWmawPBQYRBAUTPgA=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776850016;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=TBeJwa2HpwnUPGkxl/vwj/z0QFyYFrWROmxs/creQDA=;\n b=AnyC+K8z/AhV4uVoC2L2SmcXCxGy2hXtCtgclddw8j7O1W+9VZxQFPIJ8ooiqQq/cH14a9\n /p31pruYUKW3mu4b/xRpGCuAd1/W1Lq0HI56YXgek1MApOIQiREWSTDqAKAw9rJZg0HPlp\n ZQnBK9d6NPV//mxWi+XF0pCzrAzUioo=","X-MC-Unique":"voyG2xQLNIWQeH8gia1EBw-1","X-Mimecast-MFC-AGG-ID":"voyG2xQLNIWQeH8gia1EBw_1776850015","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776850015; x=1777454815;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=TBeJwa2HpwnUPGkxl/vwj/z0QFyYFrWROmxs/creQDA=;\n b=OyrBhDvJcxuXbwhzpWeNDyr3afRVwtdisty2CgotSCEIN6sL1OSS6J9W20ziVmVE1T\n FOP2utR+/Xq9zd6YGUr8cIU0Tt1BwHK/7gRehlkH4usp1H16LI/1EbQ/SJchyc42w/mL\n l/eYT0xYXaH+a1f5vyiHk+8Z9r/Z5xM3yWAf1KtnrfIALRTzsYuJlRnvVJMx033lwicB\n vBwYbd1oI49Rd+nUQtmWJPCV5bJOyIu0Hal8PIYI721+685x4sD4I5Hzvo+dPd46J817\n GSykQeoI3+482CUoMPYBrtb80KgKoYu05TVZ2UrR2DdNQgKQIMlsMqnMphFO5zqZmUgj\n gLSQ==","X-Forwarded-Encrypted":"i=1;\n AFNElJ/t/O9rY7qlSLel0Sq4sfMzt5G3QFqc/Tw6N6OGr2rGtYcMT+ARMAs3QDvAAXyGyWxHA8eKPjpwrIWlmg==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YyTUnlNZlfKGR7vLOwzvTVpfFhOTv/pc2HUZC9jHBt/kRXNgIn5\n 3xS8tHjS9SHsXWM2WOVinDmcT2SVkXF3VpnLvce5/ydpt3cfW9u/a0r16vHnAyhZerm+3Dp2VpT\n zNbblJlEsrXxJ0OwMKmpivD/qPAbgGAL2pSK3yPS4lyBBumDuFzsAg2XtiZPX5P5ZyA2s9JS857\n ySnQE//140OYv/jwexKgjlZDgt0lmJS9p4Zg==","X-Gm-Gg":"AeBDievN82hZrEVuZuqVNtEv0eFx5/FigX9ZJO5doEJ5waU65gbJLoRHJ1dvlvChDHn\n Ub69wtPD0e5Fqpg1Z7N6fSuteMcxHSvrG8aY+nF58SVcBL1J2rKTNeCHpPrL7JGyrs/fjQZF4ZF\n cqI+ul9/Wz2YxUzw4vW4RESv5WNisL2iBLaQiLW1tv0QQ1d/NaiSZa5ah7Gwgx0xzR4FdmiQVmb\n fJ4RKkEEK7eXLkvPLuD0z6Bt9vzjeJJrUDFdXJ7Ggb8CfvdvL9K8fUQvIsFZlLB89IgTz/KDPfo\n QQ==","X-Received":["by 2002:a53:dd47:0:b0:651:c483:1d3c with SMTP id\n 956f58d0204a3-65310a6dba9mr15816542d50.44.1776850014931;\n Wed, 22 Apr 2026 02:26:54 -0700 (PDT)","by 2002:a53:dd47:0:b0:651:c483:1d3c with SMTP id\n 956f58d0204a3-65310a6dba9mr15816522d50.44.1776850014458; Wed, 22 Apr 2026\n 02:26:54 -0700 (PDT)"],"MIME-Version":"1.0","References":"<oro6kdd9ji.fsf@lxoliva.fsfla.org>\n <orzf2wuczy.fsf_-_@lxoliva.fsfla.org>\n <CACb0b4nhOnWAXk7Ox05sYvHfMJMCTfYhDo9pspLjR_uW_b-BrQ@mail.gmail.com>\n <6807915.aeNJFYEL58@vir-laptop> <or1pg7tt1v.fsf_-_@lxoliva.fsfla.org>","In-Reply-To":"<or1pg7tt1v.fsf_-_@lxoliva.fsfla.org>","From":"Jonathan Wakely <jwakely@redhat.com>","Date":"Wed, 22 Apr 2026 10:26:38 +0100","X-Gm-Features":"AQROBzAg8dXDENdEBgA8u_PgVTnTFCSZz2zrWoAG6GDDXyMeNAINriMDwbZeo5M","Message-ID":"\n <CACb0b4k-moRKQduw-+HkJ+fd62gHUajbXq=6RLbekORfnUj0LA@mail.gmail.com>","Subject":"Re: [PATCH v2] libstdc++: simd: x86: accept 64-bit long double as\n double [PR124657]","To":"Alexandre Oliva <oliva@adacore.com>","Cc":"Matthias Kretz <MatthiasKretz@gmx.net>, libstdc++@gcc.gnu.org,\n Jonathan Wakely <jwakely.gcc@gmail.com>,\n gcc-patches <gcc-patches@gcc.gnu.org>","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"0BJr2oakCgcrv4934ZMaUrbUsAQDJaA7WDqknkUrdoE_1776850015","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=\"UTF-8\"","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]