kfr

Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON)
Log | Files | Refs | README

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:
Minclude/kfr/simd/read_write.hpp | 7+++++--
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>