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