summaryrefslogtreecommitdiff
path: root/fw/hid-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'fw/hid-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c')
-rw-r--r--fw/hid-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c144
1 files changed, 144 insertions, 0 deletions
diff --git a/fw/hid-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c b/fw/hid-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c
new file mode 100644
index 0000000..f26c6f6
--- /dev/null
+++ b/fw/hid-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c
@@ -0,0 +1,144 @@
+#include "jtest.h"
+#include "ref.h"
+#include "arr_desc.h"
+#include "transform_templates.h"
+#include "transform_test_data.h"
+
+#define CFFT_SNR_THRESHOLD 120
+
+/*
+ CFFT function test template. Arguments are: inverse-transform flag, function
+ suffix (q7/q15/q31/f32) and the output type (q7_t, q15_t, q31_t, float32_t)
+*/
+#define CFFT_TEST_BODY(ifft_flag, suffix, output_type) \
+ do \
+ { \
+ /* Go through all arm_cfft_instances */ \
+ TEMPLATE_DO_ARR_DESC( \
+ cfft_inst_idx, const arm_cfft_instance_##suffix *, cfft_inst_ptr, \
+ transform_cfft_##suffix##_structs \
+ , \
+ \
+ TRANSFORM_PREPARE_INPLACE_INPUTS( \
+ transform_fft_##suffix##_inputs, \
+ cfft_inst_ptr->fftLen * \
+ sizeof(output_type) * \
+ 2 /*complex_inputs*/); \
+ \
+ /* Display parameter values */ \
+ JTEST_DUMP_STRF("Block Size: %d\n" \
+ "Inverse-transform flag: %d\n", \
+ (int)cfft_inst_ptr->fftLen, \
+ (int)ifft_flag); \
+ \
+ /* Display cycle count and run test */ \
+ JTEST_COUNT_CYCLES( \
+ arm_cfft_##suffix(cfft_inst_ptr, \
+ (void *) transform_fft_inplace_input_fut, \
+ ifft_flag, /* IFFT Flag */ \
+ 1)); /* Bitreverse flag */ \
+ ref_cfft_##suffix(cfft_inst_ptr, \
+ (void *) transform_fft_inplace_input_ref, \
+ ifft_flag, /* IFFT Flag */ \
+ 1); /* Bitreverse flag */ \
+ \
+ /* Test correctness */ \
+ TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE( \
+ cfft_inst_ptr->fftLen, \
+ output_type)); \
+ \
+ return JTEST_TEST_PASSED; \
+ } while (0)
+
+
+/*
+ CFFT function with downshift test template. Arguments are: inverse-transform flag,
+ function suffix (q7/q15/q31/f32) and the output type (q7_t, q15_t, q31_t, float32_t)
+*/
+#define CFFT_DOWNSHIFT_INPUT_TEST_BODY(ifft_flag, suffix, output_type) \
+ do \
+ { \
+ /* Go through all arm_cfft_instances */ \
+ TEMPLATE_DO_ARR_DESC( \
+ cfft_inst_idx, const arm_cfft_instance_##suffix *, cfft_inst_ptr, \
+ transform_cfft_##suffix##_structs \
+ , \
+ \
+ TRANSFORM_PREPARE_INPLACE_INPUTS_DOWNSHIFT( \
+ transform_fft_##suffix##_inputs, \
+ cfft_inst_ptr->fftLen * \
+ sizeof(output_type) * \
+ 2 /*complex_inputs*/, output_type); \
+ \
+ /* Display parameter values */ \
+ JTEST_DUMP_STRF("Block Size: %d\n" \
+ "Inverse-transform flag: %d\n", \
+ (int)cfft_inst_ptr->fftLen, \
+ (int)ifft_flag); \
+ \
+ /* Display cycle count and run test */ \
+ JTEST_COUNT_CYCLES( \
+ arm_cfft_##suffix(cfft_inst_ptr, \
+ (void *) transform_fft_inplace_input_fut, \
+ ifft_flag, /* IFFT Flag */ \
+ 1)); /* Bitreverse flag */ \
+ ref_cfft_##suffix(cfft_inst_ptr, \
+ (void *) transform_fft_inplace_input_ref, \
+ ifft_flag, /* IFFT Flag */ \
+ 1); /* Bitreverse flag */ \
+ \
+ /* Test correctness */ \
+ TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE( \
+ cfft_inst_ptr->fftLen, \
+ output_type)); \
+ \
+ return JTEST_TEST_PASSED; \
+ } while (0)
+
+
+/* Test declarations */
+JTEST_DEFINE_TEST(cfft_f32_test, cfft_f32)
+{
+ CFFT_TEST_BODY((uint8_t) 0, f32, float32_t);
+}
+
+JTEST_DEFINE_TEST(cfft_f32_ifft_test, cfft_f32)
+{
+ CFFT_TEST_BODY((uint8_t) 1, f32, float32_t);
+}
+
+JTEST_DEFINE_TEST(cfft_q31_test, cfft_q31)
+{
+ CFFT_TEST_BODY((uint8_t) 0, q31, q31_t);
+}
+
+JTEST_DEFINE_TEST(cfft_q31_ifft_test, cfft_q31)
+{
+ CFFT_TEST_BODY((uint8_t) 1, q31, q31_t);
+}
+
+JTEST_DEFINE_TEST(cfft_q15_test, cfft_q15)
+{
+ CFFT_TEST_BODY((uint8_t) 0, q15, q15_t);
+}
+
+JTEST_DEFINE_TEST(cfft_q15_ifft_test, cfft_q15)
+{
+ CFFT_TEST_BODY((uint8_t) 1, q15, q15_t);
+}
+
+/*--------------------------------------------------------------------------------*/
+/* Collect all tests in a group */
+/*--------------------------------------------------------------------------------*/
+
+JTEST_DEFINE_GROUP(cfft_tests)
+{
+ JTEST_TEST_CALL(cfft_f32_test);
+ JTEST_TEST_CALL(cfft_f32_ifft_test);
+
+ JTEST_TEST_CALL(cfft_q31_test);
+ JTEST_TEST_CALL(cfft_q31_ifft_test);
+
+ JTEST_TEST_CALL(cfft_q15_test);
+ JTEST_TEST_CALL(cfft_q15_ifft_test);
+}