[committed] libstdc++: Fix condition for supported SIMD types on ARMv8
Checks
Commit Message
pushed to trunk, will backport
tested on arm-linux-gnueabihf
---------- 8< ----------
Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:
PR libstdc++/110050
* include/experimental/bits/simd.h (__vectorized_sizeof): With
__have_neon_a32 only single-precision float works (in addition
to integers).
---
libstdc++-v3/include/experimental/bits/simd.h | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--
──────────────────────────────────────────────────────────────────────────
Dr. Matthias Kretz https://mattkretz.github.io
GSI Helmholtz Centre for Heavy Ion Research https://gsi.de
stdₓ::simd
──────────────────────────────────────────────────────────────────────────
@@ -2808,8 +2808,10 @@ __vectorized_sizeof()
return 16;
// ARM:
- if constexpr (__have_neon_a64
- || (__have_neon_a32 && !is_same_v<_Tp, double>) )
+ if constexpr (__have_neon_a64)
+ return 16;
+ if constexpr (__have_neon_a32 and (not is_floating_point_v<_Tp>
+ or is_same_v<_Tp, float>))
return 16;
if constexpr (__have_neon
&& sizeof(_Tp) < 8