commit a6f87e8e9120160f7188d6c23ec8b1fa7958ec35
parent 1e668ff56a04c2f91401d36cc65e8138fb2f5990
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Wed, 12 Oct 2022 16:30:52 +0100
Fix scatter namespace
Diffstat:
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/include/kfr/simd/read_write.hpp b/include/kfr/simd/read_write.hpp
@@ -109,16 +109,19 @@ KFR_INTRINSIC vec<T, Nout> gather_stride(const T* base)
return internal::gather_stride<Nout, Stride>(base, csizeseq<Nout>);
}
+namespace internal
+{
template <size_t groupsize, typename T, size_t N, typename IT, size_t... Indices>
KFR_INTRINSIC vec<T, N * groupsize> gather_helper(const T* base, const vec<IT, N>& offset,
csizes_t<Indices...>)
{
return concat(read<groupsize>(base + groupsize * offset[Indices])...);
}
+}
template <size_t groupsize = 1, typename T, size_t N, typename IT>
KFR_INTRINSIC vec<T, N * groupsize> gather(const T* base, const vec<IT, N>& offset)
{
- return gather_helper<groupsize>(base, offset, csizeseq<N>);
+ return internal::gather_helper<groupsize>(base, offset, csizeseq<N>);
}
namespace internal
@@ -141,7 +144,7 @@ KFR_INTRINSIC void scatter_helper_s(T* base, size_t stride, const vec<T, N>& val
template <size_t groupsize = 1, typename T, size_t N, size_t Nout = N* groupsize, typename IT>
KFR_INTRINSIC void scatter(T* base, const vec<IT, N>& offset, const vec<T, Nout>& value)
{
- return scatter_helper<groupsize>(base, offset, value, csizeseq<N>);
+ return internal::scatter_helper<groupsize>(base, offset, value, csizeseq<N>);
}
template <size_t groupsize = 1, typename T, size_t N>