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 5802b0c66198fc82002994d6c36bd5267f5960da
parent 3c12bbe8a8162ac2ddc0f23083044ff8280a8567
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date:   Sat, 23 Dec 2023 09:05:19 +0000

Code generation bug in Clang 13+

Diffstat:
MKNOWNBUGS.md | 1+
Mtests/unit/dsp/units.cpp | 8++++++++
2 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/KNOWNBUGS.md b/KNOWNBUGS.md @@ -8,3 +8,4 @@ | Clang 14 | x86/x86_64 | Generic | Code generation bug in Clang | | GCC 12 | x86/x86_64 | AVX512 | Code generation bug in GCC | | Clang 10 | ARM, ARM64 | | Code generation bug in Clang https://github.com/kfrlib/kfr/issues/112 | +| Clang 13+ | ARM, ARM64 | | Code generation bug in Clang in `kfr::exp` | diff --git a/tests/unit/dsp/units.cpp b/tests/unit/dsp/units.cpp @@ -46,12 +46,20 @@ TEST(amp_to_dB) TEST(dB_to_amp) { +#if defined __clang__ && defined(CMT_ARCH_ARM) && __clang_major__ >= 13 + // Clang 13+ compiler bug on ARM +#else testo::epsilon_scope<void> eps(1000); + CHECK(kfr::exp(fbase(-HUGE_VAL)) == fbase(0.0)); + CHECK(kfr::exp2(fbase(-HUGE_VAL)) == fbase(0.0)); + CHECK(kfr::exp10(fbase(-HUGE_VAL)) == fbase(0.0)); + CHECK(kfr::dB_to_amp(fbase(-HUGE_VAL)) == fbase(0.0)); CHECK(kfr::dB_to_amp(fbase(0.0)) == fbase(1.0)); CHECK(kfr::dB_to_amp(fbase(6.0205999132796239042747778944899)) == fbase(2.0)); CHECK(kfr::dB_to_amp(fbase(-6.0205999132796239042747778944899)) == fbase(0.5)); +#endif } } // namespace CMT_ARCH_NAME