https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98894
--- Comment #1 from Matthias Kretz (Vir) <kretz at kde dot org> --- I already posted a fix on the gcc-patches and libstdc++ lists: libstdc++-v3/ChangeLog: * include/experimental/bits/simd.h: Remove unnecessary static assertion. Allow sizeof(8) integer __intrinsic_type to enable the necessary mask type. --- libstdc++-v3/include/experimental/bits/simd.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/ include/experimental/bits/simd.h index 64cf8d32328..9685df0be9e 100644 --- a/libstdc++-v3/include/experimental/bits/simd.h +++ b/libstdc++-v3/include/experimental/bits/simd.h @@ -2292,12 +2292,6 @@ template <typename _Tp, size_t _Bytes> #ifndef __VSX__ static_assert(!is_same_v<_Tp, double>, "no __intrinsic_type support for double on PPC w/o VSX"); -#endif -#ifndef __POWER8_VECTOR__ - static_assert( - !(is_integral_v<_Tp> && sizeof(_Tp) > 4), - "no __intrinsic_type support for integers larger than 4 Bytes " - "on PPC w/o POWER8 vectors"); #endif using type = typename __intrinsic_type_impl< That was a thinko: the fact that a certain set of instructions doesn't exist on POWER7 doesn't imply that the type isn't usable. The static_assert was simply wrong.