Subversion Repositories AFRtranscoder

Rev

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

  1. #ifndef _INTRINSICS_TEMPLATES_H_
  2. #define _INTRINSICS_TEMPLATES_H_
  3.  
  4. /*--------------------------------------------------------------------------------*/
  5. /* Includes */
  6. /*--------------------------------------------------------------------------------*/
  7.  
  8. #include "test_templates.h"
  9. #include <string.h>             /* memcpy() */
  10.  
  11. /*--------------------------------------------------------------------------------*/
  12. /* Group Specific Templates */
  13. /*--------------------------------------------------------------------------------*/
  14.  
  15. /**
  16. * Comparison SNR thresholds for the data types used in transform_tests.
  17. */
  18. #define INTRINSICS_SNR_THRESHOLD_q63_t     120
  19. #define INTRINSICS_SNR_THRESHOLD_q31_t     95
  20.  
  21. /**
  22. *  Compare the outputs from the function under test and the reference
  23. *  function using SNR.
  24. */
  25. #define INTRINSICS_SNR_COMPARE_INTERFACE(block_size,  \
  26.    output_type)                                       \
  27.    do                                                 \
  28.    {                                                  \
  29.       TEST_CONVERT_AND_ASSERT_SNR(                    \
  30.          intrinsics_output_f32_ref,                   \
  31.          (output_type##_t *) intrinsics_output_ref,   \
  32.          intrinsics_output_f32_fut,                   \
  33.          (output_type##_t *) intrinsics_output_fut,   \
  34.          block_size,                                  \
  35.          output_type,                                 \
  36.          INTRINSICS_SNR_THRESHOLD_##output_type##_t   \
  37.       );                                              \
  38.    } while (0)
  39.  
  40.  
  41. /*--------------------------------------------------------------------------------*/
  42. /* TEST Templates */
  43. /*--------------------------------------------------------------------------------*/
  44.  
  45. #define INTRINSICS_TEST_TEMPLATE_ELT1(functionName, dataType)              \
  46.                                                                            \
  47.    JTEST_DEFINE_TEST(functionName##_test, functionName)                    \
  48.    {                                                                       \
  49.       uint32_t i;                                                          \
  50.                                                                            \
  51.       JTEST_COUNT_CYCLES(                                                  \
  52.          for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \
  53.          {                                                                 \
  54.             *((dataType##_t*)intrinsics_output_fut + i) =                  \
  55.                functionName(                                               \
  56.                   (dataType##_t)intrinsics_##dataType##_inputs[i]);        \
  57.          });                                                               \
  58.                                                                            \
  59.       for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \
  60.       {                                                                    \
  61.          *((dataType##_t*)intrinsics_output_ref + i) =                     \
  62.             ref##functionName(                                             \
  63.                (dataType##_t)intrinsics_##dataType##_inputs[i]);           \
  64.       }                                                                    \
  65.                                                                            \
  66.       INTRINSICS_SNR_COMPARE_INTERFACE(                                    \
  67.          INTRINSICS_MAX_LEN,                                               \
  68.          dataType);                                                        \
  69.                                                                            \
  70.       return JTEST_TEST_PASSED;                                            \
  71.    }
  72.  
  73. #define INTRINSICS_TEST_TEMPLATE_ELT2(functionName, dataType)              \
  74.                                                                            \
  75.    JTEST_DEFINE_TEST(functionName##_test, functionName)                    \
  76.    {                                                                       \
  77.       uint32_t i;                                                          \
  78.                                                                            \
  79.       JTEST_COUNT_CYCLES(                                                  \
  80.          for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \
  81.          {                                                                 \
  82.             *((dataType##_t*)intrinsics_output_fut + i) =                  \
  83.                functionName(                                               \
  84.                   (dataType##_t)intrinsics_##dataType##_inputs[i]          \
  85.                   ,(dataType##_t)intrinsics_##dataType##_inputs[i]);       \
  86.          });                                                               \
  87.                                                                            \
  88.       for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \
  89.       {                                                                    \
  90.          *((dataType##_t*)intrinsics_output_ref + i) =                     \
  91.             ref##functionName(                                             \
  92.                (dataType##_t)intrinsics_##dataType##_inputs[i]             \
  93.                ,(dataType##_t)intrinsics_##dataType##_inputs[i]);          \
  94.       }                                                                    \
  95.                                                                            \
  96.       INTRINSICS_SNR_COMPARE_INTERFACE(                                    \
  97.          INTRINSICS_MAX_LEN,                                               \
  98.          dataType);                                                        \
  99.                                                                            \
  100.       return JTEST_TEST_PASSED;                                            \
  101.    }
  102.  
  103. #define INTRINSICS_TEST_TEMPLATE_ELT3(functionName, dataType)              \
  104.                                                                            \
  105.    JTEST_DEFINE_TEST(functionName##_test, functionName)                    \
  106.    {                                                                       \
  107.       uint32_t i;                                                          \
  108.                                                                            \
  109.       JTEST_COUNT_CYCLES(                                                  \
  110.          for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \
  111.          {                                                                 \
  112.             *((dataType##_t*)intrinsics_output_fut + i) =                  \
  113.                functionName(                                               \
  114.                   (dataType##_t)intrinsics_##dataType##_inputs[i]          \
  115.                   ,(dataType##_t)intrinsics_##dataType##_inputs[i]         \
  116.                   ,(dataType##_t)intrinsics_##dataType##_inputs[i]);       \
  117.          });                                                               \
  118.                                                                            \
  119.       for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \
  120.       {                                                                    \
  121.          *((dataType##_t*)intrinsics_output_ref + i) =                     \
  122.             ref##functionName(                                             \
  123.                (dataType##_t)intrinsics_##dataType##_inputs[i]             \
  124.                ,(dataType##_t)intrinsics_##dataType##_inputs[i]            \
  125.                ,(dataType##_t)intrinsics_##dataType##_inputs[i]);          \
  126.       }                                                                    \
  127.                                                                            \
  128.       INTRINSICS_SNR_COMPARE_INTERFACE(                                    \
  129.          INTRINSICS_MAX_LEN,                                               \
  130.          dataType);                                                        \
  131.                                                                            \
  132.       return JTEST_TEST_PASSED;                                            \
  133.    }
  134.  
  135. #define INTRINSICS_TEST_TEMPLATE_ELT4(functionName, dataType, dataType2)   \
  136.    JTEST_DEFINE_TEST(functionName##_test, functionName)                    \
  137.    {                                                                       \
  138.       uint32_t i;                                                          \
  139.                                                                            \
  140.       JTEST_COUNT_CYCLES(                                                  \
  141.          for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \
  142.          {                                                                 \
  143.             *((dataType2##_t*)intrinsics_output_fut + i) =                 \
  144.                functionName(                                               \
  145.                   (dataType##_t)intrinsics_##dataType##_inputs[i]          \
  146.                   ,(dataType##_t)intrinsics_##dataType##_inputs[i]         \
  147.                   ,(dataType2##_t)intrinsics_##dataType2##_inputs[i]);     \
  148.          });                                                               \
  149.                                                                            \
  150.       for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \
  151.       {                                                                    \
  152.          *((dataType2##_t*)intrinsics_output_ref + i) =                    \
  153.             ref##functionName(                                             \
  154.                (dataType##_t)intrinsics_##dataType##_inputs[i]             \
  155.                ,(dataType##_t)intrinsics_##dataType##_inputs[i]            \
  156.                ,(dataType2##_t)intrinsics_##dataType2##_inputs[i]);        \
  157.       }                                                                    \
  158.                                                                            \
  159.       INTRINSICS_SNR_COMPARE_INTERFACE(                                    \
  160.          INTRINSICS_MAX_LEN,                                               \
  161.          dataType2);                                                       \
  162.                                                                            \
  163.       return JTEST_TEST_PASSED;                                            \
  164.    }
  165.  
  166. #endif /* _INTRINSICS_TEMPLATES_H_ */
  167.