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 37503a1dd5db8f45df55599ea1de5927a821fbb9
parent b55a59872155ff669d334e87385f5a672dcbb483
Author: bmanga <[email protected]>
Date:   Tue,  9 Jul 2019 16:11:33 +0100

Additional fixes

Diffstat:
MCMakeLists.txt | 8+++++---
Minclude/kfr/cometa.hpp | 3+--
Minclude/kfr/dft/impl/dft-impl.hpp | 4++--
Minclude/kfr/dft/impl/fft-impl.hpp | 4++--
4 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt @@ -57,9 +57,11 @@ include(sources.cmake) option(ENABLE_TESTS "Enable tests and examples" OFF) option(ENABLE_DFT "Enable DFT and related algorithms." ON) -if (X86) - option(ENABLE_DFT_MULTIARCH "Build DFT static libraries for various architectures." OFF) -endif () +if (CLANG) + if (X86) + option(ENABLE_DFT_MULTIARCH "Build DFT static libraries for various architectures. Requires Clang" OFF) + endif () +endif() option(ENABLE_ASMTEST "Enable writing disassembly" OFF) option(REGENERATE_TESTS "Regenerate auto tests" OFF) option(DISABLE_CLANG_EXTENSIONS "Disable Clang vector extensions" OFF) diff --git a/include/kfr/cometa.hpp b/include/kfr/cometa.hpp @@ -2022,8 +2022,7 @@ struct special_value CMT_PRAGMA_GNU(GCC diagnostic ignored "-Wuninitialized") CMT_PRAGMA_GNU(GCC diagnostic ignored "-Wmaybe-uninitialized") case special_constant::undefined: - T undef; - return undef; + return T{}; CMT_PRAGMA_GNU(GCC diagnostic pop) case special_constant::default_constructed: return T{}; diff --git a/include/kfr/dft/impl/dft-impl.hpp b/include/kfr/dft/impl/dft-impl.hpp @@ -465,12 +465,12 @@ void prepare_dft_stage(dft_plan<T>* self, size_t radix, size_t iterations, size_ return cswitch( dft_radices, radix, [self, iterations, blocks](auto radix) CMT_INLINE_LAMBDA { - self->template add_stage<conditional<is_final, intrinsics::dft_stage_fixed_final_impl<T, val_of(radix)>, + add_stage<conditional<is_final, intrinsics::dft_stage_fixed_final_impl<T, val_of(radix)>, intrinsics::dft_stage_fixed_impl<T, val_of(radix)>>>(self, radix, iterations, blocks); }, [self, radix, iterations, blocks]() { - self->template add_stage<intrinsics::dft_stage_generic_impl<T, is_final>>(self, radix, iterations, blocks); + add_stage<intrinsics::dft_stage_generic_impl<T, is_final>>(self, radix, iterations, blocks); }); } diff --git a/include/kfr/dft/impl/fft-impl.hpp b/include/kfr/dft/impl/fft-impl.hpp @@ -840,7 +840,7 @@ struct fft_specialization<T, 10> : fft_final_stage_impl<T, false, 1024> } // namespace intrinsics template <bool is_even, bool first, typename T> -KFR_INTRINSIC void make_fft(dft_plan<T>* self, size_t stage_size, cbool_t<is_even>, cbool_t<first>) +void make_fft(dft_plan<T>* self, size_t stage_size, cbool_t<is_even>, cbool_t<first>) { constexpr size_t final_size = is_even ? 1024 : 512; @@ -1089,7 +1089,7 @@ public: { using namespace intrinsics; constexpr size_t width = vector_width<T> * 2; - const size_t real_size = this->stage_size; + size_t real_size = this->stage_size; complex<T>* rtwiddle = ptr_cast<complex<T>>(this->data); block_process(real_size / 4, csizes_t<width, 1>(), [=](size_t i, auto w) { constexpr size_t width = val_of(decltype(w)());