summaryrefslogtreecommitdiff
path: root/fw/hid-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/intrinsics_tests/intrinsics_templates.h
blob: 5872fe97c5dc029bb19fd9f885b905bd9c898094 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#ifndef _INTRINSICS_TEMPLATES_H_
#define _INTRINSICS_TEMPLATES_H_

/*--------------------------------------------------------------------------------*/
/* Includes */
/*--------------------------------------------------------------------------------*/

#include "test_templates.h"
#include <string.h>             /* memcpy() */

/*--------------------------------------------------------------------------------*/
/* Group Specific Templates */
/*--------------------------------------------------------------------------------*/

/**
* Comparison SNR thresholds for the data types used in transform_tests.
*/
#define INTRINSICS_SNR_THRESHOLD_q63_t     120
#define INTRINSICS_SNR_THRESHOLD_q31_t     95

/**
*  Compare the outputs from the function under test and the reference
*  function using SNR.
*/
#define INTRINSICS_SNR_COMPARE_INTERFACE(block_size,  \
   output_type)                                       \
   do                                                 \
   {                                                  \
      TEST_CONVERT_AND_ASSERT_SNR(                    \
         intrinsics_output_f32_ref,                   \
         (output_type##_t *) intrinsics_output_ref,   \
         intrinsics_output_f32_fut,                   \
         (output_type##_t *) intrinsics_output_fut,   \
         block_size,                                  \
         output_type,                                 \
         INTRINSICS_SNR_THRESHOLD_##output_type##_t   \
      );                                              \
   } while (0)


/*--------------------------------------------------------------------------------*/
/* TEST Templates */
/*--------------------------------------------------------------------------------*/

#define INTRINSICS_TEST_TEMPLATE_ELT1(functionName, dataType)              \
                                                                           \
   JTEST_DEFINE_TEST(functionName##_test, functionName)                    \
   {                                                                       \
      uint32_t i;                                                          \
                                                                           \
      JTEST_COUNT_CYCLES(                                                  \
         for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \
         {                                                                 \
            *((dataType##_t*)intrinsics_output_fut + i) =                  \
               functionName(                                               \
                  (dataType##_t)intrinsics_##dataType##_inputs[i]);        \
         });                                                               \
                                                                           \
      for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \
      {                                                                    \
         *((dataType##_t*)intrinsics_output_ref + i) =                     \
            ref##functionName(                                             \
               (dataType##_t)intrinsics_##dataType##_inputs[i]);           \
      }                                                                    \
                                                                           \
      INTRINSICS_SNR_COMPARE_INTERFACE(                                    \
         INTRINSICS_MAX_LEN,                                               \
         dataType);                                                        \
                                                                           \
      return JTEST_TEST_PASSED;                                            \
   }

#define INTRINSICS_TEST_TEMPLATE_ELT2(functionName, dataType)              \
                                                                           \
   JTEST_DEFINE_TEST(functionName##_test, functionName)                    \
   {                                                                       \
      uint32_t i;                                                          \
                                                                           \
      JTEST_COUNT_CYCLES(                                                  \
         for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \
         {                                                                 \
            *((dataType##_t*)intrinsics_output_fut + i) =                  \
               functionName(                                               \
                  (dataType##_t)intrinsics_##dataType##_inputs[i]          \
                  ,(dataType##_t)intrinsics_##dataType##_inputs[i]);       \
         });                                                               \
                                                                           \
      for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \
      {                                                                    \
         *((dataType##_t*)intrinsics_output_ref + i) =                     \
            ref##functionName(                                             \
               (dataType##_t)intrinsics_##dataType##_inputs[i]             \
               ,(dataType##_t)intrinsics_##dataType##_inputs[i]);          \
      }                                                                    \
                                                                           \
      INTRINSICS_SNR_COMPARE_INTERFACE(                                    \
         INTRINSICS_MAX_LEN,                                               \
         dataType);                                                        \
                                                                           \
      return JTEST_TEST_PASSED;                                            \
   }

#define INTRINSICS_TEST_TEMPLATE_ELT3(functionName, dataType)              \
                                                                           \
   JTEST_DEFINE_TEST(functionName##_test, functionName)                    \
   {                                                                       \
      uint32_t i;                                                          \
                                                                           \
      JTEST_COUNT_CYCLES(                                                  \
         for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \
         {                                                                 \
            *((dataType##_t*)intrinsics_output_fut + i) =                  \
               functionName(                                               \
                  (dataType##_t)intrinsics_##dataType##_inputs[i]          \
                  ,(dataType##_t)intrinsics_##dataType##_inputs[i]         \
                  ,(dataType##_t)intrinsics_##dataType##_inputs[i]);       \
         });                                                               \
                                                                           \
      for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \
      {                                                                    \
         *((dataType##_t*)intrinsics_output_ref + i) =                     \
            ref##functionName(                                             \
               (dataType##_t)intrinsics_##dataType##_inputs[i]             \
               ,(dataType##_t)intrinsics_##dataType##_inputs[i]            \
               ,(dataType##_t)intrinsics_##dataType##_inputs[i]);          \
      }                                                                    \
                                                                           \
      INTRINSICS_SNR_COMPARE_INTERFACE(                                    \
         INTRINSICS_MAX_LEN,                                               \
         dataType);                                                        \
                                                                           \
      return JTEST_TEST_PASSED;                                            \
   }

#define INTRINSICS_TEST_TEMPLATE_ELT4(functionName, dataType, dataType2)   \
   JTEST_DEFINE_TEST(functionName##_test, functionName)                    \
   {                                                                       \
      uint32_t i;                                                          \
                                                                           \
      JTEST_COUNT_CYCLES(                                                  \
         for(i=0;i<INTRINSICS_MAX_LEN;i++)                                 \
         {                                                                 \
            *((dataType2##_t*)intrinsics_output_fut + i) =                 \
               functionName(                                               \
                  (dataType##_t)intrinsics_##dataType##_inputs[i]          \
                  ,(dataType##_t)intrinsics_##dataType##_inputs[i]         \
                  ,(dataType2##_t)intrinsics_##dataType2##_inputs[i]);     \
         });                                                               \
                                                                           \
      for(i=0;i<INTRINSICS_MAX_LEN;i++)                                    \
      {                                                                    \
         *((dataType2##_t*)intrinsics_output_ref + i) =                    \
            ref##functionName(                                             \
               (dataType##_t)intrinsics_##dataType##_inputs[i]             \
               ,(dataType##_t)intrinsics_##dataType##_inputs[i]            \
               ,(dataType2##_t)intrinsics_##dataType2##_inputs[i]);        \
      }                                                                    \
                                                                           \
      INTRINSICS_SNR_COMPARE_INTERFACE(                                    \
         INTRINSICS_MAX_LEN,                                               \
         dataType2);                                                       \
                                                                           \
      return JTEST_TEST_PASSED;                                            \
   }

#endif /* _INTRINSICS_TEMPLATES_H_ */