/src/WasmEdge/include/experimental/simd/vec.hpp
Line | Count | Source |
1 | | // SPDX-License-Identifier: CC0-1.0 |
2 | | /// |
3 | | // simd - A C++17 implementation of a subset of the C++26 std::simd library |
4 | | // |
5 | | // To the extent possible under law, the author(s) have dedicated all |
6 | | // copyright and related and neighboring rights to this software to the |
7 | | // public domain worldwide. This software is distributed without any warranty. |
8 | | // |
9 | | // You should have received a copy of the CC0 Public Domain Dedication |
10 | | // along with this software. If not, see |
11 | | // <http://creativecommons.org/publicdomain/zero/1.0/>. |
12 | | /// |
13 | | |
14 | | #pragma once |
15 | | |
16 | | #include "experimental/simd/backend_array.hpp" |
17 | | #include "experimental/simd/backend_m128i.hpp" |
18 | | #include "experimental/simd/backend_vector_ext.hpp" |
19 | | #include "experimental/simd/detail.hpp" |
20 | | |
21 | | namespace cxx26 { |
22 | | namespace simd { |
23 | | namespace detail { |
24 | | |
25 | | // The operators that need integral lanes. basic_vec inherits them only for |
26 | | // integral lanes, so the operators do not exist for floating-point vectors. |
27 | | template <class V, class T, class Abi, bool = std::is_integral_v<T>> |
28 | | struct integral_operators {}; |
29 | | |
30 | | template <class V, class T, class Abi> |
31 | | struct integral_operators<V, T, Abi, true> { |
32 | | using backend = simd_backend<T, Abi>; |
33 | | |
34 | 0 | friend constexpr V operator~(const V &A) noexcept { |
35 | 0 | return access::make<V>(backend::bit_not(access::data(A))); |
36 | 0 | } Unexecuted instantiation: cxx26::simd::detail::operator~(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::detail::operator~(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::detail::operator~(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::detail::operator~(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) |
37 | | |
38 | | #define CXX26_SIMD_VEC_BINARY(OP, NAME) \ |
39 | 0 | friend constexpr V operator OP(const V &A, const V &B) noexcept { \ |
40 | 0 | return access::make<V>(backend::NAME(access::data(A), access::data(B))); \ |
41 | 0 | } \ Unexecuted instantiation: cxx26::simd::detail::operator&(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::detail::operator^(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::detail::operator|(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::detail::operator&(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::detail::operator|(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::detail::operator^(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::detail::operator|(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::detail::operator^(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::detail::operator&(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::detail::operator&(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::detail::operator|(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) |
42 | 0 | friend constexpr V &operator OP## = (V & A, const V &B) noexcept { \ |
43 | 0 | return A = A OP B; \ |
44 | 0 | } Unexecuted instantiation: cxx26::simd::detail::operator&=(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> >&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::detail::operator&=(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::detail::operator|=(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::detail::operator^=(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) |
45 | | CXX26_SIMD_VEC_BINARY(&, bit_and) |
46 | | CXX26_SIMD_VEC_BINARY(|, bit_or) |
47 | | CXX26_SIMD_VEC_BINARY(^, bit_xor) |
48 | | CXX26_SIMD_VEC_BINARY(<<, shl) |
49 | | CXX26_SIMD_VEC_BINARY(>>, shr) |
50 | | #undef CXX26_SIMD_VEC_BINARY |
51 | | |
52 | | #define CXX26_SIMD_VEC_SHIFT(OP, NAME) \ |
53 | 0 | friend constexpr V operator OP(const V &A, simd_size_type S) noexcept { \ |
54 | 0 | return access::make<V>(backend::NAME(access::data(A), S)); \ |
55 | 0 | } \ Unexecuted instantiation: cxx26::simd::detail::operator>>(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator<<(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator<<(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator<<(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>(cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator<<(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator<<(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator<<(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>(cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&, int) |
56 | 0 | friend constexpr V &operator OP## = (V & A, simd_size_type S) noexcept { \ |
57 | 0 | return A = A OP S; \ |
58 | 0 | } Unexecuted instantiation: cxx26::simd::detail::operator<<=(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>=(cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>=(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator<<=(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>=(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>=(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator<<=(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>=(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>=(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator<<=(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>=(cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> >&, int) Unexecuted instantiation: cxx26::simd::detail::operator>>=(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >&, int) |
59 | | CXX26_SIMD_VEC_SHIFT(<<, shl) |
60 | | CXX26_SIMD_VEC_SHIFT(>>, shr) |
61 | | #undef CXX26_SIMD_VEC_SHIFT |
62 | | }; |
63 | | |
64 | | } // namespace detail |
65 | | |
66 | | template <class T, class Abi> |
67 | | class basic_vec : public detail::integral_operators<basic_vec<T, Abi>, T, Abi> { |
68 | | static constexpr simd_size_type N = detail::abi_size_v<Abi>; |
69 | | using backend = detail::simd_backend<T, Abi>; |
70 | | using storage_type = typename backend::storage_type; |
71 | | |
72 | | public: |
73 | | using value_type = T; |
74 | | using mask_type = basic_mask<sizeof(T), Abi>; |
75 | | using abi_type = Abi; |
76 | | |
77 | | static constexpr std::integral_constant<simd_size_type, N> size{}; |
78 | | |
79 | | constexpr basic_vec() noexcept = default; |
80 | | |
81 | | template <class U, |
82 | | std::enable_if_t<std::is_arithmetic_v<detail::remove_cvref_t<U>> && |
83 | | detail::is_value_preserving_v< |
84 | | detail::remove_cvref_t<U>, value_type>, |
85 | | int> = 0> |
86 | | constexpr basic_vec(U &&Value) noexcept |
87 | 0 | : Data(backend::broadcast(static_cast<value_type>(Value))) {}Unexecuted instantiation: _ZN5cxx264simd9basic_vecIhNS0_6detail14vector_ext_abiILi16EEEEC2IRKhTnNSt3__19enable_ifIXaasr3stdE15is_arithmetic_vIu11__remove_cvIu20__remove_reference_tIT_EEEsr6detailE21is_value_preserving_vISD_hEEiE4typeELi0EEEOSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecItNS0_6detail14vector_ext_abiILi8EEEEC2IRKtTnNSt3__19enable_ifIXaasr3stdE15is_arithmetic_vIu11__remove_cvIu20__remove_reference_tIT_EEEsr6detailE21is_value_preserving_vISD_tEEiE4typeELi0EEEOSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIjNS0_6detail14vector_ext_abiILi4EEEEC2IRKjTnNSt3__19enable_ifIXaasr3stdE15is_arithmetic_vIu11__remove_cvIu20__remove_reference_tIT_EEEsr6detailE21is_value_preserving_vISD_jEEiE4typeELi0EEEOSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecImNS0_6detail14vector_ext_abiILi2EEEEC2IRKmTnNSt3__19enable_ifIXaasr3stdE15is_arithmetic_vIu11__remove_cvIu20__remove_reference_tIT_EEEsr6detailE21is_value_preserving_vISD_mEEiE4typeELi0EEEOSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIhNS0_6detail14vector_ext_abiILi16EEEEC2IhTnNSt3__19enable_ifIXaasr3stdE15is_arithmetic_vIu11__remove_cvIu20__remove_reference_tIT_EEEsr6detailE21is_value_preserving_vISB_hEEiE4typeELi0EEEOS9_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIfNS0_6detail14vector_ext_abiILi4EEEEC2IRKfTnNSt3__19enable_ifIXaasr3stdE15is_arithmetic_vIu11__remove_cvIu20__remove_reference_tIT_EEEsr6detailE21is_value_preserving_vISD_fEEiE4typeELi0EEEOSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIdNS0_6detail14vector_ext_abiILi2EEEEC2IRKdTnNSt3__19enable_ifIXaasr3stdE15is_arithmetic_vIu11__remove_cvIu20__remove_reference_tIT_EEEsr6detailE21is_value_preserving_vISD_dEEiE4typeELi0EEEOSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecItNS0_6detail14vector_ext_abiILi8EEEEC2ItTnNSt3__19enable_ifIXaasr3stdE15is_arithmetic_vIu11__remove_cvIu20__remove_reference_tIT_EEEsr6detailE21is_value_preserving_vISB_tEEiE4typeELi0EEEOS9_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIiNS0_6detail14vector_ext_abiILi8EEEEC2IiTnNSt3__19enable_ifIXaasr3stdE15is_arithmetic_vIu11__remove_cvIu20__remove_reference_tIT_EEEsr6detailE21is_value_preserving_vISB_iEEiE4typeELi0EEEOS9_ |
88 | | |
89 | | // C++26 makes this broadcast implicit. Keeping it explicit leaves one |
90 | | // implicit conversion from a class type that converts to the lane type, so |
91 | | // a variant of scalars and vectors still picks the scalar. |
92 | | template <class U, |
93 | | std::enable_if_t<!std::is_arithmetic_v<detail::remove_cvref_t<U>> && |
94 | | std::is_convertible_v<U, value_type> && |
95 | | !detail::is_generator_v<U, value_type, N>, |
96 | | int> = 0> |
97 | | constexpr explicit basic_vec(U &&Value) noexcept |
98 | | : Data(backend::broadcast(static_cast<value_type>(Value))) {} |
99 | | |
100 | | template <class U, class UAbi, |
101 | | std::enable_if_t<!std::is_same_v<basic_vec<U, UAbi>, basic_vec> && |
102 | | detail::abi_size_v<UAbi> == N && |
103 | | detail::is_value_preserving_v<U, value_type>, |
104 | | int> = 0> |
105 | | constexpr basic_vec(const basic_vec<U, UAbi> &Other) noexcept |
106 | 0 | : Data(convert_from(Other)) {}Unexecuted instantiation: _ZN5cxx264simd9basic_vecIsNS0_6detail14vector_ext_abiILi8EEEEC2IaS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEsr6detailE21is_value_preserving_vIS9_sEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecItNS0_6detail14vector_ext_abiILi8EEEEC2IhS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEsr6detailE21is_value_preserving_vIS9_tEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIiNS0_6detail14vector_ext_abiILi4EEEEC2IsS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEsr6detailE21is_value_preserving_vIS9_iEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIjNS0_6detail14vector_ext_abiILi4EEEEC2ItS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEsr6detailE21is_value_preserving_vIS9_jEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIlNS0_6detail14vector_ext_abiILi2EEEEC2IiS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEsr6detailE21is_value_preserving_vIS9_lEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecImNS0_6detail14vector_ext_abiILi2EEEEC2IjS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEsr6detailE21is_value_preserving_vIS9_mEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIdNS0_6detail14vector_ext_abiILi2EEEEC2IiS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEsr6detailE21is_value_preserving_vIS9_dEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIdNS0_6detail14vector_ext_abiILi2EEEEC2IjS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEsr6detailE21is_value_preserving_vIS9_dEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIdNS0_6detail14vector_ext_abiILi2EEEEC2IfS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEsr6detailE21is_value_preserving_vIS9_dEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIiNS0_6detail14vector_ext_abiILi8EEEEC2IsS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEsr6detailE21is_value_preserving_vIS9_iEEiE4typeELi0EEERKSB_ |
107 | | |
108 | | template <class U, class UAbi, |
109 | | std::enable_if_t<!std::is_same_v<basic_vec<U, UAbi>, basic_vec> && |
110 | | detail::abi_size_v<UAbi> == N && |
111 | | !detail::is_value_preserving_v<U, value_type>, |
112 | | int> = 0> |
113 | | constexpr explicit basic_vec(const basic_vec<U, UAbi> &Other) noexcept |
114 | 0 | : Data(convert_from(Other)) {}Unexecuted instantiation: _ZN5cxx264simd9basic_vecIaNS0_6detail14vector_ext_abiILi8EEEEC2IsS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_aEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIhNS0_6detail14vector_ext_abiILi8EEEEC2IsS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_hEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIsNS0_6detail14vector_ext_abiILi4EEEEC2IiS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_sEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecItNS0_6detail14vector_ext_abiILi4EEEEC2IiS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_tEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIsNS0_6detail14vector_ext_abiILi8EEEEC2IiS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_sEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIiNS0_6detail14vector_ext_abiILi4EEEEC2IfS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_iEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIjNS0_6detail14vector_ext_abiILi4EEEEC2IfS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_jEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIfNS0_6detail14vector_ext_abiILi4EEEEC2IiS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_fEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIfNS0_6detail14vector_ext_abiILi4EEEEC2IjS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_fEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIlNS0_6detail14vector_ext_abiILi2EEEEC2IdS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_lEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIiNS0_6detail14vector_ext_abiILi2EEEEC2IlS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_iEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecImNS0_6detail14vector_ext_abiILi2EEEEC2IdS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_mEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIjNS0_6detail14vector_ext_abiILi2EEEEC2ImS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_jEEiE4typeELi0EEERKSB_ Unexecuted instantiation: _ZN5cxx264simd9basic_vecIfNS0_6detail14vector_ext_abiILi2EEEEC2IdS4_TnNSt3__19enable_ifIXaaaantsr3stdE9is_same_vINS1_IT_T0_EES5_Eeqsr6detailE10abi_size_vISA_EL_ZNS5_1NEEntsr6detailE21is_value_preserving_vIS9_fEEiE4typeELi0EEERKSB_ |
115 | | |
116 | | template <class G, |
117 | | std::enable_if_t<!std::is_convertible_v<G, value_type> && |
118 | | detail::is_generator_v<G, value_type, N>, |
119 | | int> = 0> |
120 | | constexpr explicit basic_vec(G &&Gen) |
121 | 0 | : Data(backend::generate(std::forward<G>(Gen))) {}Unexecuted instantiation: engine.cpp:_ZN5cxx264simd9basic_vecIiNS0_6detail14vector_ext_abiILi4EEEEC2IZZN8WasmEdge8Executor8Executor7executeERNS7_7Runtime12StackManagerEPKNS7_3AST11InstructionESG_ENK3$_0clEvEUlT_E_TnNSt3__19enable_ifIXaantsr3stdE16is_convertible_vISI_iEsr6detailE14is_generator_vISI_iL_ZNS5_1NEEEEiE4typeELi0EEEOSI_ Unexecuted instantiation: engine.cpp:_ZN5cxx264simd9basic_vecIiNS0_6detail14vector_ext_abiILi4EEEEC2IZZN8WasmEdge8Executor8Executor7executeERNS7_7Runtime12StackManagerEPKNS7_3AST11InstructionESG_ENK3$_0clEvEUlT_E0_TnNSt3__19enable_ifIXaantsr3stdE16is_convertible_vISI_iEsr6detailE14is_generator_vISI_iL_ZNS5_1NEEEEiE4typeELi0EEEOSI_ |
122 | | |
123 | 678 | constexpr value_type operator[](simd_size_type I) const noexcept { |
124 | 678 | return backend::get(Data, I); |
125 | 678 | } cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >::operator[](int) const Line | Count | Source | 123 | 678 | constexpr value_type operator[](simd_size_type I) const noexcept { | 124 | 678 | return backend::get(Data, I); | 125 | 678 | } |
Unexecuted instantiation: cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> >::operator[](int) const Unexecuted instantiation: cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> >::operator[](int) const Unexecuted instantiation: cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> >::operator[](int) const Unexecuted instantiation: cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> >::operator[](int) const Unexecuted instantiation: cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> >::operator[](int) const Unexecuted instantiation: cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> >::operator[](int) const Unexecuted instantiation: cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> >::operator[](int) const Unexecuted instantiation: cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> >::operator[](int) const |
126 | | |
127 | | constexpr basic_vec operator+() const noexcept { return *this; } |
128 | 0 | constexpr basic_vec operator-() const noexcept { |
129 | 0 | return basic_vec(detail::private_tag{}, backend::neg(Data)); |
130 | 0 | } Unexecuted instantiation: cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> >::operator-() const Unexecuted instantiation: cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> >::operator-() const Unexecuted instantiation: cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> >::operator-() const Unexecuted instantiation: cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> >::operator-() const Unexecuted instantiation: cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> >::operator-() const Unexecuted instantiation: cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> >::operator-() const |
131 | | constexpr mask_type operator!() const noexcept { |
132 | | return *this == basic_vec(); |
133 | | } |
134 | | |
135 | | #define CXX26_SIMD_VEC_BINARY(OP, NAME) \ |
136 | | friend constexpr basic_vec operator OP(const basic_vec &A, \ |
137 | 0 | const basic_vec &B) noexcept { \ |
138 | 0 | return basic_vec(detail::private_tag{}, backend::NAME(A.Data, B.Data)); \ |
139 | 0 | } \ Unexecuted instantiation: cxx26::simd::operator-(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator+(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator*(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator+(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator*(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator+(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator+(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator+(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator-(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator*(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator+(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator-(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator*(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator*(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator+(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator-(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator*(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator*(cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator+(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator-(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator*(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator/(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator+(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator-(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator*(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator/(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) |
140 | | friend constexpr basic_vec &operator OP## = \ |
141 | 0 | (basic_vec & A, const basic_vec &B) noexcept { \ |
142 | 0 | return A = A OP B; \ |
143 | 0 | } Unexecuted instantiation: cxx26::simd::operator-=(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> >&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator+=(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> >&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator+=(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> >&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator-=(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> >&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator*=(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> >&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator+=(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> >&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator-=(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> >&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator*=(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> >&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator+=(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator-=(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator*=(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator+=(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> >&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator-=(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> >&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator*=(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> >&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator/=(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> >&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator+=(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> >&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator-=(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> >&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator*=(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> >&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator/=(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> >&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) |
144 | | CXX26_SIMD_VEC_BINARY(+, add) |
145 | | CXX26_SIMD_VEC_BINARY(-, sub) |
146 | | CXX26_SIMD_VEC_BINARY(*, mul) |
147 | | CXX26_SIMD_VEC_BINARY(/, div) |
148 | | #undef CXX26_SIMD_VEC_BINARY |
149 | | |
150 | | #define CXX26_SIMD_VEC_COMPARE(OP, NAME) \ |
151 | | friend constexpr mask_type operator OP(const basic_vec &A, \ |
152 | 0 | const basic_vec &B) noexcept { \ |
153 | 0 | return detail::access::make<mask_type>(backend::NAME(A.Data, B.Data)); \ |
154 | 0 | } Unexecuted instantiation: cxx26::simd::operator>=(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator>(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator==(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator!=(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator<(cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator<(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator>(cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator>(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator<=(cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator<=(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator>=(cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> > const&, cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> > const&) Unexecuted instantiation: cxx26::simd::operator==(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator!=(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator<(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator<(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator>(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator>(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator<=(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator<=(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator>=(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator>=(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&, cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: cxx26::simd::operator==(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator!=(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator<(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator<(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator>(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator>(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator<=(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator<=(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator>=(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator>=(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator==(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator!=(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator<(cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator>(cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator<=(cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator>=(cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator==(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator!=(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator<(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator>(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator<=(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator>=(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&, cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: cxx26::simd::operator==(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator!=(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator<(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator>(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator<=(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: cxx26::simd::operator>=(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&, cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) |
155 | | CXX26_SIMD_VEC_COMPARE(==, eq) |
156 | | CXX26_SIMD_VEC_COMPARE(!=, ne) |
157 | | CXX26_SIMD_VEC_COMPARE(<, lt) |
158 | | CXX26_SIMD_VEC_COMPARE(<=, le) |
159 | | CXX26_SIMD_VEC_COMPARE(>, gt) |
160 | | CXX26_SIMD_VEC_COMPARE(>=, ge) |
161 | | #undef CXX26_SIMD_VEC_COMPARE |
162 | | |
163 | | private: |
164 | | friend struct detail::access; |
165 | | template <class, class> friend class basic_vec; |
166 | | |
167 | | constexpr basic_vec(detail::private_tag, const storage_type &S) noexcept |
168 | 0 | : Data(S) {}Unexecuted instantiation: cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<16> >::basic_vec(cxx26::simd::detail::private_tag, unsigned char __vector(16) const&) Unexecuted instantiation: cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<16> >::basic_vec(cxx26::simd::detail::private_tag, signed char __vector(16) const&) Unexecuted instantiation: cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> >::basic_vec(cxx26::simd::detail::private_tag, short __vector(8) const&) Unexecuted instantiation: cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> >::basic_vec(cxx26::simd::detail::private_tag, int __vector(4) const&) Unexecuted instantiation: cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> >::basic_vec(cxx26::simd::detail::private_tag, long __vector(2) const&) Unexecuted instantiation: cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >::basic_vec(cxx26::simd::detail::private_tag, unsigned long __vector(2) const&) Unexecuted instantiation: cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> >::basic_vec(cxx26::simd::detail::private_tag, unsigned short __vector(8) const&) Unexecuted instantiation: cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> >::basic_vec(cxx26::simd::detail::private_tag, int __vector(8) const&) Unexecuted instantiation: cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> >::basic_vec(cxx26::simd::detail::private_tag, unsigned int __vector(4) const&) Unexecuted instantiation: cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> >::basic_vec(cxx26::simd::detail::private_tag, float __vector(4) const&) Unexecuted instantiation: cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> >::basic_vec(cxx26::simd::detail::private_tag, double __vector(2) const&) |
169 | | |
170 | | template <class U, class UAbi> |
171 | | static constexpr storage_type |
172 | 0 | convert_from(const basic_vec<U, UAbi> &Other) noexcept { |
173 | 0 | if constexpr (std::is_same_v<UAbi, Abi>) { |
174 | 0 | return backend::template convert<U>(Other.Data); |
175 | | } else { |
176 | | return backend::generate( |
177 | | [&](auto I) { return static_cast<value_type>(Other[I]); }); |
178 | | } |
179 | 0 | } Unexecuted instantiation: int __vector(8) cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> >::convert_from<short, cxx26::simd::detail::vector_ext_abi<8> >(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: short __vector(8) cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> >::convert_from<int, cxx26::simd::detail::vector_ext_abi<8> >(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: float __vector(2) cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<2> >::convert_from<double, cxx26::simd::detail::vector_ext_abi<2> >(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: double __vector(2) cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> >::convert_from<float, cxx26::simd::detail::vector_ext_abi<2> >(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: short __vector(8) cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> >::convert_from<signed char, cxx26::simd::detail::vector_ext_abi<8> >(cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: unsigned short __vector(8) cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<8> >::convert_from<unsigned char, cxx26::simd::detail::vector_ext_abi<8> >(cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: int __vector(4) cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> >::convert_from<short, cxx26::simd::detail::vector_ext_abi<4> >(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: unsigned int __vector(4) cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> >::convert_from<unsigned short, cxx26::simd::detail::vector_ext_abi<4> >(cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: long __vector(2) cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> >::convert_from<int, cxx26::simd::detail::vector_ext_abi<2> >(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: unsigned long __vector(2) cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >::convert_from<unsigned int, cxx26::simd::detail::vector_ext_abi<2> >(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: signed char __vector(8) cxx26::simd::basic_vec<signed char, cxx26::simd::detail::vector_ext_abi<8> >::convert_from<short, cxx26::simd::detail::vector_ext_abi<8> >(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: unsigned char __vector(8) cxx26::simd::basic_vec<unsigned char, cxx26::simd::detail::vector_ext_abi<8> >::convert_from<short, cxx26::simd::detail::vector_ext_abi<8> >(cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<8> > const&) Unexecuted instantiation: short __vector(4) cxx26::simd::basic_vec<short, cxx26::simd::detail::vector_ext_abi<4> >::convert_from<int, cxx26::simd::detail::vector_ext_abi<4> >(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: unsigned short __vector(4) cxx26::simd::basic_vec<unsigned short, cxx26::simd::detail::vector_ext_abi<4> >::convert_from<int, cxx26::simd::detail::vector_ext_abi<4> >(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: int __vector(4) cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> >::convert_from<float, cxx26::simd::detail::vector_ext_abi<4> >(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: unsigned int __vector(4) cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> >::convert_from<float, cxx26::simd::detail::vector_ext_abi<4> >(cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: float __vector(4) cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> >::convert_from<int, cxx26::simd::detail::vector_ext_abi<4> >(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: float __vector(4) cxx26::simd::basic_vec<float, cxx26::simd::detail::vector_ext_abi<4> >::convert_from<unsigned int, cxx26::simd::detail::vector_ext_abi<4> >(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<4> > const&) Unexecuted instantiation: long __vector(2) cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> >::convert_from<double, cxx26::simd::detail::vector_ext_abi<2> >(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: int __vector(2) cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<2> >::convert_from<long, cxx26::simd::detail::vector_ext_abi<2> >(cxx26::simd::basic_vec<long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: unsigned long __vector(2) cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >::convert_from<double, cxx26::simd::detail::vector_ext_abi<2> >(cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: unsigned int __vector(2) cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<2> >::convert_from<unsigned long, cxx26::simd::detail::vector_ext_abi<2> >(cxx26::simd::basic_vec<unsigned long, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: double __vector(2) cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> >::convert_from<int, cxx26::simd::detail::vector_ext_abi<2> >(cxx26::simd::basic_vec<int, cxx26::simd::detail::vector_ext_abi<2> > const&) Unexecuted instantiation: double __vector(2) cxx26::simd::basic_vec<double, cxx26::simd::detail::vector_ext_abi<2> >::convert_from<unsigned int, cxx26::simd::detail::vector_ext_abi<2> >(cxx26::simd::basic_vec<unsigned int, cxx26::simd::detail::vector_ext_abi<2> > const&) |
180 | | |
181 | | // The s390x ABI aligns vector types to 8 bytes. alignas gives them the |
182 | | // alignment that the other targets have. |
183 | | alignas(detail::storage_alignment<T, N>) storage_type Data; |
184 | | }; |
185 | | |
186 | | template <std::size_t Bytes, class Abi> class basic_mask { |
187 | | static constexpr simd_size_type N = detail::abi_size_v<Abi>; |
188 | | using lane_type = detail::integer_from_t<Bytes>; |
189 | | using backend = detail::simd_backend<lane_type, Abi>; |
190 | | using storage_type = typename backend::storage_type; |
191 | | using lanes_type = basic_vec<lane_type, Abi>; |
192 | | |
193 | | public: |
194 | | using value_type = bool; |
195 | | using abi_type = Abi; |
196 | | |
197 | | static constexpr std::integral_constant<simd_size_type, N> size{}; |
198 | | |
199 | | constexpr basic_mask() noexcept = default; |
200 | | |
201 | | template <class U, |
202 | | std::enable_if_t<std::is_same_v<detail::remove_cvref_t<U>, bool>, |
203 | | int> = 0> |
204 | | constexpr explicit basic_mask(U Value) noexcept |
205 | | : Data(backend::broadcast(static_cast<lane_type>(Value ? -1 : 0))) {} |
206 | | |
207 | | template <class G, std::enable_if_t<!std::is_convertible_v<G, bool> && |
208 | | detail::is_generator_v<G, bool, N>, |
209 | | int> = 0> |
210 | | constexpr explicit basic_mask(G &&Gen) |
211 | | : Data(backend::generate([&](auto I) -> lane_type { |
212 | | return static_cast<bool>(Gen(I)) ? -1 : 0; |
213 | | })) {} |
214 | | |
215 | | constexpr value_type operator[](simd_size_type I) const noexcept { |
216 | | return backend::get(Data, I) != 0; |
217 | | } |
218 | | |
219 | | constexpr basic_mask operator!() const noexcept { |
220 | | return basic_mask(detail::private_tag{}, backend::bit_not(Data)); |
221 | | } |
222 | | constexpr lanes_type operator+() const noexcept { |
223 | | return detail::access::make<lanes_type>(backend::neg(Data)); |
224 | | } |
225 | 0 | constexpr lanes_type operator-() const noexcept { |
226 | 0 | return detail::access::make<lanes_type>(Data); |
227 | 0 | } Unexecuted instantiation: cxx26::simd::basic_mask<1ul, cxx26::simd::detail::vector_ext_abi<16> >::operator-() const Unexecuted instantiation: cxx26::simd::basic_mask<2ul, cxx26::simd::detail::vector_ext_abi<8> >::operator-() const Unexecuted instantiation: cxx26::simd::basic_mask<4ul, cxx26::simd::detail::vector_ext_abi<4> >::operator-() const Unexecuted instantiation: cxx26::simd::basic_mask<8ul, cxx26::simd::detail::vector_ext_abi<2> >::operator-() const |
228 | | constexpr lanes_type operator~() const noexcept { |
229 | | return detail::access::make<lanes_type>( |
230 | | backend::bit_not(backend::neg(Data))); |
231 | | } |
232 | | |
233 | | #define CXX26_SIMD_MASK_BINARY(OP, NAME) \ |
234 | | friend constexpr basic_mask operator OP(const basic_mask &A, \ |
235 | 0 | const basic_mask &B) noexcept { \ |
236 | 0 | return basic_mask(detail::private_tag{}, backend::NAME(A.Data, B.Data)); \ |
237 | 0 | } |
238 | | CXX26_SIMD_MASK_BINARY(&&, bit_and) |
239 | | CXX26_SIMD_MASK_BINARY(||, bit_or) |
240 | | CXX26_SIMD_MASK_BINARY(&, bit_and) |
241 | | CXX26_SIMD_MASK_BINARY(|, bit_or) |
242 | | CXX26_SIMD_MASK_BINARY(^, bit_xor) |
243 | | #undef CXX26_SIMD_MASK_BINARY |
244 | | |
245 | 0 | constexpr unsigned long long to_ullong() const noexcept { |
246 | 0 | return backend::to_ullong(Data); |
247 | 0 | } Unexecuted instantiation: cxx26::simd::basic_mask<1ul, cxx26::simd::detail::vector_ext_abi<16> >::to_ullong() const Unexecuted instantiation: cxx26::simd::basic_mask<2ul, cxx26::simd::detail::vector_ext_abi<8> >::to_ullong() const Unexecuted instantiation: cxx26::simd::basic_mask<4ul, cxx26::simd::detail::vector_ext_abi<4> >::to_ullong() const Unexecuted instantiation: cxx26::simd::basic_mask<8ul, cxx26::simd::detail::vector_ext_abi<2> >::to_ullong() const |
248 | | |
249 | | private: |
250 | | friend struct detail::access; |
251 | | |
252 | | constexpr basic_mask(detail::private_tag, const storage_type &S) noexcept |
253 | 0 | : Data(S) {}Unexecuted instantiation: cxx26::simd::basic_mask<1ul, cxx26::simd::detail::vector_ext_abi<16> >::basic_mask(cxx26::simd::detail::private_tag, signed char __vector(16) const&) Unexecuted instantiation: cxx26::simd::basic_mask<2ul, cxx26::simd::detail::vector_ext_abi<8> >::basic_mask(cxx26::simd::detail::private_tag, short __vector(8) const&) Unexecuted instantiation: cxx26::simd::basic_mask<4ul, cxx26::simd::detail::vector_ext_abi<4> >::basic_mask(cxx26::simd::detail::private_tag, int __vector(4) const&) Unexecuted instantiation: cxx26::simd::basic_mask<8ul, cxx26::simd::detail::vector_ext_abi<2> >::basic_mask(cxx26::simd::detail::private_tag, long __vector(2) const&) Unexecuted instantiation: cxx26::simd::basic_mask<4ul, cxx26::simd::detail::vector_ext_abi<8> >::basic_mask(cxx26::simd::detail::private_tag, int __vector(8) const&) |
254 | | |
255 | | alignas(detail::storage_alignment<lane_type, N>) storage_type Data; |
256 | | }; |
257 | | |
258 | | } // namespace simd |
259 | | } // namespace cxx26 |