MUDA
Loading...
Searching...
No Matches
masked_swap.h
1#pragma once
2#include <muda/muda_def.h>
3#include <array>
4#include <bitset>
5namespace muda::details::buffer
6{
7MUDA_INLINE void swap(bool b, size_t& l, size_t& r) MUDA_NOEXCEPT
8{
9 if(b)
10 {
11 size_t tmp = l;
12 l = r;
13 r = tmp;
14 }
15}
16
17template <size_t N>
18MUDA_INLINE void swap(std::bitset<N> mask,
19 std::array<size_t, N>& lhs,
20 std::array<size_t, N>& rhs) MUDA_NOEXCEPT
21{
22#pragma unroll
23 for(size_t i = 0; i < N; ++i)
24 swap(mask[i], lhs[i], rhs[i]);
25}
26} // namespace muda::details::buffer