25 #ifndef _GLIBCXX_SIMD_MASK_REDUCTIONS_H
26 #define _GLIBCXX_SIMD_MASK_REDUCTIONS_H 1
28 #ifdef _GLIBCXX_SYSHDR
29 #pragma GCC system_header
32 #if __cplusplus >= 202400L
34 #include "simd_mask.h"
37 #pragma GCC diagnostic push
38 #pragma GCC diagnostic ignored "-Wpsabi"
41 namespace std _GLIBCXX_VISIBILITY(default)
43 _GLIBCXX_BEGIN_NAMESPACE_VERSION
46 template <
size_t _Bytes,
typename _Ap>
47 [[__gnu__::__always_inline__]]
49 all_of(
const basic_mask<_Bytes, _Ap>& __k) noexcept
50 {
return __k._M_all_of(); }
52 template <
size_t _Bytes,
typename _Ap>
53 [[__gnu__::__always_inline__]]
55 any_of(
const basic_mask<_Bytes, _Ap>& __k) noexcept
56 {
return __k._M_any_of(); }
58 template <
size_t _Bytes,
typename _Ap>
59 [[__gnu__::__always_inline__]]
61 none_of(
const basic_mask<_Bytes, _Ap>& __k) noexcept
62 {
return __k._M_none_of(); }
64 template <
size_t _Bytes,
typename _Ap>
65 [[__gnu__::__always_inline__]]
66 constexpr __simd_size_type
67 reduce_count(
const basic_mask<_Bytes, _Ap>& __k) noexcept
69 if constexpr (_Ap::_S_size == 1)
71 else if constexpr (_Ap::_S_is_vecmask)
74 return __k._M_reduce_count();
77 template <
size_t _Bytes, typename _Ap>
78 [[__gnu__::__always_inline__]]
79 constexpr __simd_size_type
80 reduce_min_index(const basic_mask<_Bytes, _Ap>& __k)
81 {
return __k._M_reduce_min_index(); }
83 template <
size_t _Bytes,
typename _Ap>
84 [[__gnu__::__always_inline__]]
85 constexpr __simd_size_type
86 reduce_max_index(
const basic_mask<_Bytes, _Ap>& __k)
87 {
return __k._M_reduce_max_index(); }
90 all_of(same_as<bool>
auto __x) noexcept
94 any_of(same_as<bool>
auto __x) noexcept
98 none_of(same_as<bool>
auto __x) noexcept
101 constexpr __simd_size_type
102 reduce_count(same_as<bool>
auto __x) noexcept
105 constexpr __simd_size_type
106 reduce_min_index(same_as<bool>
auto __x)
109 constexpr __simd_size_type
110 reduce_max_index(same_as<bool>
auto __x)
113 _GLIBCXX_END_NAMESPACE_VERSION
116 #pragma GCC diagnostic pop
constexpr _Tp reduce(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOperation __binary_op)
Calculate reduction of values in a range.
ISO C++ entities toplevel namespace is std.