6#ifndef VIR_SIMD_BITSET_H_
7#define VIR_SIMD_BITSET_H_
15 template <
typename T,
typename A>
16 std::bitset<stdx::simd_size_v<T, A>>
17 to_bitset(
const stdx::simd_mask<T, A>& k)
19#if VIR_GLIBCXX_STDX_SIMD
20 return k.__to_bitset();
22 if constexpr (stdx::simd_size_v<T, A> == 1)
26 constexpr int N = stdx::simd_size_v<T, A>;
28 for (
int i = 0; i < N; ++i)
36 std::enable_if_t<stdx::is_simd_mask_v<M>, M>
37 to_simd_mask(std::bitset<M::size()> bits)
39#if VIR_GLIBCXX_STDX_SIMD
40 return M::__from_bitset(bits);
42 if constexpr (M::size() == 1)
45 return M([bits](
size_t i) ->
bool {
return bits[i]; });
49 template <
typename T,
typename A>
51 to_simd_mask(std::bitset<stdx::simd_size_v<T, A>> bits)
52 ->
decltype(to_simd_mask<stdx::simd_mask<T, A>>(bits))
53 {
return to_simd_mask<stdx::simd_mask<T, A>>(bits); }
55 template <
typename T, std::
size_t N>
57 to_simd_mask(std::bitset<N> bits)
58 ->
decltype(to_simd_mask<stdx::simd_mask<T, stdx::simd_abi::deduce_t<T, N>>>(bits))
59 {
return to_simd_mask<stdx::simd_mask<T, stdx::simd_abi::deduce_t<T, N>>>(bits); }
This namespace collects libraries and tools authored by Matthias Kretz.
Definition constexpr_wrapper.h:21