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:
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