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.

Reply via email to