@@ -16532,10 +16532,24 @@
1653216532 template<class T, @\exposid{simd-size-type}@ N = @\exposid{simd-size-v}@<T, @\exposid{native-abi}@<T>>>
1653316533 using @\libmember{vec}{simd}@ = basic_vec<T, @\exposid{deduce-abi-t}@<T, N>>;
1653416534
16535- // \ref{simd.mask.class}, class template \tcode{basic_mask}
16536- template<size_t Bytes, class Abi = @\exposid{native-abi}@<@\exposid{integer-from}@<Bytes>>> class basic_mask;
16537- template<class T, @\exposid{simd-size-type}@ N = @\exposid{simd-size-v}@<T, @\exposid{native-abi}@<T>>>
16538- using @\libmember{mask}{simd}@ = basic_mask<sizeof(T), @\exposid{deduce-abi-t}@<T, N>>;
16535+ // \ref{simd.reductions}, \tcode{basic_vec} reductions
16536+ template<class T, class Abi, class BinaryOperation = plus<>>
16537+ constexpr T reduce(const basic_vec<T, Abi>&, BinaryOperation = {});
16538+ template<class T, class Abi, class BinaryOperation = plus<>>
16539+ constexpr T reduce(
16540+ const basic_vec<T, Abi>& x, const typename basic_vec<T, Abi>::mask_type& mask,
16541+ BinaryOperation binary_op = {}, type_identity_t<T> identity_element = @\seebelow@);
16542+
16543+ template<class T, class Abi>
16544+ constexpr T reduce_min(const basic_vec<T, Abi>&) noexcept;
16545+ template<class T, class Abi>
16546+ constexpr T reduce_min(const basic_vec<T, Abi>&,
16547+ const typename basic_vec<T, Abi>::mask_type&) noexcept;
16548+ template<class T, class Abi>
16549+ constexpr T reduce_max(const basic_vec<T, Abi>&) noexcept;
16550+ template<class T, class Abi>
16551+ constexpr T reduce_max(const basic_vec<T, Abi>&,
16552+ const typename basic_vec<T, Abi>::mask_type&) noexcept;
1653916553
1654016554 // \ref{simd.loadstore}, \tcode{basic_vec} load and store functions
1654116555 template<class V = @\seebelow@, ranges::@\libconcept{contiguous_range}@ R, class... Flags>
1671516729 (basic_mask<Bytes, Abis>::size() + ...)>>
1671616730 cat(const basic_mask<Bytes, Abis>&...) noexcept;
1671716731
16718- // \ref{simd.mask.reductions}, \tcode{basic_mask} reductions
16719- template<size_t Bytes, class Abi>
16720- constexpr bool all_of(const basic_mask<Bytes, Abi>&) noexcept;
16721- template<size_t Bytes, class Abi>
16722- constexpr bool any_of(const basic_mask<Bytes, Abi>&) noexcept;
16723- template<size_t Bytes, class Abi>
16724- constexpr bool none_of(const basic_mask<Bytes, Abi>&) noexcept;
16725- template<size_t Bytes, class Abi>
16726- constexpr @\exposid{simd-size-type}@ reduce_count(const basic_mask<Bytes, Abi>&) noexcept;
16727- template<size_t Bytes, class Abi>
16728- constexpr @\exposid{simd-size-type}@ reduce_min_index(const basic_mask<Bytes, Abi>&);
16729- template<size_t Bytes, class Abi>
16730- constexpr @\exposid{simd-size-type}@ reduce_max_index(const basic_mask<Bytes, Abi>&);
16731-
16732- constexpr bool all_of(@\libconcept{same_as}@<bool> auto) noexcept;
16733- constexpr bool any_of(@\libconcept{same_as}@<bool> auto) noexcept;
16734- constexpr bool none_of(@\libconcept{same_as}@<bool> auto) noexcept;
16735- constexpr @\exposid{simd-size-type}@ reduce_count(@\libconcept{same_as}@<bool> auto) noexcept;
16736- constexpr @\exposid{simd-size-type}@ reduce_min_index(@\libconcept{same_as}@<bool> auto);
16737- constexpr @\exposid{simd-size-type}@ reduce_max_index(@\libconcept{same_as}@<bool> auto);
16738-
16739- // \ref{simd.reductions}, \tcode{basic_vec} reductions
16740- template<class T, class Abi, class BinaryOperation = plus<>>
16741- constexpr T reduce(const basic_vec<T, Abi>&, BinaryOperation = {});
16742- template<class T, class Abi, class BinaryOperation = plus<>>
16743- constexpr T reduce(
16744- const basic_vec<T, Abi>& x, const typename basic_vec<T, Abi>::mask_type& mask,
16745- BinaryOperation binary_op = {}, type_identity_t<T> identity_element = @\seebelow@);
16746-
16747- template<class T, class Abi>
16748- constexpr T reduce_min(const basic_vec<T, Abi>&) noexcept;
16749- template<class T, class Abi>
16750- constexpr T reduce_min(const basic_vec<T, Abi>&,
16751- const typename basic_vec<T, Abi>::mask_type&) noexcept;
16752- template<class T, class Abi>
16753- constexpr T reduce_max(const basic_vec<T, Abi>&) noexcept;
16754- template<class T, class Abi>
16755- constexpr T reduce_max(const basic_vec<T, Abi>&,
16756- const typename basic_vec<T, Abi>::mask_type&) noexcept;
16757-
1675816732 // \ref{simd.alg}, algorithms
1675916733 template<class T, class Abi>
1676016734 constexpr basic_vec<T, Abi>
1702116995 rebind_t<complex<typename V::value_type>, V> polar(const V& x, const V& y = {});
1702216996
1702316997 template<@\exposconcept{simd-complex}@ V> constexpr V pow(const V& x, const V& y);
16998+
16999+ // \ref{simd.mask.class}, class template \tcode{basic_mask}
17000+ template<size_t Bytes, class Abi = @\exposid{native-abi}@<@\exposid{integer-from}@<Bytes>>> class basic_mask;
17001+ template<class T, @\exposid{simd-size-type}@ N = @\exposid{simd-size-v}@<T, @\exposid{native-abi}@<T>>>
17002+ using @\libmember{mask}{simd}@ = basic_mask<sizeof(T), @\exposid{deduce-abi-t}@<T, N>>;
17003+
17004+ // \ref{simd.mask.reductions}, \tcode{basic_mask} reductions
17005+ template<size_t Bytes, class Abi>
17006+ constexpr bool all_of(const basic_mask<Bytes, Abi>&) noexcept;
17007+ template<size_t Bytes, class Abi>
17008+ constexpr bool any_of(const basic_mask<Bytes, Abi>&) noexcept;
17009+ template<size_t Bytes, class Abi>
17010+ constexpr bool none_of(const basic_mask<Bytes, Abi>&) noexcept;
17011+ template<size_t Bytes, class Abi>
17012+ constexpr @\exposid{simd-size-type}@ reduce_count(const basic_mask<Bytes, Abi>&) noexcept;
17013+ template<size_t Bytes, class Abi>
17014+ constexpr @\exposid{simd-size-type}@ reduce_min_index(const basic_mask<Bytes, Abi>&);
17015+ template<size_t Bytes, class Abi>
17016+ constexpr @\exposid{simd-size-type}@ reduce_max_index(const basic_mask<Bytes, Abi>&);
17017+
17018+ constexpr bool all_of(@\libconcept{same_as}@<bool> auto) noexcept;
17019+ constexpr bool any_of(@\libconcept{same_as}@<bool> auto) noexcept;
17020+ constexpr bool none_of(@\libconcept{same_as}@<bool> auto) noexcept;
17021+ constexpr @\exposid{simd-size-type}@ reduce_count(@\libconcept{same_as}@<bool> auto) noexcept;
17022+ constexpr @\exposid{simd-size-type}@ reduce_min_index(@\libconcept{same_as}@<bool> auto);
17023+ constexpr @\exposid{simd-size-type}@ reduce_max_index(@\libconcept{same_as}@<bool> auto);
1702417024}
1702517025
1702617026namespace std {
0 commit comments