libstdc++: Fix SFINAE for __is_intrinsic_type on ARM
On ARM NEON doesn't support double, so __is_intrinsic_type_v<double, whatever> should say false (instead of being ill-formed). Signed-off-by: Matthias Kretz <m.kretz@gsi.de> libstdc++-v3/ChangeLog: PR libstdc++/109261 * include/experimental/bits/simd.h (__intrinsic_type): Specialize __intrinsic_type<double, 8> and __intrinsic_type<double, 16> in any case, but provide the member type only with __aarch64__. (cherry picked from commit aa8b363171a95b8f867a74f29c75f9577e9087e1)
This commit is contained in:
parent
37abaffb93
commit
0f9f9c0f79
@ -2369,15 +2369,21 @@ template <>
|
||||
struct __intrinsic_type<float, 16, void>
|
||||
{ using type = float32x4_t; };
|
||||
|
||||
#if _GLIBCXX_SIMD_HAVE_NEON_A64
|
||||
template <>
|
||||
struct __intrinsic_type<double, 8, void>
|
||||
{ using type = float64x1_t; };
|
||||
{
|
||||
#if _GLIBCXX_SIMD_HAVE_NEON_A64
|
||||
using type = float64x1_t;
|
||||
#endif
|
||||
};
|
||||
|
||||
template <>
|
||||
struct __intrinsic_type<double, 16, void>
|
||||
{ using type = float64x2_t; };
|
||||
{
|
||||
#if _GLIBCXX_SIMD_HAVE_NEON_A64
|
||||
using type = float64x2_t;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define _GLIBCXX_SIMD_ARM_INTRIN(_Bits, _Np) \
|
||||
template <> \
|
||||
|
Loading…
x
Reference in New Issue
Block a user