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