Subversion Repositories ScreenTimer

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #include "jtest.h"
  2. #include "ref.h"
  3. #include "arr_desc.h"
  4. #include "transform_templates.h"
  5. #include "transform_test_data.h"
  6. #include "type_abbrev.h"
  7.  
  8. /*
  9.   FFT function test template. Arguments are: function suffix (q7/q15/q31/f32)
  10.   function configuration suffix (same as function suffix), inverse-transform flag,
  11.   input and output type (both q7_t/q15_t/q31_t/float32_t)
  12. */
  13. #define RFFT_DEFINE_TEST(suffix, config_suffix,                         \
  14.                          ifft_flag, input_type, output_type)            \
  15.     JTEST_DEFINE_TEST(arm_rfft_##suffix##_##config_suffix##_test,       \
  16.                       arm_rfft_##suffix)                                \
  17.     {                                                                   \
  18.         CONCAT(arm_rfft_instance_, suffix) rfft_inst_fut = {0};         \
  19.         CONCAT(arm_rfft_instance_, suffix) rfft_inst_ref = {0};         \
  20.                                                                         \
  21.         /* Go through all arm_rfft lengths */                           \
  22.         TEMPLATE_DO_ARR_DESC(                                           \
  23.             fftlen_idx, uint16_t, fftlen, transform_rfft_fftlens        \
  24.             ,                                                           \
  25.                                                                         \
  26.             /* Initialize the RFFT and CFFT Instances */                \
  27.             arm_rfft_init_##suffix(                                     \
  28.                 &rfft_inst_fut,                                         \
  29.                 (uint32_t) fftlen, ifft_flag, 1U);                      \
  30.                                                                         \
  31.             arm_rfft_init_##suffix(                                     \
  32.                 &rfft_inst_ref,                                         \
  33.                 (uint32_t) fftlen, ifft_flag, 1U);                      \
  34.                                                                         \
  35.             if (ifft_flag)                                               \
  36.             {                                                           \
  37.                TRANSFORM_PREPARE_INVERSE_INPUTS(                        \
  38.                    transform_fft_##suffix##_inputs,                     \
  39.                    fftlen, input_type,                                  \
  40.                    fftlen *                                             \
  41.                    sizeof(input_type));                                 \
  42.             }                                                           \
  43.             else                                                        \
  44.             {                                                           \
  45.                TRANSFORM_COPY_INPUTS(                                   \
  46.                    transform_fft_##suffix##_inputs,                     \
  47.                    fftlen *                                             \
  48.                    sizeof(input_type));                                 \
  49.             }                                                           \
  50.                                                                         \
  51.             /* Display parameter values */                              \
  52.             JTEST_DUMP_STRF("Block Size: %d\n"                          \
  53.                             "Inverse-transform flag: %d\n",             \
  54.                          (int)fftlen,                                   \
  55.                          (int)ifft_flag);                               \
  56.                                                                         \
  57.             /* Display cycle count and run test */                      \
  58.             JTEST_COUNT_CYCLES(                                         \
  59.                 arm_rfft_##suffix(                                      \
  60.                     &rfft_inst_fut,                                     \
  61.                     (void *) transform_fft_input_fut,                   \
  62.                     (void *) transform_fft_output_fut));                \
  63.                                                                         \
  64.             ref_rfft_##suffix(                                          \
  65.                 &rfft_inst_ref,                                         \
  66.                 (void *) transform_fft_input_ref,                       \
  67.                 (void *) transform_fft_output_ref);                     \
  68.                                                                         \
  69.             /* Test correctness */                                      \
  70.             TRANSFORM_SNR_COMPARE_INTERFACE(                            \
  71.                 fftlen,                                                 \
  72.                 output_type));                                          \
  73.                                                                         \
  74.             return JTEST_TEST_PASSED;                                   \
  75.     }
  76.  
  77. RFFT_DEFINE_TEST(q31, forward, 0U, TYPE_FROM_ABBREV(q31), TYPE_FROM_ABBREV(q31));
  78. RFFT_DEFINE_TEST(q15, forward, 0U, TYPE_FROM_ABBREV(q15), TYPE_FROM_ABBREV(q15));
  79. //RFFT_DEFINE_TEST(f32, inverse, 1U, TYPE_FROM_ABBREV(f32), TYPE_FROM_ABBREV(f32));
  80. RFFT_DEFINE_TEST(q31, inverse, 1U, TYPE_FROM_ABBREV(q31), TYPE_FROM_ABBREV(q31));
  81. RFFT_DEFINE_TEST(q15, inverse, 1U, TYPE_FROM_ABBREV(q15), TYPE_FROM_ABBREV(q15));
  82.  
  83. /*--------------------------------------------------------------------------------*/
  84. /* Collect all tests in a group */
  85. /*--------------------------------------------------------------------------------*/
  86.  
  87. JTEST_DEFINE_GROUP(rfft_tests)
  88. {
  89.     JTEST_TEST_CALL(arm_rfft_q31_forward_test);
  90.     JTEST_TEST_CALL(arm_rfft_q15_forward_test);
  91.     //JTEST_TEST_CALL(arm_rfft_f32_inverse_test);
  92.     JTEST_TEST_CALL(arm_rfft_q31_inverse_test);
  93.     JTEST_TEST_CALL(arm_rfft_q15_inverse_test);
  94. }
  95.