Subversion Repositories AFRtranscoder

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 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_ */