summaryrefslogtreecommitdiff
path: root/cdc-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_templates.h
blob: bc94791ba0a759df8d56bec806f357deafae33ec (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
#ifndef _SUPPORT_TEMPLATES_H_
#define _SUPPORT_TEMPLATES_H_

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

#include "test_templates.h"

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

/**
 *  Compare the outputs from the function under test and the reference function.
 */
#define SUPPORT_COMPARE_INTERFACE(block_size,   \
                                  output_type)  \
    do                                          \
    {                                           \
        TEST_ASSERT_BUFFERS_EQUAL(              \
            support_output_ref.data_ptr,        \
            support_output_fut.data_ptr,        \
            block_size * sizeof(output_type));  \
    } while (0)                                  \

/*--------------------------------------------------------------------------------*/
/* Input Interfaces */
/*--------------------------------------------------------------------------------*/
/*
 *  General:
 *  Input interfaces provide inputs to functions inside test templates.  They
 *  ONLY provide the inputs.  The output variables should be hard coded.
 *
 *  The input interfaces must have the following format:
 *
 *  ARM_xxx_INPUT_INTERFACE() or
 *  REF_xxx_INPUT_INTERFACE()
 *
 *  The xxx must be lowercase, and is intended to be the indentifying substring
 *  in the function's name.  Acceptable values are 'sub' or 'add' from the
 *  functions arm_add_q31.
 */

#define ARM_copy_INPUT_INTERFACE(input, block_size)         \
    PAREN(input, support_output_fut.data_ptr, block_size)

#define REF_copy_INPUT_INTERFACE(input, block_size)         \
    PAREN(input, support_output_ref.data_ptr, block_size)

#define ARM_fill_INPUT_INTERFACE(elt, block_size)       \
    PAREN(elt, support_output_fut.data_ptr, block_size)

#define REF_fill_INPUT_INTERFACE(elt, block_size)       \
    PAREN(elt, support_output_ref.data_ptr, block_size)

#define ARM_x_to_y_INPUT_INTERFACE(input, block_size)       \
    PAREN(input, support_output_fut.data_ptr, block_size)

#define REF_x_to_y_INPUT_INTERFACE(input, block_size)       \
    PAREN(input, support_output_ref.data_ptr, block_size)

/*--------------------------------------------------------------------------------*/
/* Test Templates */
/*--------------------------------------------------------------------------------*/


/**
 *  Specialization of #TEST_TEMPLATE_BUF1_BLK() for support tests.
 *
 *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and
 *  REF_xxx_INPUT_INTERFACEs.
 */
#define SUPPORT_DEFINE_TEST_TEMPLATE_BUF1_BLK(fn_name,              \
                                              suffix,               \
                                              input_type,           \
                                              output_type,          \
                                              comparison_interface) \
    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,              \
                      arm_##fn_name##_##suffix)                     \
    {                                                               \
        TEST_TEMPLATE_BUF1_BLK(                                     \
            support_f_all,                                          \
            support_block_sizes,                                    \
            input_type,                                             \
            output_type,                                            \
            arm_##fn_name##_##suffix,                               \
            ARM_##fn_name##_INPUT_INTERFACE,                        \
            ref_##fn_name##_##suffix,                               \
            REF_##fn_name##_INPUT_INTERFACE,                        \
            comparison_interface);                                  \
    }

/**
 *  Specialization of #TEST_TEMPLATE_ELT1_BLK() for support tests.
 *
 *  @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and
 *  REF_xxx_INPUT_INTERFACEs.
 */
#define SUPPORT_DEFINE_TEST_TEMPLATE_ELT1_BLK(fn_name,              \
                                              suffix,               \
                                              elt_type,             \
                                              output_type,          \
                                              comparison_interface) \
    JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test,              \
                      arm_##fn_name##_##suffix)                     \
    {                                                               \
        TEST_TEMPLATE_ELT1_BLK(                                     \
            support_elts,                                           \
            support_block_sizes,                                    \
            elt_type,                                               \
            output_type,                                            \
            arm_##fn_name##_##suffix,                               \
            ARM_##fn_name##_INPUT_INTERFACE,                        \
            ref_##fn_name##_##suffix,                               \
            REF_##fn_name##_INPUT_INTERFACE,                        \
            comparison_interface);                                  \
    }

#endif /* _SUPPORT_TEMPLATES_H_ */