@@ -74,7 +74,8 @@ <h1><ins>Header <code><experimental/simd></code> synopsis</ins></h1>
7474 template<class T> inline constexpr bool is_simd_mask_v = is_simd_mask<T>::value;
7575
7676 template<class T> struct is_simd_flag_type;
77- template<class T> inline constexpr bool is_simd_flag_type_v = is_simd_flag_type<T>::value;
77+ template<class T> inline constexpr bool is_simd_flag_type_v =
78+ is_simd_flag_type<T>::value;
7879
7980 template<class T, class Abi = simd_abi::compatible<T>> struct simd_size;
8081 template<class T, class Abi = simd_abi::compatible<T>>
@@ -92,34 +93,47 @@ <h1><ins>Header <code><experimental/simd></code> synopsis</ins></h1>
9293 < cxx-ref insynopsis ="" to ="parallel.simd.mask.class "> </ cxx-ref >
9394 template<class T, class Abi = simd_abi::compatible<T>> class simd_mask;
9495 template<class T> using native_simd_mask = simd_mask<T, simd_abi::native<T>>;
95- template<class T, int N> using fixed_size_simd_mask = simd_mask<T, simd_abi::fixed_size<N>>;
96+ template<class T, int N> using fixed_size_simd_mask =
97+ simd_mask<T, simd_abi::fixed_size<N>>;
9698
9799 < cxx-ref insynopsis ="" to ="parallel.simd.casts "> </ cxx-ref >
98100 template<class T, class U, class Abi> < em > see below</ em > simd_cast(const simd<U, Abi>&);
99101 template<class T, class U, class Abi> < em > see below</ em > static_simd_cast(const simd<U, Abi>&);
100102
101103 template<class T, class Abi>
102- fixed_size_simd<T, simd_size_v<T, Abi>> to_fixed_size(const simd<T, Abi>&) noexcept;
104+ fixed_size_simd<T, simd_size_v<T, Abi>>
105+ to_fixed_size(const simd<T, Abi>&) noexcept;
103106 template<class T, class Abi>
104- fixed_size_simd_mask<T, simd_size_v<T, Abi>> to_fixed_size(const simd_mask<T, Abi>&) noexcept;
105- template<class T, int N> native_simd<T> to_native(const fixed_size_simd<T, N>&) noexcept;
106- template<class T, int N> native_simd_mask<T> to_native(const fixed_size_simd_mask<T, N>&) noexcept;
107- template<class T, int N> simd<T> to_compatible(const fixed_size_simd<T, N>&) noexcept;
108- template<class T, int N> simd_mask<T> to_compatible(const fixed_size_simd_mask<T, N>&) noexcept;
107+ fixed_size_simd_mask<T, simd_size_v<T, Abi>>
108+ to_fixed_size(const simd_mask<T, Abi>&) noexcept;
109+ template<class T, int N>
110+ native_simd<T> to_native(const fixed_size_simd<T, N>&) noexcept;
111+ template<class T, int N>
112+ native_simd_mask<T> to_native(const fixed_size_simd_mask<T, N>&) noexcept;
113+ template<class T, int N>
114+ simd<T> to_compatible(const fixed_size_simd<T, N>&) noexcept;
115+ template<class T, int N>
116+ simd_mask<T> to_compatible(const fixed_size_simd_mask<T, N>&) noexcept;
109117
110118 template<size_t... Sizes, class T, class Abi>
111- tuple<simd<T, simd_abi::deduce_t<T, Sizes>>...> split(const simd<T, Abi>&);
119+ tuple<simd<T, simd_abi::deduce_t<T, Sizes>>...>
120+ split(const simd<T, Abi>&);
112121 template<size_t... Sizes, class T, class Abi>
113- tuple<simd_mask<T, simd_mask_abi::deduce_t<T, Sizes>>...> split(const simd_mask<T, Abi>&);
122+ tuple<simd_mask<T, simd_mask_abi::deduce_t<T, Sizes>>...>
123+ split(const simd_mask<T, Abi>&);
114124 template<class V, class Abi>
115- array<V, simd_size_v<typename V::value_type, Abi> / V::size()> split(const simd<typename V::value_type, Abi>&);
125+ array<V, simd_size_v<typename V::value_type, Abi> / V::size()>
126+ split(const simd<typename V::value_type, Abi>&);
116127 template<class V, class Abi>
117- array<V, simd_size_v<typename V::value_type, Abi> / V::size()> split(const simd_mask<typename V::value_type, Abi>&);
128+ array<V, simd_size_v<typename V::value_type, Abi> / V::size()>
129+ split(const simd_mask<typename V::value_type, Abi>&);
118130
119131 template<class T, class... Abis>
120- simd<T, simd_abi::deduce_t<T, (simd_size_v<T, Abis> + ...)>> concat(const simd<T, Abis>&...);
132+ simd<T, simd_abi::deduce_t<T, (simd_size_v<T, Abis> + ...)>>
133+ concat(const simd<T, Abis>&...);
121134 template<class T, class... Abis>
122- simd_mask<T, simd_abi::deduce_t<T, (simd_size_v<T, Abis> + ...)>> concat(const simd_mask<T, Abis>&...);
135+ simd_mask<T, simd_abi::deduce_t<T, (simd_size_v<T, Abis> + ...)>>
136+ concat(const simd_mask<T, Abis>&...);
123137
124138 < cxx-ref insynopsis ="" to ="parallel.simd.mask.reductions "> </ cxx-ref >
125139 template<class T, class Abi> bool all_of(const simd_mask<T, Abi>&) noexcept;
@@ -147,51 +161,83 @@ <h1><ins>Header <code><experimental/simd></code> synopsis</ins></h1>
147161 template<class T> using nodeduce_t = typename nodeduce<T>::type; // exposition only
148162
149163 template<class T, class Abi>
150- where_expression<simd_mask<T, Abi>, simd<T, Abi>> where(const typename simd<T, Abi>::mask_type&, simd<T, Abi>&) noexcept;
164+ where_expression<simd_mask<T, Abi>, simd<T, Abi>>
165+ where(const typename simd<T, Abi>::mask_type&, simd<T, Abi>&) noexcept;
151166
152167 template<class T, class Abi>
153- const_where_expression<simd_mask<T, Abi>, simd<T, Abi>> where(const typename simd<T, Abi>::mask_type&, const simd<T, Abi>&) noexcept;
168+ const_where_expression<simd_mask<T, Abi>, simd<T, Abi>>
169+ where(const typename simd<T, Abi>::mask_type&, const simd<T, Abi>&) noexcept;
154170
155171 template<class T, class Abi>
156- where_expression<simd_mask<T, Abi>, simd_mask<T, Abi>> where(const nodeduce_t<simd_mask<T, Abit>>&, simd_mask<T, Abi>&) noexcept;
172+ where_expression<simd_mask<T, Abi>, simd_mask<T, Abi>>
173+ where(const nodeduce_t<simd_mask<T, Abit>>&, simd_mask<T, Abi>&) noexcept;
157174
158175 template<class T, class Abi>
159- const_where_expression<simd_mask<T, Abi>, simd_mask<T, Abi>> where(const nodeduce_t<simd_mask<T, Abit>>&, const simd_mask<T, Abi>&) noexcept;
176+ const_where_expression<simd_mask<T, Abi>, simd_mask<T, Abi>>
177+ where(const nodeduce_t<simd_mask<T, Abit>>&, const simd_mask<T, Abi>&) noexcept;
160178
161179 template<class T>
162- where_expression<bool, T> where(< em > see below</ em > k, T& d) noexcept;
180+ where_expression<bool, T>
181+ where(< em > see below</ em > k, T& d) noexcept;
163182
164183 template<class T>
165- const_where_expression<bool, T> where(< em > see below</ em > k, const T& d) noexcept;
184+ const_where_expression<bool, T>
185+ where(< em > see below</ em > k, const T& d) noexcept;
166186
167187 < cxx-ref insynopsis ="" to ="parallel.simd.reductions "> </ cxx-ref >
168188 template<class T, class Abi, class BinaryOperation = plus<>>
169- T reduce(const simd<T, Abi>&, BinaryOperation = {});
189+ T reduce(const simd<T, Abi>&,
190+ BinaryOperation = {});
170191
171192 template<class M, class V, class BinaryOperation>
172193 typename V::value_type reduce(const const_where_expression<M, V>& x,
173- typename V::value_type identity_element, BinaryOperation binary_op);
194+ typename V::value_type identity_element,
195+ BinaryOperation binary_op);
174196 template<class M, class V>
175- typename V::value_type reduce(const const_where_expression<M, V>& x, plus<> binary_op = {});
197+ typename V::value_type reduce(const const_where_expression<M, V>& x,
198+ plus<>
199+ binary_op = {});
176200 template<class M, class V>
177- typename V::value_type reduce(const const_where_expression<M, V>& x, multiplies<> binary_op);
201+ typename V::value_type reduce(const const_where_expression<M, V>& x,
202+ multiplies<>
203+ binary_op);
178204 template<class M, class V>
179- typename V::value_type reduce(const const_where_expression<M, V>& x, bit_and<> binary_op);
205+ typename V::value_type reduce(const const_where_expression<M, V>& x,
206+ bit_and<>
207+ binary_op);
180208 template<class M, class V>
181- typename V::value_type reduce(const const_where_expression<M, V>& x, bit_or<> binary_op);
209+ typename V::value_type reduce(const const_where_expression<M, V>& x,
210+ bit_or<>
211+ binary_op);
182212 template<class M, class V>
183- typename V::value_type reduce(const const_where_expression<M, V>& x, bit_xor<> binary_op);
213+ typename V::value_type reduce(const const_where_expression<M, V>& x,
214+ bit_xor<>
215+ binary_op);
184216
185- template<class T, class Abi> T hmin(const simd<T, abi>&);
186- template<class T, class Abi> typename V::value_type hmin(const const_where_expression<M, V>&);
187- template<class T, class Abi> T hmax(const simd<T, abi>&);
188- template<class T, class Abi> typename V::value_type hmax(const const_where_expression<M, V>&);
217+ template<class T, class Abi>
218+ T hmin(const simd<T, abi>&);
219+ template<class T, class Abi>
220+ typename V::value_type hmin(const const_where_expression<M, V>&);
221+ template<class T, class Abi>
222+ T hmax(const simd<T, abi>&);
223+ template<class T, class Abi>
224+ typename V::value_type hmax(const const_where_expression<M, V>&);
189225
190226 < cxx-ref insynopsis ="" to ="parallel.simd.alg "> </ cxx-ref >
191- template<class T, class Abi> simd<T, Abi> min(const simd<T, Abi>& a, const simd<T, Abi>& b) noexcept;
192- template<class T, class Abi> simd<T, Abi> max(const simd<T, Abi>& a, const simd<T, Abi>& b) noexcept;
193- template<class T, class Abi> pair<simd<T, Abi>, simd<T, Abi>> minmax(const simd<T, Abi>& a, const simd<T, Abi>& b) noexcept;
194- template<class T, class Abi> simd<T, Abi> clamp(const simd<T, Abi>& v, const simd<T, Abi>& lo, const simd<T, Abi>& hi) noexcept;
227+ template<class T, class Abi>
228+ simd<T, Abi>
229+ min(const simd<T, Abi>& a, const simd<T, Abi>& b) noexcept;
230+ template<class T, class Abi>
231+ simd<T, Abi>
232+ max(const simd<T, Abi>& a, const simd<T, Abi>& b) noexcept;
233+ template<class T, class Abi>
234+ pair<simd<T, Abi>, simd<T, Abi>>
235+ minmax(const simd<T, Abi>& a, const simd<T, Abi>& b) noexcept;
236+ template<class T, class Abi>
237+ simd<T, Abi>
238+ clamp(const simd<T, Abi>& v,
239+ const simd<T, Abi>& lo,
240+ const simd<T, Abi>& hi) noexcept;
195241}
196242}
197243 </ pre >
@@ -2179,9 +2225,11 @@ <h1><ins>Casts</ins></h1>
21792225 < cxx-function >
21802226 < cxx-signature > < ins >
21812227template<size_t... Sizes, class T, class Abi>
2182- tuple<simd<T, simd_abi::deduce_t<T, Sizes>>...> split(const simd<T, Abi>& x);
2228+ tuple<simd<T, simd_abi::deduce_t<T, Sizes>>...>
2229+ split(const simd<T, Abi>& x);
21832230template<size_t... Sizes, class T, class Abi>
2184- tuple<simd_mask<T, simd_abi::deduce_t<T, Sizes>>...> split(const simd_mask<T, Abi>& x);
2231+ tuple<simd_mask<T, simd_abi::deduce_t<T, Sizes>>...>
2232+ split(const simd_mask<T, Abi>& x);
21852233</ ins > </ cxx-signature >
21862234
21872235 < cxx-returns >
@@ -2200,9 +2248,11 @@ <h1><ins>Casts</ins></h1>
22002248 < cxx-function >
22012249 < cxx-signature > < ins >
22022250template<class V, class Abi>
2203- array<V, simd_size_v<typename V::value_type, Abi> / V::size()> split(const simd<typename V::value_type, Abi>& x);
2251+ array<V, simd_size_v<typename V::value_type, Abi> / V::size()>
2252+ split(const simd<typename V::value_type, Abi>& x);
22042253template<class V, class Abi>
2205- array<V, simd_size_v<typename V::value_type, Abi> / V::size()> split(const simd_mask<typename V::value_type, Abi>& x);
2254+ array<V, simd_size_v<typename V::value_type, Abi> / V::size()>
2255+ split(const simd_mask<typename V::value_type, Abi>& x);
22062256</ ins > </ cxx-signature >
22072257
22082258 < cxx-returns >
@@ -2408,7 +2458,8 @@ <h1><ins>Class template <code>simd_mask</code> overview</ins></h1>
24082458 explicit simd_mask(value_type) noexcept;
24092459
24102460 < em > // implicit type conversion constructor</ em >
2411- template<class U> simd_mask(const simd_mask<U, simd_abi::fixed_size<size()>>&) noexcept;
2461+ template<class U>
2462+ simd_mask(const simd_mask<U, simd_abi::fixed_size<size()>>&) noexcept;
24122463
24132464 < em > // load constructor</ em >
24142465 template<class Flags> simd_mask(const value_Type* mem, Flags);
0 commit comments