FFTLIB User Guide
c7120/FFTLIB_types.h
Go to the documentation of this file.
1 /******************************************************************************
2  * *
3  * module name :FFTLIB *
4  * *
5  * module descripton :Matrix Multiply Accelerator Library module for C7x+MMA *
6  * *
7  * Copyright (C) 2017-2018 Texas Instruments Incorporated - https://www.ti.com/ *
8  * ALL RIGHTS RESERVED *
9  * *
10  ******************************************************************************/
11 
23 #ifndef C7120_FFTLIB_TYPES_H_
24 #define C7120_FFTLIB_TYPES_H_ 1
25 
26 #include <c7x.h> // for streaming engine, streaming address gen.
27 
31 
32 
33 
34 #ifdef __cplusplus
35 #include <c7x_scalable.h> // for device scalability
36 
37 /******************************************************************************
38  *
39  * PREDEFINED VECTORS
40  *
41  ******************************************************************************/
42 
43 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_1;
44 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_2;
45 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_3;
46 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_4;
47 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_5;
48 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_6;
49 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_7;
50 
51 // permutation register values for 32-bit bias
52 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_1;
53 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_1;
54 
55 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_2;
56 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_2;
57 
58 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_3;
59 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_3;
60 
61 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_4;
62 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_4;
63 
64 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_5;
65 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_5;
66 
67 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_6;
68 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_6;
69 
70 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_7;
71 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_7;
72 
73 // permutation register values for 64-bit bias
74 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_64bit_No_1;
75 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_64bit_No_1;
76 
77 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_64bit_No_2;
78 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_64bit_No_2;
79 
80 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_64bit_No_3;
81 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_64bit_No_3;
82 
83 // split groups
84 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_1;
85 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_2;
86 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_3;
87 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_4;
88 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_5;
89 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_6;
90 extern const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_7;
91 
92 // permutation register values for 32-bit bias, split groups
95 
98 
101 
104 
107 
110 
113 
114 // permutation register values for 64-bit bias, split groups
117 
120 
123 
124 extern "C" {
125 #endif /* __cplusplus */
126 
134 /* @{ */
135 
136 /*******************************************************************************
137  *
138  * TYPEDEFS
139  *
140  ******************************************************************************/
141 
144 typedef enum {
150 } FFTLIB_activation_type_e; // formerly eMMAActivationType;
151 
152 
154  typedef enum {
158 
160  typedef enum {
164 
167 
169  typedef enum {
174  /*******************************************************************************
175  *
176  * DEFINES
177  *
178  ******************************************************************************/
179 
180 #define FFTLIB_BYTE_WIDTH 64
181 
182  /* ---------------------------------------------------------------- */
183  /* MISRAC Rule 4.9(DEFINE.FUNC) Deviation: The advisory is not */
184  /* being addressed */
185  /* ---------------------------------------------------------------- */
188  #define FFTLIB_CALC_STRIDE(BYTES, ALIGN_SHIFT) \
189  (((((BYTES)-1) >> (ALIGN_SHIFT)) + 1) << (ALIGN_SHIFT))
190 
192  #define FFTLIB_MMA_SIZE_8_BIT_SHIFT \
193  6
194  #define FFTLIB_MMA_SIZE_16_BIT_SHIFT \
195  5
196  #define FFTLIB_MMA_SIZE_32_BIT_SHIFT \
197  4
198 
200  //#define FFTLIB_MMA_SIZE_1_BYTE 1
201  #define FFTLIB_MMA_SIZE_8_BIT \
202  ((uint32_t)(((uint32_t)1) \
203  << FFTLIB_MMA_SIZE_8_BIT_SHIFT))
205  #define FFTLIB_MMA_SIZE_16_BIT \
206  ((uint32_t)(((uint32_t)1) \
207  << FFTLIB_MMA_SIZE_16_BIT_SHIFT))
209  #define FFTLIB_MMA_SIZE_32_BIT \
210  ((int32_t)(((uint32_t)1) \
211  << FFTLIB_MMA_SIZE_32_BIT_SHIFT))
213 
214  /* @} */
215 
216 
217 
218 /*******************************************************************************
219  *
220  * DEFINES
221  *
222  ******************************************************************************/
223 
224 
225 /*******************************************************************************
226  *
227  * Macros
228  *
229  ******************************************************************************/
230 
231 
232 
233 /* @} */
234 
235 
236 
237 #ifdef __cplusplus
238 }
239 #endif /* __cplusplus */
240 #endif /* C7120_FFTLIB_TYPES_H_ */
241 
242 /* ======================================================================== */
243 /* End of file: FFTLIB_types.h */
244 /* ======================================================================== */
FFTLIB_quantMethod_type_e
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_1
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_64bit_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_64bit_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_64bit_No_1
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_7
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_64bit_No_1
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_5
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_6
const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_4
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_1
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_7
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_64bit_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_6
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_64bit_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_6
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_7
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_4
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_64bit_No_1
const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_7
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_1
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_7
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_6
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_1
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_5
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_4
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_5
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_4
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_7
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_64bit_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_4
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_6
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_6
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_4
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_64bit_No_1
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_64bit_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_1
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_5
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_5
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_1
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_5
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_64bit_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_64bit_No_3
FFTLIB_enableDynamicRange_type_e FFTLIB_enableDynamicRange_type
Type for enableDynamicRange variables.
FFTLIB_quantMethod_type_e
The enumeration of possible quantization methods.
@ FFTLIB_QUANT_PER_KERNEL
@ FFTLIB_QUANT_PER_CHANNEL
FFTLIB_quantMethod_type_e FFTLIB_quantMethod_type
Type for initDynamicRange variables.
FFTLIB_enableDynamicRange_type_e
The enumeration of possible dynamic range enable settings.
@ FFTLIB_DYNAMIC_RANGE_DISABLE
Disable dynamic range computation.
@ FFTLIB_DYNAMIC_RANGE_ENABLE
Enable dynamic range computation.
FFTLIB_activation_type_e
The enumeration of possible activation operations on the computation.
@ FFTLIB_PSAT
Return result after parameterized saturation.
@ FFTLIB_RELU
Return result after applying ReLU operation.
@ FFTLIB_NONE
Return result as-is (allow wrapping)
@ FFTLIB_SATURATION
Return result after saturating.
@ FFTLIB_ROUNDING
Return result after rounding.
FFTLIB_initDynamicRange_type_e FFTLIB_initDynamicRange_type
Type for initDynamicRange variables.
FFTLIB_initDynamicRange_type_e
The enumeration of possible dynamic range reset options.
@ FFTLIB_DYNAMIC_RANGE_NOINIT
Do not reset dynamic range min/max at start of computation.
@ FFTLIB_DYNAMIC_RANGE_INIT
Reset dynamic range min/max at start of computation.