Coverage Report

Created: 2026-11-12 06:35

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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