using simd-size-type = see below;
template<size_t Bytes> using integer-from = see below;
template<class T, class Abi>
constexpr simd-size-type simd-size-v = see below;
template<class T> constexpr size_t mask-element-size = see below;
template<class T> using deduced-simd-t = see below;
template<class V, class T> using make-compatible-simd-t = see below;
template<class... Ts>
requires math-floating-point<Ts...>
using math-common-simd-t = see below;
template<class BinaryOperation, class T>
concept reduction-binary-operation =
requires (const BinaryOperation binary_op, const simd<T, 1> v) {
{ binary_op(v, v) } -> same_as<simd<T, 1>>;
};
template<class T> using native-abi = see below;
template<class T, simd-size-type N> using deduce-abi-t = see below;
template<class T, class U = typename T::value_type> struct simd_alignment { see below };
template<class T, class V> struct rebind_simd { using type = see below; };
template<simd-size-type N, class V> struct resize_simd { using type = see below; };
template<class... Other>
friend consteval auto operator|(simd_flags a, simd_flags<Other...> b);
template<class U> constexpr basic_simd(U&&) noexcept;
template<class U, class UAbi>
constexpr explicit(see below) basic_simd(const basic_simd<U, UAbi>& x) noexcept;
template<class G> constexpr explicit basic_simd(G&& gen) noexcept;
template<class R, class... Flags>
constexpr basic_simd(R&& r, simd_flags<Flags...> = {});
template<class R, class... Flags>
constexpr basic_simd(R&& r, const mask_type& mask, simd_flags<Flags...> = {});
template<class R, class... Ts>
basic_simd(R&& r, Ts...) -> see below;
constexpr value_type operator[](simd-size-type i) const;
constexpr basic_simd& operator++() noexcept;
constexpr basic_simd operator++(int) noexcept;
constexpr basic_simd& operator--() noexcept;
constexpr basic_simd operator--(int) noexcept;
constexpr mask_type operator!() const noexcept;
constexpr basic_simd operator~() const noexcept;
constexpr basic_simd operator+() const noexcept;
constexpr basic_simd operator-() const noexcept;
friend constexpr basic_simd operator+(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd operator-(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd operator*(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd operator/(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd operator%(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd operator&(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd operator|(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd operator^(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd operator<<(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd operator>>(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd operator<<(const basic_simd& v, simd-size-type n) noexcept;
friend constexpr basic_simd operator>>(const basic_simd& v, simd-size-type n) noexcept;
friend constexpr basic_simd& operator+=(basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd& operator-=(basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd& operator*=(basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd& operator/=(basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd& operator%=(basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd& operator&=(basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd& operator|=(basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd& operator^=(basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd& operator<<=(basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd& operator>>=(basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd& operator<<=(basic_simd& lhs, simd-size-type n) noexcept;
friend constexpr basic_simd& operator>>=(basic_simd& lhs, simd-size-type n) noexcept;
friend constexpr mask_type operator==(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr mask_type operator!=(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr mask_type operator>=(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr mask_type operator<=(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr mask_type operator>(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr mask_type operator<(const basic_simd& lhs, const basic_simd& rhs) noexcept;
friend constexpr basic_simd
simd-select-impl(const mask_type& mask, const basic_simd& a, const basic_simd& b) noexcept;
template<class T, class Abi, class BinaryOperation = plus<>>
constexpr T reduce(const basic_simd<T, Abi>& x, BinaryOperation binary_op = {});
template<class T, class Abi, class BinaryOperation = plus<>>
constexpr T reduce(
const basic_simd<T, Abi>& x, const typename basic_simd<T, Abi>::mask_type& mask,
BinaryOperation binary_op = {}, type_identity_t<T> identity_element = see below);
template<class T, class Abi> constexpr T reduce_min(const basic_simd<T, Abi>& x) noexcept;
template<class T, class Abi>
constexpr T reduce_min(
const basic_simd<T, Abi>&, const typename basic_simd<T, Abi>::mask_type&) noexcept;
template<class T, class Abi> constexpr T reduce_max(const basic_simd<T, Abi>& x) noexcept;
template<class T, class Abi>
constexpr T reduce_max(
const basic_simd<T, Abi>&, const typename basic_simd<T, Abi>::mask_type&) noexcept;
template<class V = see below, ranges::contiguous_range R, class... Flags>
requires ranges::sized_range<R>
constexpr V simd_unchecked_load(R&& r, simd_flags<Flags...> f = {});
template<class V = see below, ranges::contiguous_range R, class... Flags>
requires ranges::sized_range<R>
constexpr V simd_unchecked_load(R&& r, const typename V::mask_type& mask,
simd_flags<Flags...> f = {});
template<class V = see below, contiguous_iterator I, class... Flags>
constexpr V simd_unchecked_load(I first, iter_difference_t<I> n, simd_flags<Flags...> f = {});
template<class V = see below, contiguous_iterator I, class... Flags>
constexpr V simd_unchecked_load(I first, iter_difference_t<I> n,
const typename V::mask_type& mask, simd_flags<Flags...> f = {});
template<class V = see below, contiguous_iterator I, sized_sentinel_for<I> S, class... Flags>
constexpr V simd_unchecked_load(I first, S last, simd_flags<Flags...> f = {});
template<class V = see below, contiguous_iterator I, sized_sentinel_for<I> S, class... Flags>
constexpr V simd_unchecked_load(I first, S last, const typename V::mask_type& mask,
simd_flags<Flags...> f = {});
template<class V = see below, ranges::contiguous_range R, class... Flags>
requires ranges::sized_range<R>
constexpr V simd_partial_load(R&& r, simd_flags<Flags...> f = {});
template<class V = see below, ranges::contiguous_range R, class... Flags>
requires ranges::sized_range<R>
constexpr V simd_partial_load(R&& r, const typename V::mask_type& mask,
simd_flags<Flags...> f = {});
template<class V = see below, contiguous_iterator I, class... Flags>
constexpr V simd_partial_load(I first, iter_difference_t<I> n, simd_flags<Flags...> f = {});
template<class V = see below, contiguous_iterator I, class... Flags>
constexpr V simd_partial_load(I first, iter_difference_t<I> n, const typename V::mask_type& mask,
simd_flags<Flags...> f = {});
template<class V = see below, contiguous_iterator I, sized_sentinel_for<I> S, class... Flags>
constexpr V simd_partial_load(I first, S last, simd_flags<Flags...> f = {});
template<class V = see below, contiguous_iterator I, sized_sentinel_for<I> S, class... Flags>
constexpr V simd_partial_load(I first, S last, const typename V::mask_type& mask,
simd_flags<Flags...> f = {});
template<class T, class Abi, ranges::contiguous_range R, class... Flags>
requires ranges::sized_range<R> && indirectly_writable<ranges::iterator_t<R>, T>
constexpr void simd_unchecked_store(const basic_simd<T, Abi>& v, R&& r,
simd_flags<Flags...> f = {});
template<class T, class Abi, ranges::contiguous_range R, class... Flags>
requires ranges::sized_range<R> && indirectly_writable<ranges::iterator_t<R>, T>
constexpr void simd_unchecked_store(const basic_simd<T, Abi>& v, R&& r,
const typename basic_simd<T, Abi>::mask_type& mask, simd_flags<Flags...> f = {});
template<class T, class Abi, contiguous_iterator I, class... Flags>
requires indirectly_writable<I, T>
constexpr void simd_unchecked_store(const basic_simd<T, Abi>& v, I first, iter_difference_t<I> n,
simd_flags<Flags...> f = {});
template<class T, class Abi, contiguous_iterator I, class... Flags>
requires indirectly_writable<I, T>
constexpr void simd_unchecked_store(const basic_simd<T, Abi>& v, I first, iter_difference_t<I> n,
const typename basic_simd<T, Abi>::mask_type& mask, simd_flags<Flags...> f = {});
template<class T, class Abi, contiguous_iterator I, sized_sentinel_for<I> S, class... Flags>
requires indirectly_writable<I, T>
constexpr void simd_unchecked_store(const basic_simd<T, Abi>& v, I first, S last,
simd_flags<Flags...> f = {});
template<class T, class Abi, contiguous_iterator I, sized_sentinel_for<I> S, class... Flags>
requires indirectly_writable<I, T>
constexpr void simd_unchecked_store(const basic_simd<T, Abi>& v, I first, S last,
const typename basic_simd<T, Abi>::mask_type& mask, simd_flags<Flags...> f = {});
template<class T, class Abi, ranges::contiguous_range R, class... Flags>
requires ranges::sized_range<R> && indirectly_writable<ranges::iterator_t<R>, T>
constexpr void simd_partial_store(const basic_simd<T, Abi>& v, R&& r,
simd_flags<Flags...> f = {});
template<class T, class Abi, ranges::contiguous_range R, class... Flags>
requires ranges::sized_range<R> && indirectly_writable<ranges::iterator_t<R>, T>
constexpr void simd_partial_store(const basic_simd<T, Abi>& v, R&& r,
const typename basic_simd<T, Abi>::mask_type& mask, simd_flags<Flags...> f = {});
template<class T, class Abi, contiguous_iterator I, class... Flags>
requires indirectly_writable<I, T>
constexpr void simd_partial_store(const basic_simd<T, Abi>& v, I first, iter_difference_t<I> n,
simd_flags<Flags...> f = {});
template<class T, class Abi, contiguous_iterator I, class... Flags>
requires indirectly_writable<I, T>
constexpr void simd_partial_store(const basic_simd<T, Abi>& v, I first, iter_difference_t<I> n,
const typename basic_simd<T, Abi>::mask_type& mask, simd_flags<Flags...> f = {});
template<class T, class Abi, contiguous_iterator I, sized_sentinel_for<I> S, class... Flags>
requires indirectly_writable<I, T>
constexpr void simd_partial_store(const basic_simd<T, Abi>& v, I first, S last,
simd_flags<Flags...> f = {});
template<class T, class Abi, contiguous_iterator I, sized_sentinel_for<I> S, class... Flags>
requires indirectly_writable<I, T>
constexpr void simd_partial_store(const basic_simd<T, Abi>& v, I first, S last,
const typename basic_simd<T, Abi>::mask_type& mask, simd_flags<Flags...> f = {});
template<class T, class Abi>
constexpr auto simd_split(const basic_simd<typename T::value_type, Abi>& x) noexcept;
template<class T, class Abi>
constexpr auto simd_split(const basic_simd_mask<mask-element-size<T>, Abi>& x) noexcept;
template<class T, class... Abis>
constexpr simd<T, (basic_simd<T, Abis>::size() + ...)>
simd_cat(const basic_simd<T, Abis>&... xs) noexcept;
template<size_t Bytes, class... Abis>
constexpr basic_simd_mask<Bytes, deduce-abi-t<integer-from<Bytes>,
(basic_simd_mask<Bytes, Abis>::size() + ...)>>
simd_cat(const basic_simd_mask<Bytes, Abis>&... xs) noexcept;
template<class T, class Abi>
constexpr basic_simd<T, Abi> min(const basic_simd<T, Abi>& a,
const basic_simd<T, Abi>& b) noexcept;
template<class T, class Abi>
constexpr basic_simd<T, Abi> max(const basic_simd<T, Abi>& a,
const basic_simd<T, Abi>& b) noexcept;
template<class T, class Abi>
constexpr pair<basic_simd<T, Abi>, basic_simd<T, Abi>>
minmax(const basic_simd<T, Abi>& a, const basic_simd<T, Abi>& b) noexcept;
template<class T, class Abi>
constexpr basic_simd<T, Abi> clamp(
const basic_simd<T, Abi>& v, const basic_simd<T, Abi>& lo, const basic_simd<T, Abi>& hi);
template<class T, class U>
constexpr auto simd_select(bool c, const T& a, const U& b)
-> remove_cvref_t<decltype(c ? a : b)>;
template<size_t Bytes, class Abi, class T, class U>
constexpr auto simd_select(const basic_simd_mask<Bytes, Abi>& c, const T& a, const U& b)
noexcept -> decltype(simd-select-impl(c, a, b));
template<math-floating-point V>
constexpr rebind_simd_t<int, deduced-simd-t<V>> ilogb(const V& x);
template<math-floating-point V>
constexpr deduced-simd-t<V> ldexp(const V& x, const rebind_simd_t<int, deduced-simd-t<V>>& exp);
template<math-floating-point V>
constexpr deduced-simd-t<V> scalbn(const V& x, const rebind_simd_t<int, deduced-simd-t<V>>& n);
template<math-floating-point V>
constexpr deduced-simd-t<V>
scalbln(const V& x, const rebind_simd_t<long int, deduced-simd-t<V>>& n);
template<signed_integral T, class Abi>
constexpr basic_simd<T, Abi> abs(const basic_simd<T, Abi>& j);
template<math-floating-point V>
constexpr deduced-simd-t<V> abs(const V& j);
template<math-floating-point V>
constexpr deduced-simd-t<V> fabs(const V& x);
template<math-floating-point V>
constexpr deduced-simd-t<V> ceil(const V& x);
template<math-floating-point V>
constexpr deduced-simd-t<V> floor(const V& x);
template<math-floating-point V>
deduced-simd-t<V> nearbyint(const V& x);
template<math-floating-point V>
deduced-simd-t<V> rint(const V& x);
template<math-floating-point V>
rebind_simd_t<long int, deduced-simd-t<V>> lrint(const V& x);
template<math-floating-point V>
rebind_simd_t<long long int, deduced-simd-t<V>> llrint(const V& x);
template<math-floating-point V>
constexpr deduced-simd-t<V> round(const V& x);
template<math-floating-point V>
constexpr rebind_simd_t<long int, deduced-simd-t<V>> lround(const V& x);
template<math-floating-point V>
constexpr rebind_simd_t<long long int, deduced-simd-t<V>> llround(const V& x);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> fmod(const V0& x, const V1& y);
template<math-floating-point V>
constexpr deduced-simd-t<V> trunc(const V& x);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> remainder(const V0& x, const V1& y);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> copysign(const V0& x, const V1& y);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> nextafter(const V0& x, const V1& y);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> fdim(const V0& x, const V1& y);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> fmax(const V0& x, const V1& y);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> fmin(const V0& x, const V1& y);
template<class V0, class V1, class V2>
constexpr math-common-simd-t<V0, V1, V2> fma(const V0& x, const V1& y, const V2& z);
template<math-floating-point V>
constexpr rebind_simd_t<int, deduced-simd-t<V>> fpclassify(const V& x);
template<math-floating-point V>
constexpr typename deduced-simd-t<V>::mask_type isfinite(const V& x);
template<math-floating-point V>
constexpr typename deduced-simd-t<V>::mask_type isinf(const V& x);
template<math-floating-point V>
constexpr typename deduced-simd-t<V>::mask_type isnan(const V& x);
template<math-floating-point V>
constexpr typename deduced-simd-t<V>::mask_type isnormal(const V& x);
template<math-floating-point V>
constexpr typename deduced-simd-t<V>::mask_type signbit(const V& x);
template<class V0, class V1>
constexpr typename math-common-simd-t<V0, V1>::mask_type isgreater(const V0& x, const V1& y);
template<class V0, class V1>
constexpr typename math-common-simd-t<V0, V1>::mask_type
isgreaterequal(const V0& x, const V1& y);
template<class V0, class V1>
constexpr typename math-common-simd-t<V0, V1>::mask_type isless(const V0& x, const V1& y);
template<class V0, class V1>
constexpr typename math-common-simd-t<V0, V1>::mask_type islessequal(const V0& x, const V1& y);
template<class V0, class V1>
constexpr typename math-common-simd-t<V0, V1>::mask_type islessgreater(const V0& x, const V1& y);
template<class V0, class V1>
constexpr typename math-common-simd-t<V0, V1>::mask_type isunordered(const V0& x, const V1& y);
template<math-floating-point V> constexpr deduced-simd-t<V> acos(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> asin(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> atan(const V& x);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> atan2(const V0& y, const V1& x);
template<math-floating-point V> constexpr deduced-simd-t<V> cos(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> sin(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> tan(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> acosh(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> asinh(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> atanh(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> cosh(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> sinh(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> tanh(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> exp(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> exp2(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> expm1(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> log(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> log10(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> log1p(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> log2(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> logb(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> cbrt(const V& x);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> hypot(const V0& x, const V1& y);
template<class V0, class V1, class V2>
constexpr math-common-simd-t<V0, V1, V2> hypot(const V0& x, const V1& y, const V2& z);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> pow(const V0& x, const V1& y);
template<math-floating-point V> constexpr deduced-simd-t<V> sqrt(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> erf(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> erfc(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> lgamma(const V& x);
template<math-floating-point V> constexpr deduced-simd-t<V> tgamma(const V& x);
template<class V0, class V1, class V2>
constexpr math-common-simd-t<V0, V1, V2> lerp(const V0& a, const V1& b, const V2& t) noexcept;
template<math-floating-point V>
deduced-simd-t<V> assoc_laguerre(const rebind_simd_t<unsigned, deduced-simd-t<V>>& n, const
rebind_simd_t<unsigned, deduced-simd-t<V>>& m,
const V& x);
template<math-floating-point V>
deduced-simd-t<V> assoc_legendre(const rebind_simd_t<unsigned, deduced-simd-t<V>>& l, const
rebind_simd_t<unsigned, deduced-simd-t<V>>& m,
const V& x);
template<class V0, class V1>
math-common-simd-t<V0, V1> beta(const V0& x, const V1& y);
template<math-floating-point V> deduced-simd-t<V> comp_ellint_1(const V& k);
template<math-floating-point V> deduced-simd-t<V> comp_ellint_2(const V& k);
template<class V0, class V1>
math-common-simd-t<V0, V1> comp_ellint_3(const V0& k, const V1& nu);
template<class V0, class V1>
math-common-simd-t<V0, V1> cyl_bessel_i(const V0& nu, const V1& x);
template<class V0, class V1>
math-common-simd-t<V0, V1> cyl_bessel_j(const V0& nu, const V1& x);
template<class V0, class V1>
math-common-simd-t<V0, V1> cyl_bessel_k(const V0& nu, const V1& x);
template<class V0, class V1>
math-common-simd-t<V0, V1> cyl_neumann(const V0& nu, const V1& x);
template<class V0, class V1>
math-common-simd-t<V0, V1> ellint_1(const V0& k, const V1& phi);
template<class V0, class V1>
math-common-simd-t<V0, V1> ellint_2(const V0& k, const V1& phi);
template<class V0, class V1, class V2>
math-common-simd-t<V0, V1, V2> ellint_3(const V0& k, const V1& nu, const V2& phi);
template<math-floating-point V> deduced-simd-t<V> expint(const V& x);
template<math-floating-point V> deduced-simd-t<V> hermite(const rebind_simd_t<unsigned,
deduced-simd-t<V>>& n, const V& x);
template<math-floating-point V> deduced-simd-t<V> laguerre(const rebind_simd_t<unsigned,
deduced-simd-t<V>>& n, const V& x);
template<math-floating-point V> deduced-simd-t<V> legendre(const rebind_simd_t<unsigned,
deduced-simd-t<V>>& l, const V& x);
template<math-floating-point V> deduced-simd-t<V> riemann_zeta(const V& x);
template<math-floating-point V> deduced-simd-t<V> sph_bessel(const rebind_simd_t<unsigned,
deduced-simd-t<V>>& n, const V& x);
template<math-floating-point V>
deduced-simd-t<V> sph_legendre(const rebind_simd_t<unsigned, deduced-simd-t<V>>& l,
const rebind_simd_t<unsigned, deduced-simd-t<V>>& m,
const V& theta);
template<math-floating-point V> deduced-simd-t<V> sph_neumann(const rebind_simd_t<unsigned,
deduced-simd-t<V>>& n, const V& x);
template<math-floating-point V>
constexpr deduced-simd-t<V> frexp(const V& value, rebind_simd_t<int, deduced-simd-t<V>>* exp);
template<class V0, class V1>
constexpr math-common-simd-t<V0, V1> remquo(const V0& x, const V1& y,
rebind_simd_t<int, math-common-simd-t<V0, V1>>* quo);
template<class T, class Abi>
constexpr basic_simd<T, Abi> modf(const type_identity_t<basic_simd<T, Abi>>& value,
basic_simd<T, Abi>* iptr);
constexpr explicit basic_simd_mask(value_type x) noexcept;
template<size_t UBytes, class UAbi>
constexpr explicit basic_simd_mask(const basic_simd_mask<UBytes, UAbi>& x) noexcept;
template<class G> constexpr explicit basic_simd_mask(G&& gen) noexcept;
constexpr value_type operator[](simd-size-type i) const;
constexpr basic_simd_mask operator!() const noexcept;
constexpr basic_simd<integer-from<Bytes>, Abi> operator+() const noexcept;
constexpr basic_simd<integer-from<Bytes>, Abi> operator-() const noexcept;
constexpr basic_simd<integer-from<Bytes>, Abi> operator~() const noexcept;
template<class U, class A>
constexpr explicit(sizeof(U) != Bytes) operator basic_simd<U, A>() const noexcept;
friend constexpr basic_simd_mask
operator&&(const basic_simd_mask& lhs, const basic_simd_mask& rhs) noexcept;
friend constexpr basic_simd_mask
operator||(const basic_simd_mask& lhs, const basic_simd_mask& rhs) noexcept;
friend constexpr basic_simd_mask
operator& (const basic_simd_mask& lhs, const basic_simd_mask& rhs) noexcept;
friend constexpr basic_simd_mask
operator| (const basic_simd_mask& lhs, const basic_simd_mask& rhs) noexcept;
friend constexpr basic_simd_mask
operator^ (const basic_simd_mask& lhs, const basic_simd_mask& rhs) noexcept;
friend constexpr basic_simd_mask&
operator&=(basic_simd_mask& lhs, const basic_simd_mask& rhs) noexcept;
friend constexpr basic_simd_mask&
operator|=(basic_simd_mask& lhs, const basic_simd_mask& rhs) noexcept;
friend constexpr basic_simd_mask&
operator^=(basic_simd_mask& lhs, const basic_simd_mask& rhs) noexcept;
friend constexpr basic_simd_mask
operator==(const basic_simd_mask&, const basic_simd_mask&) noexcept;
friend constexpr basic_simd_mask
operator!=(const basic_simd_mask&, const basic_simd_mask&) noexcept;
friend constexpr basic_simd_mask
operator>=(const basic_simd_mask&, const basic_simd_mask&) noexcept;
friend constexpr basic_simd_mask
operator<=(const basic_simd_mask&, const basic_simd_mask&) noexcept;
friend constexpr basic_simd_mask
operator>(const basic_simd_mask&, const basic_simd_mask&) noexcept;
friend constexpr basic_simd_mask
operator<(const basic_simd_mask&, const basic_simd_mask&) noexcept;
friend constexpr basic_simd_mask simd-select-impl(
const basic_simd_mask& mask, const basic_simd_mask& a, const basic_simd_mask& b) noexcept;
friend constexpr basic_simd_mask
simd-select-impl(const basic_simd_mask& mask, same_as<bool> auto a, same_as<bool> auto b) noexcept;
template<class T0, class T1>
friend constexpr simd<see below, size()>
simd-select-impl(const basic_simd_mask& mask, const T0& a, const T1& b) noexcept;
template<size_t Bytes, class Abi>
constexpr bool all_of(const basic_simd_mask<Bytes, Abi>& k) noexcept;
template<size_t Bytes, class Abi>
constexpr bool any_of(const basic_simd_mask<Bytes, Abi>& k) noexcept;
template<size_t Bytes, class Abi>
constexpr bool none_of(const basic_simd_mask<Bytes, Abi>& k) noexcept;
template<size_t Bytes, class Abi>
constexpr simd-size-type reduce_count(const basic_simd_mask<Bytes, Abi>& k) noexcept;
template<size_t Bytes, class Abi>
constexpr simd-size-type reduce_min_index(const basic_simd_mask<Bytes, Abi>& k);
template<size_t Bytes, class Abi>
constexpr simd-size-type reduce_max_index(const basic_simd_mask<Bytes, Abi>& k);
constexpr bool all_of(same_as<bool> auto x) noexcept;
constexpr bool any_of(same_as<bool> auto x) noexcept;
constexpr simd-size-type reduce_count(same_as<bool> auto x) noexcept;
constexpr bool none_of(same_as<bool> auto x) noexcept;
constexpr simd-size-type reduce_min_index(same_as<bool> auto x);
constexpr simd-size-type reduce_max_index(same_as<bool> auto x);