From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7857) id B1CC43858C5E; Wed, 24 May 2023 19:41:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B1CC43858C5E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1684957305; bh=3jC39zy3alXVOPeF4ubiVnkTUeyhg2/agcFK8ZMNMXo=; h=From:To:Subject:Date:From; b=qcYc6oXmUmd4JKQfL4keUZuzCyHvtilBNJKXt2TU+Lopv2OZVVCCb2zUdpHpWZ5mY RFbwIICNdfmWXxbVSNOX/PYIi/ghgdQu9iWNPFCj02qgLVWdQNEw9t9eGF++dwS5i4 kd08CBRqI30dDePunm6qu6tzDOlxf/GvEYBMkxec= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Matthias Kretz To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r12-9651] libstdc++: Fix SFINAE for __is_intrinsic_type on ARM X-Act-Checkin: gcc X-Git-Author: Matthias Kretz X-Git-Refname: refs/heads/releases/gcc-12 X-Git-Oldrev: 8be71168f7bbafa04f592a7524432351ffea71ba X-Git-Newrev: 2b502c3119c91fe3ba2313f0842a3bedd395bc91 Message-Id: <20230524194145.B1CC43858C5E@sourceware.org> Date: Wed, 24 May 2023 19:41:45 +0000 (GMT) List-Id: https://gcc.gnu.org/g:2b502c3119c91fe3ba2313f0842a3bedd395bc91 commit r12-9651-g2b502c3119c91fe3ba2313f0842a3bedd395bc91 Author: Matthias Kretz Date: Wed May 24 12:50:46 2023 +0200 libstdc++: Fix SFINAE for __is_intrinsic_type on ARM On ARM NEON doesn't support double, so __is_intrinsic_type_v should say false (instead of being ill-formed). Signed-off-by: Matthias Kretz libstdc++-v3/ChangeLog: PR libstdc++/109261 * include/experimental/bits/simd.h (__intrinsic_type): Specialize __intrinsic_type and __intrinsic_type in any case, but provide the member type only with __aarch64__. (cherry picked from commit aa8b363171a95b8f867a74f29c75f9577e9087e1) Diff: --- libstdc++-v3/include/experimental/bits/simd.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h index c8419156ece..ec142c91c04 100644 --- a/libstdc++-v3/include/experimental/bits/simd.h +++ b/libstdc++-v3/include/experimental/bits/simd.h @@ -2369,15 +2369,21 @@ template <> struct __intrinsic_type { using type = float32x4_t; }; -#if _GLIBCXX_SIMD_HAVE_NEON_A64 template <> struct __intrinsic_type - { using type = float64x1_t; }; + { +#if _GLIBCXX_SIMD_HAVE_NEON_A64 + using type = float64x1_t; +#endif + }; template <> struct __intrinsic_type - { using type = float64x2_t; }; + { +#if _GLIBCXX_SIMD_HAVE_NEON_A64 + using type = float64x2_t; #endif + }; #define _GLIBCXX_SIMD_ARM_INTRIN(_Bits, _Np) \ template <> \