FFTLIB User Guide
c7504/FFTLIB_configurations.cpp
Go to the documentation of this file.
1 /*******************************************************************************
2  **+--------------------------------------------------------------------------+**
3  **| **** |**
4  **| **** |**
5  **| ******o*** |**
6  **| ********_///_**** |**
7  **| ***** /_//_/ **** |**
8  **| ** ** (__/ **** |**
9  **| ********* |**
10  **| **** |**
11  **| *** |**
12  **| |**
13  **| Copyright (c) 2007-2012 Texas Instruments Incorporated |**
14  **| ALL RIGHTS RESERVED |**
15  **| |**
16  **| Permission to use, copy, modify, or distribute this software, |**
17  **| whether in part or in whole, for any purpose is forbidden without |**
18  **| a signed licensing agreement and NDA from Texas Instruments |**
19  **| Incorporated (TI). |**
20  **| |**
21  **| TI makes no representation or warranties with respect to the |**
22  **| performance of this computer program, and specifically disclaims |**
23  **| any responsibility for any damages, special or consequential, |**
24  **| connected with the use of this program. |**
25  **| |**
26  **+--------------------------------------------------------------------------+**
27  *******************************************************************************/
28 
29 #include "../FFTLIB_types.h"
30 
31 /* -------------------------------------------------------------------------- */
32 /* MISRAC Rule 4.9(DEFINE.FUNC) Deviation: The advisory is not being */
33 /* addressed so as not to lose portability across different platforms. */
34 /* -------------------------------------------------------------------------- */
35 #ifdef WIN32
36 #define ASSIGN(param, value) value
37 #else
38 #define ASSIGN(param, value) .param = value
39 #endif
40 
41 const __HWA_CONFIG_REG_v1 configRegisterStruct_i32s_i32s_o32s =
42 {
43  /* -------------------------------------------------------------------- */
44  /* MISRAC Rule 10.3(ETYPE.ASSIGN.2012) Deviation: The data types of */
45  /* fields and the enum values are set by compiler according to the */
46  /* hardware specification, and are used as is. */
47  /* -------------------------------------------------------------------- */
48  ASSIGN(A_ATYPE , __MMA_A_CONFIG_ATYPE_INT32),
49  ASSIGN(A_RSVD1 , 0),
50  ASSIGN(A_ALUTEN , __MMA_A_CONFIG_NOLUT),
51  ASSIGN(A_RSVD2 , 0),
52  // begin new
53  ASSIGN(A_ARF_CTRL , __MMA_A_CONFIG_ARF_DISABLE), // disable A register file
54  ASSIGN(A_ARF_BASE , 0), /* disable A register file */
55  ASSIGN(A_RSVD3 , 0),
56  ASSIGN(A_ARF_SIZE , 64), /* ARF array size for read and write operations */
57  ASSIGN(A_RSVD4 , 0),
58  // end new
59  ASSIGN(B_BSWPER , FFTLIB_MMA_SIZE_32_BIT), // 32 bits
60  ASSIGN(B_BRSTPER , FFTLIB_MMA_SIZE_32_BIT), // 8 bits
61  ASSIGN(B_BTYPE , __MMA_B_CONFIG_SIZE32), // 2 bits
62  // begin new
63  ASSIGN(B_LDBOPT , __MMA_LDBOPT_MMA1), /* Control for enhanced B operand row loading */
64  ASSIGN(B_B4EXP , __MMA_B_CONFIG_B4EXP_MMA1), /* B operand expansion control to conv 4-bit ops to 8-bit ops */
65  // end new
66  ASSIGN(B_RSVD1 , 0),
67  ASSIGN(B_ORDER , __MMA_B_CONFIG_ROW), // 1 bit
68  ASSIGN(B_RSVD2 , 0),
69  ASSIGN(B_BSTART , 0), // 1 bits
70  // begin new
71  ASSIGN(B_BCNT1_ENABLE, 0),/* Enable bit for option B row write row cntr for B bank 1. */
72  // end new
73  ASSIGN(B_RSVD3 , 0),
74  ASSIGN(B_BOFFSET , 0), // 8 bits
75  ASSIGN(B_RSVD4 , 0),
76 
77  ASSIGN(C_ATYPE , __MMA_C_CONFIG_ATYPE_SA),
78  // begin new
79  ASSIGN(C_ARF_BASE , 0), /* ARF read pointer base value when ARG_C7 is cleared */
80  ASSIGN(C_ARF_C7 , 1), /* ARF read addresses are supplied by the host C7 processor as an argument to the HWAOP or HWAOPXFER instructions. */
81  // end new
82  ASSIGN(C_BTYPE , __MMA_C_CONFIG_BTYPE_INT32),
83  ASSIGN(C_RSVD2 , 0),
84  ASSIGN(C_OPERATION0 , __MMA_C_CONFIG_MUL),
85  // begin new 2
86  ASSIGN(C_LOP0 , __MMA_C_CONFIG_LOP_C),\
87  // end new 2
88  ASSIGN(C_RSVD3 , 0),
89  ASSIGN(C_OPERATION1 , __MMA_C_CONFIG_MULPLUS),
90  // begin new 2
91  ASSIGN(C_LOP1 , __MMA_C_CONFIG_LOP_C),
92  // end new 2
93  // begin new
94  ASSIGN(C_BIASORDER , __MMA_C_CONFIG_BIAS_ORDER_COLUMN),
95  // end new
96  ASSIGN(C_RSVD4 , 0),
97  // begin new
98  //ASSIGN(C_HWLDDST , __MMA_C_CONFIG_HWLDDST_X4_0),
99 // ASSIGN(C_RSVD4b , 0),
100  ASSIGN(C_HWLDDST, __MMA_C_CONFIG_HWLDDST_X4_0),
101  // end new
102  ASSIGN(C_RSVD5 , 0),
103  ASSIGN(C_HWLDTYPE , __MMA_C_CONFIG_HWLDTYPE_INT32),
104  ASSIGN(C_RSVD6 , 0),
105 
106  ASSIGN(C_OPSTART , __MMA_C_CONFIG_OPSTART_OPERATION0), // No enum in MMA spec? Initial C operand selections
107  ASSIGN(C_BSTART , 0x0), // Initial B bank selection for reading B matrix data
108  ASSIGN(C_CRSTART , 0x0), // Initial C bank selection for reading operands
109  ASSIGN(C_CWSTART , 0x0), // Initial C bank selection for writing computation results
110  ASSIGN(C_CLSTART , 0x0), // Initial C bank selection for writing operands from HWALD*
111  ASSIGN(C_RSVD7 , 0),
112  ASSIGN(C_CROFFSET , 0x0), // 6-bits C row read offset
113  ASSIGN(C_RSVD8 , 0),
114  ASSIGN(C_CWOFFSET , 0x0), // C row write offset for computations
115  ASSIGN(C_RSVD9 , 0),
116  ASSIGN(C_CLOFFSET , 0x0), // C row write offset for HWALD* instructions
117  ASSIGN(C_RSVD10 , 0),
118  ASSIGN(C_CLSWPER , 0), // C bank switch period for HWALD* instruction writes
119  ASSIGN(C_CLRSTPER , 0), // C write row offset reset period for HWALD*
120  ASSIGN(C_OP1PER , 0), // Operation 1 period
121  ASSIGN(C_OP0PER , FFTLIB_MMA_SIZE_32_BIT), // Operation 0 period
122  ASSIGN(C_BSWPER , FFTLIB_MMA_SIZE_32_BIT), // B bank switch period
123  ASSIGN(C_CRSWPER , 0), // C bank switch period for read instructions
124  ASSIGN(C_CWSWPER , 0), // C bank switch period for computation writes
125  ASSIGN(C_CRRSTPER , FFTLIB_MMA_SIZE_32_BIT), // C read row offset reset period
126  ASSIGN(C_CWRSTPER , FFTLIB_MMA_SIZE_32_BIT), // C write row offset reset period for computations
127 
128  // begin new
129  //ASSIGN(X_ReLU , 0x0), // Enable Rectified Linear Units non-linearity after optional saturation
130  //ASSIGN(X_RSVD1 , 0),
131  //ASSIGN(X_SAT , 0x1), // Enable saturation in the transfer buffer element type after optional rounding
132  //ASSIGN(X_RSVD2 , 0),
133  //ASSIGN(X_RE , 0x1), // Enable routing via 1/2 LSB addition after shifting
134  ASSIGN(X_ReLU, 0), /* Optional non-linearity. */
135  // begin new 2
136  ASSIGN(X_PSAT, 0),
137  // end new 2
138  ASSIGN(X_SAT_MIN_5_0, 0),
139  ASSIGN(X_SAT, 1), // Enable saturation in the transfer buffer element type after optional rounding
140  ASSIGN(X_SAT_MIN_12_6, 0),
141  ASSIGN(X_RE, 0x1), // Enable routing via 1/2 LSB addition after shifting
142  ASSIGN(X_SAT_MIN_15_13, 0),
143  ASSIGN(X_RANGE, __MMA_X_CONFIG_RANGE_DISABLE_NOINIT), /* Min/Max range accumulation control on C matrix reads by X FSM */
144  ASSIGN(X_SCALE_SHIFT_CTRL, __MMA_X_CONFIG_SCALE_SHIFT_CTRL_DISABLE),
145  // end new
146  ASSIGN(X_RSVD3 , 0),
147  ASSIGN(X_SHIFT , 0), // 7 bits Right shift amount), signed or unsigned depending on CTYPE field
148  // begin new
149  //ASSIGN(X_RSVD4 , 0),
150  ASSIGN(X_VPACKN, __MMA_X_CONFIG_VPACKN_DISABLE), /* 4-bit packing control */
151  // end new
152  ASSIGN(X_XTYPE , __MMA_X_CONFIG_XTYPE_INT32), // Transfer buffer element typeASSIGN( Not all combinations of CTYPE and XTYPE are supported
153  // begin new
154  //ASSIGN(X_RSVD5 , 0),
155  ASSIGN(X_SAT_MAX_3_0, 0),
156  // end new
157  ASSIGN(X_CTYPE , __MMA_X_CONFIG_CTYPE_INT128), // C matrix element typeASSIGN( This must be consistent with the B FSM setting
158  // begin new
159  // ASSIGN(X_RSVD6 , 0),
160  ASSIGN(X_SAT_MAX_8_4, 0),
161  // end new
162  ASSIGN(X_CSWPER , FFTLIB_MMA_SIZE_32_BIT), // C read bank switch period
163  ASSIGN(X_CRRSTPER , FFTLIB_MMA_SIZE_32_BIT), // C read row offset reset period
164  ASSIGN(X_COFFSET , 0x0), // C matrix row read address offset
165  ASSIGN(X_CSTART , 0x0), // Initial C bank selection
166  // begin new
167  //ASSIGN(X_RSVD7 , 0x0), // Reserved
168  ASSIGN(X_SAT_MAX_15_9, 0),
169  // end new
170 
171  ASSIGN(RSVD , 0),
172  ASSIGN(PARITYCTRL , __MMA_NORMAL)
173 };
174 
175 /*********************************
176  * Typical 16-bit configurations *
177  *********************************/
178 
179 const __HWA_CONFIG_REG_v1 configRegisterStruct_i16s_i16s_o16s =
180 {
181  ASSIGN(A_ATYPE , __MMA_A_CONFIG_ATYPE_INT16),
182  ASSIGN(A_RSVD1 , 0),
183  ASSIGN(A_ALUTEN , __MMA_A_CONFIG_NOLUT),
184  ASSIGN(A_RSVD2 , 0),
185  // begin new
186  ASSIGN(A_ARF_CTRL , __MMA_A_CONFIG_ARF_DISABLE), // disable A register file
187  ASSIGN(A_ARF_BASE , 0), /* disable A register file */
188  ASSIGN(A_RSVD3 , 0),
189  ASSIGN(A_ARF_SIZE , 64), /* ARF array size for read and write operations */
190  ASSIGN(A_RSVD4 , 0),
191  // end new
192  ASSIGN(B_BSWPER , FFTLIB_MMA_SIZE_16_BIT), // 32 bits
193  ASSIGN(B_BRSTPER , FFTLIB_MMA_SIZE_16_BIT), // 8 bits
194  ASSIGN(B_BTYPE , __MMA_B_CONFIG_SIZE16), // 2 bits
195  // begin new
196  ASSIGN(B_LDBOPT , __MMA_LDBOPT_MMA1), /* Control for enhanced B operand row loading */
197  ASSIGN(B_B4EXP , __MMA_B_CONFIG_B4EXP_MMA1), /* B operand expansion control to conv 4-bit ops to 8-bit ops */
198  // end new
199  ASSIGN(B_RSVD1 , 0),
200  ASSIGN(B_ORDER , __MMA_B_CONFIG_ROW), // 1 bit
201  ASSIGN(B_RSVD2 , 0),
202  ASSIGN(B_BSTART , 0), // 1 bits
203  // begin new
204  ASSIGN(B_BCNT1_ENABLE, 0),/* Enable bit for option B row write row cntr for B bank 1. */
205  // end new
206  ASSIGN(B_RSVD3 , 0),
207  ASSIGN(B_BOFFSET , 0), // 8 bits
208  ASSIGN(B_RSVD4 , 0),
209 
210  ASSIGN(C_ATYPE , __MMA_C_CONFIG_ATYPE_SA),
211  // begin new
212  ASSIGN(C_ARF_BASE , 0), /* ARF read pointer base value when ARG_C7 is cleared */
213  ASSIGN(C_ARF_C7 , 1), /* ARF read addresses are supplied by the host C7 processor as an argument to the HWAOP or HWAOPXFER instructions. */
214  // end new
215 
216  ASSIGN(C_BTYPE , __MMA_C_CONFIG_BTYPE_INT16),
217  ASSIGN(C_RSVD2 , 0),
218  ASSIGN(C_OPERATION0 , __MMA_C_CONFIG_MUL),
219  // begin new 2
220  ASSIGN(C_LOP0 , __MMA_C_CONFIG_LOP_C),\
221  // end new 2
222  ASSIGN(C_RSVD3 , 0),
223  ASSIGN(C_OPERATION1 , __MMA_C_CONFIG_MULPLUS),
224  // begin new 2
225  ASSIGN(C_LOP1 , __MMA_C_CONFIG_LOP_C),
226  // end new 2
227  // begin new
228  ASSIGN(C_BIASORDER , __MMA_C_CONFIG_BIAS_ORDER_COLUMN),
229  // end new
230  ASSIGN(C_RSVD4 , 0),
231  // begin new
232  //ASSIGN(C_HWLDDST , __MMA_C_CONFIG_HWLDDST_X4_0),
233 // ASSIGN(C_RSVD4b, 0),
234  ASSIGN(C_HWLDDST, __MMA_C_CONFIG_HWLDDST_X4_0),
235  // end new
236  ASSIGN(C_RSVD5 , 0),
237  ASSIGN(C_HWLDTYPE , __MMA_C_CONFIG_HWLDTYPE_INT16),
238  ASSIGN(C_RSVD6 , 0),
239 
240  ASSIGN(C_OPSTART , __MMA_C_CONFIG_OPSTART_OPERATION0), // No enum in MMA spec? Initial C operand selections
241  ASSIGN(C_BSTART , 0x0), // Initial B bank selection for reading B matrix data
242  ASSIGN(C_CRSTART , 0x0), // Initial C bank selection for reading operands
243  ASSIGN(C_CWSTART , 0x0), // Initial C bank selection for writing computation results
244  ASSIGN(C_CLSTART , 0x0), // Initial C bank selection for writing operands from HWALD*
245  ASSIGN(C_RSVD7 , 0),
246  ASSIGN(C_CROFFSET , 0x0), // 6-bits C row read offset
247  ASSIGN(C_RSVD8 , 0),
248  ASSIGN(C_CWOFFSET , 0x0), // C row write offset for computations
249  ASSIGN(C_RSVD9 , 0),
250  ASSIGN(C_CLOFFSET , 0x0), // C row write offset for HWALD* instructions
251  ASSIGN(C_RSVD10 , 0),
252  ASSIGN(C_CLSWPER , 0), // C bank switch period for HWALD* instruction writes
253  ASSIGN(C_CLRSTPER , 0), // C write row offset reset period for HWALD*
254  ASSIGN(C_OP1PER , 0), // Operation 1 period
255  ASSIGN(C_OP0PER , FFTLIB_MMA_SIZE_16_BIT), // Operation 0 period
256  ASSIGN(C_BSWPER , FFTLIB_MMA_SIZE_16_BIT), // B bank switch period
257  ASSIGN(C_CRSWPER , 0), // C bank switch period for read instructions
258  ASSIGN(C_CWSWPER , 0), // C bank switch period for computation writes
259  ASSIGN(C_CRRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C read row offset reset period
260  ASSIGN(C_CWRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C write row offset reset period for computations
261 
262  // begin new
263  // ASSIGN(X_ReLU , 0x0), // Enable Rectified Linear Units non-linearity after optional saturation
264  // ASSIGN(X_RSVD1 , 0),
265  // ASSIGN(X_SAT , 0x1), // Enable saturation in the transfer buffer element type after optional rounding
266  // ASSIGN(X_RSVD2 , 0),
267  // ASSIGN(X_RE , 0x1), // Enable routing via 1/2 LSB addition after shifting
268  ASSIGN(X_ReLU, 0), /* Optional non-linearity. */
269  // begin new 2
270  ASSIGN(X_PSAT, 0),
271  // end new 2
272  ASSIGN(X_SAT_MIN_5_0, 0),
273  ASSIGN(X_SAT, 1), // Enable saturation in the transfer buffer element type after optional rounding
274  ASSIGN(X_SAT_MIN_12_6, 0),
275  ASSIGN(X_RE, 0x1), // Enable routing via 1/2 LSB addition after shifting
276  ASSIGN(X_SAT_MIN_15_13, 0),
277  ASSIGN(X_RANGE, __MMA_X_CONFIG_RANGE_DISABLE_NOINIT), /* Min/Max range accumulation control on C matrix reads by X FSM */
278  ASSIGN(X_SCALE_SHIFT_CTRL, __MMA_X_CONFIG_SCALE_SHIFT_CTRL_DISABLE),
279  // end new
280  ASSIGN(X_RSVD3 , 0),
281  ASSIGN(X_SHIFT , 0), // 7 bits Right shift amount), signed or unsigned depending on CTYPE fieldASSIGN(
282  // begin new
283  //ASSIGN(X_RSVD4 , 0),
284  ASSIGN(X_VPACKN, __MMA_X_CONFIG_VPACKN_DISABLE),
285  // end new
286  ASSIGN(X_XTYPE , __MMA_X_CONFIG_XTYPE_INT16), // Transfer buffer element typeASSIGN( Not all combinations of CTYPE and XTYPE are supported
287  // begin new
288  //ASSIGN(X_RSVD5 , 0),
289  ASSIGN(X_SAT_MAX_3_0, 0),
290  // end new
291  ASSIGN(X_CTYPE , __MMA_X_CONFIG_CTYPE_INT64), // C matrix element typeASSIGN( This must be consistent with the B FSM setting
292  // begin new
293  // ASSIGN(X_RSVD6 , 0),
294  ASSIGN(X_SAT_MAX_8_4, 0),
295  // end new
296  ASSIGN(X_CSWPER , FFTLIB_MMA_SIZE_16_BIT), // C read bank switch period
297  ASSIGN(X_CRRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C read row offset reset period
298  ASSIGN(X_COFFSET , 0x0), // C matrix row read address offset
299  ASSIGN(X_CSTART , 0x0), // Initial C bank selection
300  // begin new
301  //ASSIGN(X_RSVD7 , 0x0), // Reserved
302  ASSIGN(X_SAT_MAX_15_9, 0),
303  // end new
304 
305  ASSIGN(RSVD , 0),
306  ASSIGN(PARITYCTRL , __MMA_NORMAL)
307 };
308 
309 
310 const __HWA_CONFIG_REG_v1 configRegisterStruct_i16s_i16s_o16u =
311 {
312  ASSIGN(A_ATYPE , __MMA_A_CONFIG_ATYPE_INT16),
313  ASSIGN(A_RSVD1 , 0),
314  ASSIGN(A_ALUTEN , __MMA_A_CONFIG_NOLUT),
315  ASSIGN(A_RSVD2 , 0),
316  // begin new
317  ASSIGN(A_ARF_CTRL , __MMA_A_CONFIG_ARF_DISABLE), // disable A register file
318  ASSIGN(A_ARF_BASE , 0), /* disable A register file */
319  ASSIGN(A_RSVD3 , 0),
320  ASSIGN(A_ARF_SIZE , 64), /* ARF array size for read and write operations */
321  ASSIGN(A_RSVD4 , 0),
322  // end new
323  ASSIGN(B_BSWPER , FFTLIB_MMA_SIZE_16_BIT), // 32 bits
324  ASSIGN(B_BRSTPER , FFTLIB_MMA_SIZE_16_BIT), // 8 bits
325  ASSIGN(B_BTYPE , __MMA_B_CONFIG_SIZE16), // 2 bits
326  // begin new
327  ASSIGN(B_LDBOPT , __MMA_LDBOPT_MMA1), /* Control for enhanced B operand row loading */
328  ASSIGN(B_B4EXP , __MMA_B_CONFIG_B4EXP_MMA1), /* B operand expansion control to conv 4-bit ops to 8-bit ops */
329  // end new
330  ASSIGN(B_RSVD1 , 0),
331  ASSIGN(B_ORDER , __MMA_B_CONFIG_ROW), // 1 bit
332  ASSIGN(B_RSVD2 , 0),
333  ASSIGN(B_BSTART , 0), // 1 bits
334  // begin new
335  ASSIGN(B_BCNT1_ENABLE, 0),/* Enable bit for option B row write row cntr for B bank 1. */
336  // end new
337  ASSIGN(B_RSVD3 , 0),
338  ASSIGN(B_BOFFSET , 0), // 8 bits
339  ASSIGN(B_RSVD4 , 0),
340 
341  ASSIGN(C_ATYPE , __MMA_C_CONFIG_ATYPE_SA),
342  // begin new
343  ASSIGN(C_ARF_BASE , 0), /* ARF read pointer base value when ARG_C7 is cleared */
344  ASSIGN(C_ARF_C7 , 1), /* ARF read addresses are supplied by the host C7 processor as an argument to the HWAOP or HWAOPXFER instructions. */
345  // end new
346 
347  ASSIGN(C_BTYPE , __MMA_C_CONFIG_BTYPE_INT16),
348  ASSIGN(C_RSVD2 , 0),
349  ASSIGN(C_OPERATION0 , __MMA_C_CONFIG_MUL),
350  // begin new 2
351  ASSIGN(C_LOP0 , __MMA_C_CONFIG_LOP_C),\
352  // end new 2
353  ASSIGN(C_RSVD3 , 0),
354  ASSIGN(C_OPERATION1 , __MMA_C_CONFIG_MULPLUS),
355  // begin new 2
356  ASSIGN(C_LOP1 , __MMA_C_CONFIG_LOP_C),
357  // end new 2
358  // begin new
359  ASSIGN(C_BIASORDER , __MMA_C_CONFIG_BIAS_ORDER_COLUMN),
360  // end new
361  ASSIGN(C_RSVD4 , 0),
362  // begin new
363  //ASSIGN(C_HWLDDST , __MMA_C_CONFIG_HWLDDST_X4_0),
364 // ASSIGN(C_RSVD4b, 0),
365  ASSIGN(C_HWLDDST, __MMA_C_CONFIG_HWLDDST_X4_0),
366  // end new
367  ASSIGN(C_RSVD5 , 0),
368  ASSIGN(C_HWLDTYPE , __MMA_C_CONFIG_HWLDTYPE_INT16),
369  ASSIGN(C_RSVD6 , 0),
370 
371  ASSIGN(C_OPSTART , __MMA_C_CONFIG_OPSTART_OPERATION0), // No enum in MMA spec? Initial C operand selections
372  ASSIGN(C_BSTART , 0x0), // Initial B bank selection for reading B matrix data
373  ASSIGN(C_CRSTART , 0x0), // Initial C bank selection for reading operands
374  ASSIGN(C_CWSTART , 0x0), // Initial C bank selection for writing computation results
375  ASSIGN(C_CLSTART , 0x0), // Initial C bank selection for writing operands from HWALD*
376  ASSIGN(C_RSVD7 , 0),
377  ASSIGN(C_CROFFSET , 0x0), // 6-bits C row read offset
378  ASSIGN(C_RSVD8 , 0),
379  ASSIGN(C_CWOFFSET , 0x0), // C row write offset for computations
380  ASSIGN(C_RSVD9 , 0),
381  ASSIGN(C_CLOFFSET , 0x0), // C row write offset for HWALD* instructions
382  ASSIGN(C_RSVD10 , 0),
383  ASSIGN(C_CLSWPER , 0), // C bank switch period for HWALD* instruction writes
384  ASSIGN(C_CLRSTPER , 0), // C write row offset reset period for HWALD*
385  ASSIGN(C_OP1PER , 0), // Operation 1 period
386  ASSIGN(C_OP0PER , FFTLIB_MMA_SIZE_16_BIT), // Operation 0 period
387  ASSIGN(C_BSWPER , FFTLIB_MMA_SIZE_16_BIT), // B bank switch period
388  ASSIGN(C_CRSWPER , 0), // C bank switch period for read instructions
389  ASSIGN(C_CWSWPER , 0), // C bank switch period for computation writes
390  ASSIGN(C_CRRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C read row offset reset period
391  ASSIGN(C_CWRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C write row offset reset period for computations
392 
393  // begin new
394  // ASSIGN(X_ReLU , 0x1), // Enable Rectified Linear Units non-linearity after optional saturation
395  // ASSIGN(X_RSVD1 , 0),
396  // ASSIGN(X_SAT , 0x1), // Enable saturation in the transfer buffer element type after optional rounding
397  // ASSIGN(X_RSVD2 , 0),
398  // ASSIGN(X_RE , 0x1), // Enable routing via 1/2 LSB addition after shifting
399  ASSIGN(X_ReLU, 0), /* Optional non-linearity. */
400  // begin new 2
401  ASSIGN(X_PSAT, 0),
402  // end new 2
403  ASSIGN(X_SAT_MIN_5_0, 0),
404  ASSIGN(X_SAT, 1), // Enable saturation in the transfer buffer element type after optional rounding
405  ASSIGN(X_SAT_MIN_12_6, 0),
406  ASSIGN(X_RE, 0x1), // Enable routing via 1/2 LSB addition after shifting
407  ASSIGN(X_SAT_MIN_15_13, 0),
408  ASSIGN(X_RANGE, __MMA_X_CONFIG_RANGE_DISABLE_NOINIT), /* Min/Max range accumulation control on C matrix reads by X FSM */
409  ASSIGN(X_SCALE_SHIFT_CTRL, __MMA_X_CONFIG_SCALE_SHIFT_CTRL_DISABLE),
410  // end new
411  ASSIGN(X_RSVD3 , 0),
412  ASSIGN(X_SHIFT , 0), // 7 bits Right shift amount), signed or unsigned depending on CTYPE fieldASSIGN(
413  // begin new
414  //ASSIGN(X_RSVD4 , 0),
415  ASSIGN(X_VPACKN, __MMA_X_CONFIG_VPACKN_DISABLE),
416  // end new
417  ASSIGN(X_XTYPE , __MMA_X_CONFIG_XTYPE_UINT16), // Transfer buffer element typeASSIGN( Not all combinations of CTYPE and XTYPE are supported
418  // begin new
419  //ASSIGN(X_RSVD5 , 0),
420  ASSIGN(X_SAT_MAX_3_0, 0),
421  // end new
422  ASSIGN(X_CTYPE , __MMA_X_CONFIG_CTYPE_INT64), // C matrix element typeASSIGN( This must be consistent with the B FSM setting
423  // begin new
424  // ASSIGN(X_RSVD6 , 0),
425  ASSIGN(X_SAT_MAX_8_4, 0),
426  // end new
427  ASSIGN(X_CSWPER , FFTLIB_MMA_SIZE_16_BIT), // C read bank switch period
428  ASSIGN(X_CRRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C read row offset reset period
429  ASSIGN(X_COFFSET , 0x0), // C matrix row read address offset
430  ASSIGN(X_CSTART , 0x0), // Initial C bank selection
431  // begin new
432  //ASSIGN(X_RSVD7 , 0x0), // Reserved
433  ASSIGN(X_SAT_MAX_15_9, 0),
434  // end new
435 
436  ASSIGN(RSVD , 0),
437  ASSIGN(PARITYCTRL , __MMA_NORMAL)
438 };
439 
440 const __HWA_CONFIG_REG_v1 configRegisterStruct_i16u_i16s_o16s =
441 {
442  ASSIGN(A_ATYPE , __MMA_A_CONFIG_ATYPE_UINT16),
443  ASSIGN(A_RSVD1 , 0),
444  ASSIGN(A_ALUTEN , __MMA_A_CONFIG_NOLUT),
445  ASSIGN(A_RSVD2 , 0),
446  // begin new
447  ASSIGN(A_ARF_CTRL , __MMA_A_CONFIG_ARF_DISABLE), // disable A register file
448  ASSIGN(A_ARF_BASE , 0), /* disable A register file */
449  ASSIGN(A_RSVD3 , 0),
450  ASSIGN(A_ARF_SIZE , 64), /* ARF array size for read and write operations */
451  ASSIGN(A_RSVD4 , 0),
452  // end new
453  ASSIGN(B_BSWPER , FFTLIB_MMA_SIZE_16_BIT), // 32 bits
454  ASSIGN(B_BRSTPER , FFTLIB_MMA_SIZE_16_BIT), // 8 bits
455  ASSIGN(B_BTYPE , __MMA_B_CONFIG_SIZE16), // 2 bits
456  // begin new
457  ASSIGN(B_LDBOPT , __MMA_LDBOPT_MMA1), /* Control for enhanced B operand row loading */
458  ASSIGN(B_B4EXP , __MMA_B_CONFIG_B4EXP_MMA1), /* B operand expansion control to conv 4-bit ops to 8-bit ops */
459  // end new
460  ASSIGN(B_RSVD1 , 0),
461  ASSIGN(B_ORDER , __MMA_B_CONFIG_ROW), // 1 bit
462  ASSIGN(B_RSVD2 , 0),
463  ASSIGN(B_BSTART , 0), // 1 bits
464  // begin new
465  ASSIGN(B_BCNT1_ENABLE, 0),/* Enable bit for option B row write row cntr for B bank 1. */
466  // end new
467  ASSIGN(B_RSVD3 , 0),
468  ASSIGN(B_BOFFSET , 0), // 8 bits
469  ASSIGN(B_RSVD4 , 0),
470 
471  ASSIGN(C_ATYPE , __MMA_C_CONFIG_ATYPE_UA),
472  // begin new
473  ASSIGN(C_ARF_BASE , 0), /* ARF read pointer base value when ARG_C7 is cleared */
474  ASSIGN(C_ARF_C7 , 1), /* ARF read addresses are supplied by the host C7 processor as an argument to the HWAOP or HWAOPXFER instructions. */
475  // end new
476  ASSIGN(C_BTYPE , __MMA_C_CONFIG_BTYPE_INT16),
477  ASSIGN(C_RSVD2 , 0),
478  ASSIGN(C_OPERATION0 , __MMA_C_CONFIG_MUL),
479  // begin new 2
480  ASSIGN(C_LOP0 , __MMA_C_CONFIG_LOP_C),\
481  // end new 2
482  ASSIGN(C_RSVD3 , 0),
483  ASSIGN(C_OPERATION1 , __MMA_C_CONFIG_MULPLUS),
484  // begin new 2
485  ASSIGN(C_LOP1 , __MMA_C_CONFIG_LOP_C),
486  // end new 2
487  // begin new
488  ASSIGN(C_BIASORDER , __MMA_C_CONFIG_BIAS_ORDER_COLUMN),
489  // end new
490  ASSIGN(C_RSVD4 , 0),
491  // begin new
492  //ASSIGN(C_HWLDDST , __MMA_C_CONFIG_HWLDDST_X4_0),
493 // ASSIGN(C_RSVD4b, 0),
494  ASSIGN(C_HWLDDST, __MMA_C_CONFIG_HWLDDST_X4_0),
495  // end new
496  ASSIGN(C_RSVD5 , 0),
497  ASSIGN(C_HWLDTYPE , __MMA_C_CONFIG_HWLDTYPE_INT16),
498  ASSIGN(C_RSVD6 , 0),
499 
500  ASSIGN(C_OPSTART , __MMA_C_CONFIG_OPSTART_OPERATION0), // No enum in MMA spec? Initial C operand selections
501  ASSIGN(C_BSTART , 0x0), // Initial B bank selection for reading B matrix data
502  ASSIGN(C_CRSTART , 0x0), // Initial C bank selection for reading operands
503  ASSIGN(C_CWSTART , 0x0), // Initial C bank selection for writing computation results
504  ASSIGN(C_CLSTART , 0x0), // Initial C bank selection for writing operands from HWALD*
505  ASSIGN(C_RSVD7 , 0),
506  ASSIGN(C_CROFFSET , 0x0), // 6-bits C row read offset
507  ASSIGN(C_RSVD8 , 0),
508  ASSIGN(C_CWOFFSET , 0x0), // C row write offset for computations
509  ASSIGN(C_RSVD9 , 0),
510  ASSIGN(C_CLOFFSET , 0x0), // C row write offset for HWALD* instructions
511  ASSIGN(C_RSVD10 , 0),
512  ASSIGN(C_CLSWPER , 0), // C bank switch period for HWALD* instruction writes
513  ASSIGN(C_CLRSTPER , 0), // C write row offset reset period for HWALD*
514  ASSIGN(C_OP1PER , 0), // Operation 1 period
515  ASSIGN(C_OP0PER , FFTLIB_MMA_SIZE_16_BIT), // Operation 0 period
516  ASSIGN(C_BSWPER , FFTLIB_MMA_SIZE_16_BIT), // B bank switch period
517  ASSIGN(C_CRSWPER , 0), // C bank switch period for read instructions
518  ASSIGN(C_CWSWPER , 0), // C bank switch period for computation writes
519  ASSIGN(C_CRRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C read row offset reset period
520  ASSIGN(C_CWRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C write row offset reset period for computations
521 
522  //begin new
523  // ASSIGN(X_ReLU , 0x0), // Enable Rectified Linear Units non-linearity after optional saturation
524  // ASSIGN(X_RSVD1 , 0),
525  // ASSIGN(X_SAT , 0x1), // Enable saturation in the transfer buffer element type after optional rounding
526  // ASSIGN(X_RSVD2 , 0),
527  // ASSIGN(X_RE , 0x1), // Enable routing via 1/2 LSB addition after shifting
528  ASSIGN(X_ReLU, 0), /* Optional non-linearity. */
529  // begin new 2
530  ASSIGN(X_PSAT, 0),
531  // end new 2
532  ASSIGN(X_SAT_MIN_5_0, 0),
533  ASSIGN(X_SAT, 1), // Enable saturation in the transfer buffer element type after optional rounding
534  ASSIGN(X_SAT_MIN_12_6, 0),
535  ASSIGN(X_RE, 0x1), // Enable routing via 1/2 LSB addition after shifting
536  ASSIGN(X_SAT_MIN_15_13, 0),
537  ASSIGN(X_RANGE, __MMA_X_CONFIG_RANGE_DISABLE_NOINIT), /* Min/Max range accumulation control on C matrix reads by X FSM */
538  ASSIGN(X_SCALE_SHIFT_CTRL, __MMA_X_CONFIG_SCALE_SHIFT_CTRL_DISABLE),
539  // end new
540  ASSIGN(X_RSVD3 , 0),
541  ASSIGN(X_SHIFT , 0), // 7 bits Right shift amount), signed or unsigned depending on CTYPE fieldASSIGN(
542  // begin new
543  //ASSIGN(X_RSVD4 , 0),
544  ASSIGN(X_VPACKN, __MMA_X_CONFIG_VPACKN_DISABLE),
545  // end new
546  ASSIGN(X_XTYPE , __MMA_X_CONFIG_XTYPE_INT16), // Transfer buffer element typeASSIGN( Not all combinations of CTYPE and XTYPE are supported
547  // begin new
548  //ASSIGN(X_RSVD5 , 0),
549  ASSIGN(X_SAT_MAX_3_0, 0),
550  // end new
551  ASSIGN(X_CTYPE , __MMA_X_CONFIG_CTYPE_INT64), // C matrix element typeASSIGN( This must be consistent with the B FSM setting
552  // begin new
553  // ASSIGN(X_RSVD6 , 0),
554  ASSIGN(X_SAT_MAX_8_4, 0),
555  // end new
556  ASSIGN(X_CSWPER , FFTLIB_MMA_SIZE_16_BIT), // C read bank switch period
557  ASSIGN(X_CRRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C read row offset reset period
558  ASSIGN(X_COFFSET , 0x0), // C matrix row read address offset
559  ASSIGN(X_CSTART , 0x0), // Initial C bank selection
560  // begin new
561  //ASSIGN(X_RSVD7 , 0x0), // Reserved
562  ASSIGN(X_SAT_MAX_15_9, 0),
563  // end new
564 
565  ASSIGN(RSVD , 0),
566  ASSIGN(PARITYCTRL , __MMA_NORMAL)
567 };
568 
569 const __HWA_CONFIG_REG_v1 configRegisterStruct_i16u_i16s_o16u =
570 {
571  ASSIGN(A_ATYPE , __MMA_A_CONFIG_ATYPE_UINT16),
572  ASSIGN(A_RSVD1 , 0),
573  ASSIGN(A_ALUTEN , __MMA_A_CONFIG_NOLUT),
574  ASSIGN(A_RSVD2 , 0),
575  // begin new
576  ASSIGN(A_ARF_CTRL , __MMA_A_CONFIG_ARF_DISABLE), // disable A register file
577  ASSIGN(A_ARF_BASE , 0), /* disable A register file */
578  ASSIGN(A_RSVD3 , 0),
579  ASSIGN(A_ARF_SIZE , 64), /* ARF array size for read and write operations */
580  ASSIGN(A_RSVD4 , 0),
581  // end new
582  ASSIGN(B_BSWPER , FFTLIB_MMA_SIZE_16_BIT), // 32 bits
583  ASSIGN(B_BRSTPER , FFTLIB_MMA_SIZE_16_BIT), // 8 bits
584  ASSIGN(B_BTYPE , __MMA_B_CONFIG_SIZE16), // 2 bits
585  // begin new
586  ASSIGN(B_LDBOPT , __MMA_LDBOPT_MMA1), /* Control for enhanced B operand row loading */
587  ASSIGN(B_B4EXP , __MMA_B_CONFIG_B4EXP_MMA1), /* B operand expansion control to conv 4-bit ops to 8-bit ops */
588  // end new
589  ASSIGN(B_RSVD1 , 0),
590  ASSIGN(B_ORDER , __MMA_B_CONFIG_ROW), // 1 bit
591  ASSIGN(B_RSVD2 , 0),
592  ASSIGN(B_BSTART , 0), // 1 bits
593  // begin new
594  ASSIGN(B_BCNT1_ENABLE, 0),/* Enable bit for option B row write row cntr for B bank 1. */
595  // end new
596  ASSIGN(B_RSVD3 , 0),
597  ASSIGN(B_BOFFSET , 0), // 8 bits
598  ASSIGN(B_RSVD4 , 0),
599 
600  ASSIGN(C_ATYPE , __MMA_C_CONFIG_ATYPE_UA),
601  // begin new
602  ASSIGN(C_ARF_BASE , 0), /* ARF read pointer base value when ARG_C7 is cleared */
603  ASSIGN(C_ARF_C7 , 1), /* ARF read addresses are supplied by the host C7 processor as an argument to the HWAOP or HWAOPXFER instructions. */
604  // end new
605  ASSIGN(C_BTYPE , __MMA_C_CONFIG_BTYPE_INT16),
606  ASSIGN(C_RSVD2 , 0),
607  ASSIGN(C_OPERATION0 , __MMA_C_CONFIG_MUL),
608  // begin new 2
609  ASSIGN(C_LOP0 , __MMA_C_CONFIG_LOP_C),\
610  // end new 2
611  ASSIGN(C_RSVD3 , 0),
612  ASSIGN(C_OPERATION1 , __MMA_C_CONFIG_MULPLUS),
613  // begin new 2
614  ASSIGN(C_LOP1 , __MMA_C_CONFIG_LOP_C),
615  // end new 2
616  // begin new
617  ASSIGN(C_BIASORDER , __MMA_C_CONFIG_BIAS_ORDER_COLUMN),
618  // end new
619  ASSIGN(C_RSVD4 , 0),
620  // begin new
621  //ASSIGN(C_HWLDDST , __MMA_C_CONFIG_HWLDDST_X4_0),
622 // ASSIGN(C_RSVD4b, 0),
623  ASSIGN(C_HWLDDST, __MMA_C_CONFIG_HWLDDST_X4_0),
624  // end new
625  ASSIGN(C_RSVD5 , 0),
626  ASSIGN(C_HWLDTYPE , __MMA_C_CONFIG_HWLDTYPE_INT16),
627  ASSIGN(C_RSVD6 , 0),
628  ASSIGN(C_OPSTART , __MMA_C_CONFIG_OPSTART_OPERATION0), // No enum in MMA spec? Initial C operand selections
629  ASSIGN(C_BSTART , 0x0), // Initial B bank selection for reading B matrix data
630  ASSIGN(C_CRSTART , 0x0), // Initial C bank selection for reading operands
631  ASSIGN(C_CWSTART , 0x0), // Initial C bank selection for writing computation results
632  ASSIGN(C_CLSTART , 0x0), // Initial C bank selection for writing operands from HWALD*
633  ASSIGN(C_RSVD7 , 0),
634  ASSIGN(C_CROFFSET , 0x0), // 6-bits C row read offset
635  ASSIGN(C_RSVD8 , 0),
636  ASSIGN(C_CWOFFSET , 0x0), // C row write offset for computations
637  ASSIGN(C_RSVD9 , 0),
638  ASSIGN(C_CLOFFSET , 0x0), // C row write offset for HWALD* instructions
639  ASSIGN(C_RSVD10 , 0),
640  ASSIGN(C_CLSWPER , 0), // C bank switch period for HWALD* instruction writes
641  ASSIGN(C_CLRSTPER , 0), // C write row offset reset period for HWALD*
642  ASSIGN(C_OP1PER , 0), // Operation 1 period
643  ASSIGN(C_OP0PER , FFTLIB_MMA_SIZE_16_BIT), // Operation 0 period
644  ASSIGN(C_BSWPER , FFTLIB_MMA_SIZE_16_BIT), // B bank switch period
645  ASSIGN(C_CRSWPER , 0), // C bank switch period for read instructions
646  ASSIGN(C_CWSWPER , 0), // C bank switch period for computation writes
647  ASSIGN(C_CRRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C read row offset reset period
648  ASSIGN(C_CWRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C write row offset reset period for computations
649 
650  // begin new
651  // ASSIGN(X_ReLU , 0x1), // Enable Rectified Linear Units non-linearity after optional saturation
652  // ASSIGN(X_RSVD1 , 0),
653  // ASSIGN(X_SAT , 0x1), // Enable saturation in the transfer buffer element type after optional rounding
654  // ASSIGN(X_RSVD2 , 0),
655  // ASSIGN(X_RE , 0x1), // Enable routing via 1/2 LSB addition after shifting
656  ASSIGN(X_ReLU, 0), /* Optional non-linearity. */
657  // begin new 2
658  ASSIGN(X_PSAT, 0),
659  // end new 2
660  ASSIGN(X_SAT_MIN_5_0, 0),
661  ASSIGN(X_SAT, 1), // Enable saturation in the transfer buffer element type after optional rounding
662  ASSIGN(X_SAT_MIN_12_6, 0),
663  ASSIGN(X_RE, 0x1), // Enable routing via 1/2 LSB addition after shifting
664  ASSIGN(X_SAT_MIN_15_13, 0),
665  ASSIGN(X_RANGE, __MMA_X_CONFIG_RANGE_DISABLE_NOINIT), /* Min/Max range accumulation control on C matrix reads by X FSM */
666  ASSIGN(X_SCALE_SHIFT_CTRL, __MMA_X_CONFIG_SCALE_SHIFT_CTRL_DISABLE),
667  // end new
668  ASSIGN(X_RSVD3 , 0),
669  ASSIGN(X_SHIFT , 0), // 7 bits Right shift amount), signed or unsigned depending on CTYPE fieldASSIGN(
670  // begin new
671  //ASSIGN(X_RSVD4 , 0),
672  ASSIGN(X_VPACKN, __MMA_X_CONFIG_VPACKN_DISABLE),
673  // end new
674  ASSIGN(X_XTYPE , __MMA_X_CONFIG_XTYPE_UINT16), // Transfer buffer element typeASSIGN( Not all combinations of CTYPE and XTYPE are supported
675  // begin new
676  //ASSIGN(X_RSVD5 , 0),
677  ASSIGN(X_SAT_MAX_3_0, 0),
678  // end new
679  ASSIGN(X_CTYPE , __MMA_X_CONFIG_CTYPE_INT64), // C matrix element typeASSIGN( This must be consistent with the B FSM setting
680  // begin new
681  // ASSIGN(X_RSVD6 , 0),
682  ASSIGN(X_SAT_MAX_8_4, 0),
683  // end new
684  ASSIGN(X_CSWPER , FFTLIB_MMA_SIZE_16_BIT), // C read bank switch period
685  ASSIGN(X_CRRSTPER , FFTLIB_MMA_SIZE_16_BIT), // C read row offset reset period
686  ASSIGN(X_COFFSET , 0x0), // C matrix row read address offset
687  ASSIGN(X_CSTART , 0x0), // Initial C bank selection
688  // begin new
689  //ASSIGN(X_RSVD7 , 0x0), // Reserved
690  ASSIGN(X_SAT_MAX_15_9, 0),
691  // end new
692 
693  ASSIGN(RSVD , 0),
694  ASSIGN(PARITYCTRL , __MMA_NORMAL)
695 };
696 
697 
698 /********************************
699  * Typical 8-bit configurations *
700  ********************************/
701 
702 const __HWA_CONFIG_REG_v1 configRegisterStruct_i8s_i8s_o8s =
703 {
704  ASSIGN(A_ATYPE , __MMA_A_CONFIG_ATYPE_INT8),
705  ASSIGN(A_RSVD1 , 0),
706  ASSIGN(A_ALUTEN , __MMA_A_CONFIG_NOLUT),
707  ASSIGN(A_RSVD2 , 0),
708  // begin new
709  ASSIGN(A_ARF_CTRL , __MMA_A_CONFIG_ARF_DISABLE), // disable A register file
710  ASSIGN(A_ARF_BASE , 0), /* disable A register file */
711  ASSIGN(A_RSVD3 , 0),
712  ASSIGN(A_ARF_SIZE , 64), /* ARF array size for read and write operations */
713  ASSIGN(A_RSVD4 , 0),
714  // end new
715  ASSIGN(B_BSWPER , FFTLIB_MMA_SIZE_8_BIT), // 32 bits
716  ASSIGN(B_BRSTPER , FFTLIB_MMA_SIZE_8_BIT), // 8 bits
717  ASSIGN(B_BTYPE , __MMA_B_CONFIG_SIZE8), // 2 bits
718  // begin new
719  ASSIGN(B_LDBOPT , __MMA_LDBOPT_MMA1), /* Control for enhanced B operand row loading */
720  ASSIGN(B_B4EXP , __MMA_B_CONFIG_B4EXP_MMA1), /* B operand expansion control to conv 4-bit ops to 8-bit ops */
721  // end new
722  ASSIGN(B_RSVD1 , 0),
723  ASSIGN(B_ORDER , __MMA_B_CONFIG_ROW), // 1 bit
724  ASSIGN(B_RSVD2 , 0),
725  ASSIGN(B_BSTART , 0), // 1 bits
726  // begin new
727  ASSIGN(B_BCNT1_ENABLE, 0),/* Enable bit for option B row write row cntr for B bank 1. */
728  // end new
729  ASSIGN(B_RSVD3 , 0),
730  ASSIGN(B_BOFFSET , 0), // 8 bits
731  ASSIGN(B_RSVD4 , 0),
732 
733  ASSIGN(C_ATYPE , __MMA_C_CONFIG_ATYPE_SA),
734  // begin new
735  ASSIGN(C_ARF_BASE , 0), /* ARF read pointer base value when ARG_C7 is cleared */
736  ASSIGN(C_ARF_C7 , 1), /* ARF read addresses are supplied by the host C7 processor as an argument to the HWAOP or HWAOPXFER instructions. */
737  // end new
738  ASSIGN(C_BTYPE , __MMA_C_CONFIG_BTYPE_INT8),
739  ASSIGN(C_RSVD2 , 0),
740  ASSIGN(C_OPERATION0 , __MMA_C_CONFIG_MUL),
741  // begin new 2
742  ASSIGN(C_LOP0 , __MMA_C_CONFIG_LOP_C),\
743  // end new 2
744  ASSIGN(C_RSVD3 , 0),
745  ASSIGN(C_OPERATION1 , __MMA_C_CONFIG_MULPLUS),
746  // begin new 2
747  ASSIGN(C_LOP1 , __MMA_C_CONFIG_LOP_C),
748  // end new 2
749  // begin new
750  ASSIGN(C_BIASORDER , __MMA_C_CONFIG_BIAS_ORDER_COLUMN),
751  // end new
752  ASSIGN(C_RSVD4 , 0),
753  // begin new
754  //ASSIGN(C_HWLDDST , __MMA_C_CONFIG_HWLDDST_X4_0),
755 // ASSIGN(C_RSVD4b, 0),
756  ASSIGN(C_HWLDDST, __MMA_C_CONFIG_HWLDDST_X4_0),
757  // end new
758  ASSIGN(C_RSVD5 , 0),
759  ASSIGN(C_HWLDTYPE , __MMA_C_CONFIG_HWLDTYPE_INT8),
760  ASSIGN(C_RSVD6 , 0),
761 
762  ASSIGN(C_OPSTART , __MMA_C_CONFIG_OPSTART_OPERATION0), // No enum in MMA spec? Initial C operand selections
763  ASSIGN(C_BSTART , 0x0), // Initial B bank selection for reading B matrix data
764  ASSIGN(C_CRSTART , 0x0), // Initial C bank selection for reading operands
765  ASSIGN(C_CWSTART , 0x0), // Initial C bank selection for writing computation results
766  ASSIGN(C_CLSTART , 0x0), // Initial C bank selection for writing operands from HWALD*
767  ASSIGN(C_RSVD7 , 0),
768  ASSIGN(C_CROFFSET , 0x0), // 6-bits C row read offset
769  ASSIGN(C_RSVD8 , 0),
770  ASSIGN(C_CWOFFSET , 0x0), // C row write offset for computations
771  ASSIGN(C_RSVD9 , 0),
772  ASSIGN(C_CLOFFSET , 0x0), // C row write offset for HWALD* instructions
773  ASSIGN(C_RSVD10 , 0),
774  ASSIGN(C_CLSWPER , 0), // C bank switch period for HWALD* instruction writes
775  ASSIGN(C_CLRSTPER , 0), // C write row offset reset period for HWALD*
776  ASSIGN(C_OP1PER , 0), // Operation 1 period
777  ASSIGN(C_OP0PER , FFTLIB_MMA_SIZE_8_BIT), // Operation 0 period
778  ASSIGN(C_BSWPER , FFTLIB_MMA_SIZE_8_BIT), // B bank switch period
779  ASSIGN(C_CRSWPER , 0), // C bank switch period for read instructions
780  ASSIGN(C_CWSWPER , 0), // C bank switch period for computation writes
781  ASSIGN(C_CRRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C read row offset reset period
782  ASSIGN(C_CWRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C write row offset reset period for computations
783 
784  // begin new
785  // ASSIGN(X_ReLU , 0x0), // Enable Rectified Linear Units non-linearity after optional saturation
786  // ASSIGN(X_RSVD1 , 0),
787  // ASSIGN(X_SAT , 0x1), // Enable saturation in the transfer buffer element type after optional rounding
788  // ASSIGN(X_RSVD2 , 0),
789  // ASSIGN(X_RE , 0x1), // Enable routing via 1/2 LSB addition after shifting
790  ASSIGN(X_ReLU, 0), /* Optional non-linearity. */
791  // begin new 2
792  ASSIGN(X_PSAT, 0),
793  // end new 2
794  ASSIGN(X_SAT_MIN_5_0, 0),
795  ASSIGN(X_SAT, 1), // Enable saturation in the transfer buffer element type after optional rounding
796  ASSIGN(X_SAT_MIN_12_6, 0),
797  ASSIGN(X_RE, 0x1), // Enable routing via 1/2 LSB addition after shifting
798  ASSIGN(X_SAT_MIN_15_13, 0),
799  ASSIGN(X_RANGE, __MMA_X_CONFIG_RANGE_DISABLE_NOINIT), /* Min/Max range accumulation control on C matrix reads by X FSM */
800  ASSIGN(X_SCALE_SHIFT_CTRL, __MMA_X_CONFIG_SCALE_SHIFT_CTRL_DISABLE),
801  // end new
802  ASSIGN(X_RSVD3 , 0),
803  ASSIGN(X_SHIFT , 0), // 7 bits Right shift amount), signed or unsigned depending on CTYPE fieldASSIGN(
804  // begin new
805  //ASSIGN(X_RSVD4 , 0),
806  ASSIGN(X_VPACKN, __MMA_X_CONFIG_VPACKN_DISABLE),
807  // end new
808  ASSIGN(X_XTYPE , __MMA_X_CONFIG_XTYPE_INT8), // Transfer buffer element typeASSIGN( Not all combinations of CTYPE and XTYPE are supported
809  // begin new
810  //ASSIGN(X_RSVD5 , 0),
811  ASSIGN(X_SAT_MAX_3_0, 0),
812  // end new
813  ASSIGN(X_CTYPE , __MMA_X_CONFIG_CTYPE_INT32), // C matrix element typeASSIGN( This must be consistent with the B FSM setting
814  // begin new
815  // ASSIGN(X_RSVD6 , 0),
816  ASSIGN(X_SAT_MAX_8_4, 0),
817  // end new
818  ASSIGN(X_CSWPER , FFTLIB_MMA_SIZE_8_BIT), // C read bank switch period
819  ASSIGN(X_CRRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C read row offset reset period
820  ASSIGN(X_COFFSET , 0x0), // C matrix row read address offset
821  ASSIGN(X_CSTART , 0x0), // Initial C bank selection
822  // begin new
823  //ASSIGN(X_RSVD7 , 0x0), // Reserved
824  ASSIGN(X_SAT_MAX_15_9, 0),
825  // end new
826 
827  ASSIGN(RSVD , 0),
828  ASSIGN(PARITYCTRL , __MMA_NORMAL)
829 };
830 
831 
832 const __HWA_CONFIG_REG_v1 configRegisterStruct_i8s_i8s_o8u =
833 {
834  ASSIGN(A_ATYPE , __MMA_A_CONFIG_ATYPE_INT8),
835  ASSIGN(A_RSVD1 , 0),
836  ASSIGN(A_ALUTEN , __MMA_A_CONFIG_NOLUT),
837  ASSIGN(A_RSVD2 , 0),
838  // begin new
839  ASSIGN(A_ARF_CTRL , __MMA_A_CONFIG_ARF_DISABLE), // disable A register file
840  ASSIGN(A_ARF_BASE , 0), /* disable A register file */
841  ASSIGN(A_RSVD3 , 0),
842  ASSIGN(A_ARF_SIZE , 64), /* ARF array size for read and write operations */
843  ASSIGN(A_RSVD4 , 0),
844  // end new
845  ASSIGN(B_BSWPER , FFTLIB_MMA_SIZE_8_BIT), // 32 bits
846  ASSIGN(B_BRSTPER , FFTLIB_MMA_SIZE_8_BIT), // 8 bits
847  ASSIGN(B_BTYPE , __MMA_B_CONFIG_SIZE8), // 2 bits
848  // begin new
849  ASSIGN(B_LDBOPT , __MMA_LDBOPT_MMA1), /* Control for enhanced B operand row loading */
850  ASSIGN(B_B4EXP , __MMA_B_CONFIG_B4EXP_MMA1), /* B operand expansion control to conv 4-bit ops to 8-bit ops */
851  // end new
852  ASSIGN(B_RSVD1 , 0),
853  ASSIGN(B_ORDER , __MMA_B_CONFIG_ROW), // 1 bit
854  ASSIGN(B_RSVD2 , 0),
855  ASSIGN(B_BSTART , 0), // 1 bits
856  // begin new
857  ASSIGN(B_BCNT1_ENABLE, 0),/* Enable bit for option B row write row cntr for B bank 1. */
858  // end new
859  ASSIGN(B_RSVD3 , 0),
860  ASSIGN(B_BOFFSET , 0), // 8 bits
861  ASSIGN(B_RSVD4 , 0),
862 
863  ASSIGN(C_ATYPE , __MMA_C_CONFIG_ATYPE_SA),
864  // begin new
865  ASSIGN(C_ARF_BASE , 0), /* ARF read pointer base value when ARG_C7 is cleared */
866  ASSIGN(C_ARF_C7 , 1), /* ARF read addresses are supplied by the host C7 processor as an argument to the HWAOP or HWAOPXFER instructions. */
867  // end new
868  ASSIGN(C_BTYPE , __MMA_C_CONFIG_BTYPE_INT8),
869  ASSIGN(C_RSVD2 , 0),
870  ASSIGN(C_OPERATION0 , __MMA_C_CONFIG_MUL),
871  // begin new 2
872  ASSIGN(C_LOP0 , __MMA_C_CONFIG_LOP_C),\
873  // end new 2
874  ASSIGN(C_RSVD3 , 0),
875  ASSIGN(C_OPERATION1 , __MMA_C_CONFIG_MULPLUS),
876  // begin new 2
877  ASSIGN(C_LOP1 , __MMA_C_CONFIG_LOP_C),
878  // end new 2
879  // begin new
880  ASSIGN(C_BIASORDER , __MMA_C_CONFIG_BIAS_ORDER_COLUMN),
881  // end new
882  ASSIGN(C_RSVD4 , 0),
883  // begin new
884  //ASSIGN(C_HWLDDST , __MMA_C_CONFIG_HWLDDST_X4_0),
885 // ASSIGN(C_RSVD4b, 0),
886  ASSIGN(C_HWLDDST, __MMA_C_CONFIG_HWLDDST_X4_0),
887  // end new
888  ASSIGN(C_RSVD5 , 0),
889  ASSIGN(C_HWLDTYPE , __MMA_C_CONFIG_HWLDTYPE_INT8),
890  ASSIGN(C_RSVD6 , 0),
891 
892  ASSIGN(C_OPSTART , __MMA_C_CONFIG_OPSTART_OPERATION0), // No enum in MMA spec? Initial C operand selections
893  ASSIGN(C_BSTART , 0x0), // Initial B bank selection for reading B matrix data
894  ASSIGN(C_CRSTART , 0x0), // Initial C bank selection for reading operands
895  ASSIGN(C_CWSTART , 0x0), // Initial C bank selection for writing computation results
896  ASSIGN(C_CLSTART , 0x0), // Initial C bank selection for writing operands from HWALD*
897  ASSIGN(C_RSVD7 , 0),
898  ASSIGN(C_CROFFSET , 0x0), // 6-bits C row read offset
899  ASSIGN(C_RSVD8 , 0),
900  ASSIGN(C_CWOFFSET , 0x0), // C row write offset for computations
901  ASSIGN(C_RSVD9 , 0),
902  ASSIGN(C_CLOFFSET , 0x0), // C row write offset for HWALD* instructions
903  ASSIGN(C_RSVD10 , 0),
904  ASSIGN(C_CLSWPER , 0), // C bank switch period for HWALD* instruction writes
905  ASSIGN(C_CLRSTPER , 0), // C write row offset reset period for HWALD*
906  ASSIGN(C_OP1PER , 0), // Operation 1 period
907  ASSIGN(C_OP0PER , FFTLIB_MMA_SIZE_8_BIT), // Operation 0 period
908  ASSIGN(C_BSWPER , FFTLIB_MMA_SIZE_8_BIT), // B bank switch period
909  ASSIGN(C_CRSWPER , 0), // C bank switch period for read instructions
910  ASSIGN(C_CWSWPER , 0), // C bank switch period for computation writes
911  ASSIGN(C_CRRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C read row offset reset period
912  ASSIGN(C_CWRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C write row offset reset period for computations
913 
914  // begin new
915  // ASSIGN(X_ReLU , 0x1), // Enable Rectified Linear Units non-linearity after optional saturation
916  // ASSIGN(X_RSVD1 , 0),
917  // ASSIGN(X_SAT , 0x1), // Enable saturation in the transfer buffer element type after optional rounding
918  // ASSIGN(X_RSVD2 , 0),
919  // ASSIGN(X_RE , 0x1), // Enable routing via 1/2 LSB addition after shifting
920  ASSIGN(X_ReLU, 0), /* Optional non-linearity. */
921  // begin new 2
922  ASSIGN(X_PSAT, 0),
923  // end new 2
924  ASSIGN(X_SAT_MIN_5_0, 0),
925  ASSIGN(X_SAT, 1), // Enable saturation in the transfer buffer element type after optional rounding
926  ASSIGN(X_SAT_MIN_12_6, 0),
927  ASSIGN(X_RE, 0x1), // Enable routing via 1/2 LSB addition after shifting
928  ASSIGN(X_SAT_MIN_15_13, 0),
929  ASSIGN(X_RANGE, __MMA_X_CONFIG_RANGE_DISABLE_NOINIT), /* Min/Max range accumulation control on C matrix reads by X FSM */
930  ASSIGN(X_SCALE_SHIFT_CTRL, __MMA_X_CONFIG_SCALE_SHIFT_CTRL_DISABLE),
931  // end new
932  ASSIGN(X_RSVD3 , 0),
933  ASSIGN(X_SHIFT , 0), // 7 bits Right shift amount), signed or unsigned depending on CTYPE fieldASSIGN(
934  // begin new
935  //ASSIGN(X_RSVD4 , 0),
936  ASSIGN(X_VPACKN, __MMA_X_CONFIG_VPACKN_DISABLE),
937  // end new
938  ASSIGN(X_XTYPE , __MMA_X_CONFIG_XTYPE_UINT8), // Transfer buffer element typeASSIGN( Not all combinations of CTYPE and XTYPE are supported
939  // begin new
940  //ASSIGN(X_RSVD5 , 0),
941  ASSIGN(X_SAT_MAX_3_0, 0),
942  // end new
943  ASSIGN(X_CTYPE , __MMA_X_CONFIG_CTYPE_INT32), // C matrix element typeASSIGN( This must be consistent with the B FSM setting
944  // begin new
945  // ASSIGN(X_RSVD6 , 0),
946  ASSIGN(X_SAT_MAX_8_4, 0),
947  // end new
948  ASSIGN(X_CSWPER , FFTLIB_MMA_SIZE_8_BIT), // C read bank switch period
949  ASSIGN(X_CRRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C read row offset reset period
950  ASSIGN(X_COFFSET , 0x0), // C matrix row read address offset
951  ASSIGN(X_CSTART , 0x0), // Initial C bank selection
952  // begin new
953  //ASSIGN(X_RSVD7 , 0x0), // Reserved
954  ASSIGN(X_SAT_MAX_15_9, 0),
955  // end new
956 
957  ASSIGN(RSVD , 0),
958  ASSIGN(PARITYCTRL , __MMA_NORMAL)
959 };
960 
961 
962 const __HWA_CONFIG_REG_v1 configRegisterStruct_i8u_i8s_o8s =
963 {
964  ASSIGN(A_ATYPE , __MMA_A_CONFIG_ATYPE_UINT8),
965  ASSIGN(A_RSVD1 , 0),
966  ASSIGN(A_ALUTEN , __MMA_A_CONFIG_NOLUT),
967  ASSIGN(A_RSVD2 , 0),
968  // begin new
969  ASSIGN(A_ARF_CTRL , __MMA_A_CONFIG_ARF_DISABLE), // disable A register file
970  ASSIGN(A_ARF_BASE , 0), /* disable A register file */
971  ASSIGN(A_RSVD3 , 0),
972  ASSIGN(A_ARF_SIZE , 64), /* ARF array size for read and write operations */
973  ASSIGN(A_RSVD4 , 0),
974  // end new
975  ASSIGN(B_BSWPER , FFTLIB_MMA_SIZE_8_BIT), // 32 bits
976  ASSIGN(B_BRSTPER , FFTLIB_MMA_SIZE_8_BIT), // 8 bits
977  ASSIGN(B_BTYPE , __MMA_B_CONFIG_SIZE8), // 2 bits
978  // begin new
979  ASSIGN(B_LDBOPT , __MMA_LDBOPT_MMA1), /* Control for enhanced B operand row loading */
980  ASSIGN(B_B4EXP , __MMA_B_CONFIG_B4EXP_MMA1), /* B operand expansion control to conv 4-bit ops to 8-bit ops */
981  // end new
982  ASSIGN(B_RSVD1 , 0),
983  ASSIGN(B_ORDER , __MMA_B_CONFIG_ROW), // 1 bit
984  ASSIGN(B_RSVD2 , 0),
985  ASSIGN(B_BSTART , 0), // 1 bits
986  // begin new
987  ASSIGN(B_BCNT1_ENABLE, 0),/* Enable bit for option B row write row cntr for B bank 1. */
988  // end new
989  ASSIGN(B_RSVD3 , 0),
990  ASSIGN(B_BOFFSET , 0), // 8 bits
991  ASSIGN(B_RSVD4 , 0),
992 
993  ASSIGN(C_ATYPE , __MMA_C_CONFIG_ATYPE_UA),
994  // begin new
995  ASSIGN(C_ARF_BASE , 0), /* ARF read pointer base value when ARG_C7 is cleared */
996  ASSIGN(C_ARF_C7 , 1), /* ARF read addresses are supplied by the host C7 processor as an argument to the HWAOP or HWAOPXFER instructions. */
997  // end new
998  ASSIGN(C_BTYPE , __MMA_C_CONFIG_BTYPE_INT8),
999  ASSIGN(C_RSVD2 , 0),
1000  ASSIGN(C_OPERATION0 , __MMA_C_CONFIG_MUL),
1001  // begin new 2
1002  ASSIGN(C_LOP0 , __MMA_C_CONFIG_LOP_C),\
1003  // end new 2
1004  ASSIGN(C_RSVD3 , 0),
1005  ASSIGN(C_OPERATION1 , __MMA_C_CONFIG_MULPLUS),
1006  // begin new 2
1007  ASSIGN(C_LOP1 , __MMA_C_CONFIG_LOP_C),
1008  // end new 2
1009  // begin new
1010  ASSIGN(C_BIASORDER , __MMA_C_CONFIG_BIAS_ORDER_COLUMN),
1011  // end new
1012  ASSIGN(C_RSVD4 , 0),
1013  // begin new
1014  //ASSIGN(C_HWLDDST , __MMA_C_CONFIG_HWLDDST_X4_0),
1015 // ASSIGN(C_RSVD4b, 0),
1016  ASSIGN(C_HWLDDST, __MMA_C_CONFIG_HWLDDST_X4_0),
1017  // end new
1018  ASSIGN(C_RSVD5 , 0),
1019  ASSIGN(C_HWLDTYPE , __MMA_C_CONFIG_HWLDTYPE_INT8),
1020  ASSIGN(C_RSVD6 , 0),
1021 
1022  ASSIGN(C_OPSTART , __MMA_C_CONFIG_OPSTART_OPERATION0), // No enum in MMA spec? Initial C operand selections
1023  ASSIGN(C_BSTART , 0x0), // Initial B bank selection for reading B matrix data
1024  ASSIGN(C_CRSTART , 0x0), // Initial C bank selection for reading operands
1025  ASSIGN(C_CWSTART , 0x0), // Initial C bank selection for writing computation results
1026  ASSIGN(C_CLSTART , 0x0), // Initial C bank selection for writing operands from HWALD*
1027  ASSIGN(C_RSVD7 , 0),
1028  ASSIGN(C_CROFFSET , 0x0), // 6-bits C row read offset
1029  ASSIGN(C_RSVD8 , 0),
1030  ASSIGN(C_CWOFFSET , 0x0), // C row write offset for computations
1031  ASSIGN(C_RSVD9 , 0),
1032  ASSIGN(C_CLOFFSET , 0x0), // C row write offset for HWALD* instructions
1033  ASSIGN(C_RSVD10 , 0),
1034  ASSIGN(C_CLSWPER , 0), // C bank switch period for HWALD* instruction writes
1035  ASSIGN(C_CLRSTPER , 0), // C write row offset reset period for HWALD*
1036  ASSIGN(C_OP1PER , 0), // Operation 1 period
1037  ASSIGN(C_OP0PER , FFTLIB_MMA_SIZE_8_BIT), // Operation 0 period
1038  ASSIGN(C_BSWPER , FFTLIB_MMA_SIZE_8_BIT), // B bank switch period
1039  ASSIGN(C_CRSWPER , 0), // C bank switch period for read instructions
1040  ASSIGN(C_CWSWPER , 0), // C bank switch period for computation writes
1041  ASSIGN(C_CRRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C read row offset reset period
1042  ASSIGN(C_CWRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C write row offset reset period for computations
1043 
1044  // begin new
1045  // ASSIGN(X_ReLU , 0x0), // Enable Rectified Linear Units non-linearity after optional saturation
1046  // ASSIGN(X_RSVD1 , 0),
1047  // ASSIGN(X_SAT , 0x1), // Enable saturation in the transfer buffer element type after optional rounding
1048  // ASSIGN(X_RSVD2 , 0),
1049  // ASSIGN(X_RE , 0x1), // Enable routing via 1/2 LSB addition after shifting
1050  ASSIGN(X_ReLU, 0), /* Optional non-linearity. */
1051  // begin new 2
1052  ASSIGN(X_PSAT, 0),
1053  // end new 2
1054  ASSIGN(X_SAT_MIN_5_0, 0),
1055  ASSIGN(X_SAT, 1), // Enable saturation in the transfer buffer element type after optional rounding
1056  ASSIGN(X_SAT_MIN_12_6, 0),
1057  ASSIGN(X_RE, 0x1), // Enable routing via 1/2 LSB addition after shifting
1058  ASSIGN(X_SAT_MIN_15_13, 0),
1059  ASSIGN(X_RANGE, __MMA_X_CONFIG_RANGE_DISABLE_NOINIT), /* Min/Max range accumulation control on C matrix reads by X FSM */
1060  ASSIGN(X_SCALE_SHIFT_CTRL, __MMA_X_CONFIG_SCALE_SHIFT_CTRL_DISABLE),
1061  // end new
1062  ASSIGN(X_RSVD3 , 0),
1063  ASSIGN(X_SHIFT , 0), // 7 bits Right shift amount), signed or unsigned depending on CTYPE fieldASSIGN(
1064  // begin new
1065  //ASSIGN(X_RSVD4 , 0),
1066  ASSIGN(X_VPACKN, __MMA_X_CONFIG_VPACKN_DISABLE),
1067  // end new
1068  ASSIGN(X_XTYPE , __MMA_X_CONFIG_XTYPE_INT8), // Transfer buffer element typeASSIGN( Not all combinations of CTYPE and XTYPE are supported
1069  // begin new
1070  //ASSIGN(X_RSVD5 , 0),
1071  ASSIGN(X_SAT_MAX_3_0, 0),
1072  // end new
1073  ASSIGN(X_CTYPE , __MMA_X_CONFIG_CTYPE_INT32), // C matrix element typeASSIGN( This must be consistent with the B FSM setting
1074  // begin new
1075  // ASSIGN(X_RSVD6 , 0),
1076  ASSIGN(X_SAT_MAX_8_4, 0),
1077  // end new
1078  ASSIGN(X_CSWPER , FFTLIB_MMA_SIZE_8_BIT), // C read bank switch period
1079  ASSIGN(X_CRRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C read row offset reset period
1080  ASSIGN(X_COFFSET , 0x0), // C matrix row read address offset
1081  ASSIGN(X_CSTART , 0x0), // Initial C bank selection
1082  // begin new
1083  //ASSIGN(X_RSVD7 , 0x0), // Reserved
1084  ASSIGN(X_SAT_MAX_15_9, 0),
1085  // end new
1086 
1087  ASSIGN(RSVD , 0),
1088  ASSIGN(PARITYCTRL , __MMA_NORMAL)
1089 };
1090 
1091 const __HWA_CONFIG_REG_v1 configRegisterStruct_i8u_i8s_o8u =
1092 {
1093  ASSIGN(A_ATYPE , __MMA_A_CONFIG_ATYPE_UINT8),
1094  ASSIGN(A_RSVD1 , 0),
1095  ASSIGN(A_ALUTEN , __MMA_A_CONFIG_NOLUT),
1096  ASSIGN(A_RSVD2 , 0),
1097  // begin new
1098  ASSIGN(A_ARF_CTRL , __MMA_A_CONFIG_ARF_DISABLE), // disable A register file
1099  ASSIGN(A_ARF_BASE , 0), /* disable A register file */
1100  ASSIGN(A_RSVD3 , 0),
1101  ASSIGN(A_ARF_SIZE , 64), /* ARF array size for read and write operations */
1102  ASSIGN(A_RSVD4 , 0),
1103  // end new
1104  ASSIGN(B_BSWPER , FFTLIB_MMA_SIZE_8_BIT), // 32 bits
1105  ASSIGN(B_BRSTPER , FFTLIB_MMA_SIZE_8_BIT), // 8 bits
1106  ASSIGN(B_BTYPE , __MMA_B_CONFIG_SIZE8), // 2 bits
1107  // begin new
1108  ASSIGN(B_LDBOPT , __MMA_LDBOPT_MMA1), /* Control for enhanced B operand row loading */
1109  ASSIGN(B_B4EXP , __MMA_B_CONFIG_B4EXP_MMA1), /* B operand expansion control to conv 4-bit ops to 8-bit ops */
1110  // end new
1111  ASSIGN(B_RSVD1 , 0),
1112  ASSIGN(B_ORDER , __MMA_B_CONFIG_ROW), // 1 bit
1113  ASSIGN(B_RSVD2 , 0),
1114  ASSIGN(B_BSTART , 0), // 1 bits
1115  // begin new
1116  ASSIGN(B_BCNT1_ENABLE, 0),/* Enable bit for option B row write row cntr for B bank 1. */
1117  // end new
1118  ASSIGN(B_RSVD3 , 0),
1119  ASSIGN(B_BOFFSET , 0), // 8 bits
1120  ASSIGN(B_RSVD4 , 0),
1121 
1122  ASSIGN(C_ATYPE , __MMA_C_CONFIG_ATYPE_UA),
1123  // begin new
1124  ASSIGN(C_ARF_BASE , 0), /* ARF read pointer base value when ARG_C7 is cleared */
1125  ASSIGN(C_ARF_C7 , 1), /* ARF read addresses are supplied by the host C7 processor as an argument to the HWAOP or HWAOPXFER instructions. */
1126  // end new
1127  ASSIGN(C_BTYPE , __MMA_C_CONFIG_BTYPE_INT8),
1128  ASSIGN(C_RSVD2 , 0),
1129  ASSIGN(C_OPERATION0 , __MMA_C_CONFIG_MUL),
1130  // begin new 2
1131  ASSIGN(C_LOP0 , __MMA_C_CONFIG_LOP_C),\
1132  // end new 2
1133  ASSIGN(C_RSVD3 , 0),
1134  ASSIGN(C_OPERATION1 , __MMA_C_CONFIG_MULPLUS),
1135  // begin new 2
1136  ASSIGN(C_LOP1 , __MMA_C_CONFIG_LOP_C),
1137  // end new 2
1138  // begin new
1139  ASSIGN(C_BIASORDER , __MMA_C_CONFIG_BIAS_ORDER_COLUMN),
1140  // end new
1141  ASSIGN(C_RSVD4 , 0),
1142  // begin new
1143  //ASSIGN(C_HWLDDST , __MMA_C_CONFIG_HWLDDST_X4_0),
1144 // ASSIGN(C_RSVD4b, 0),
1145  ASSIGN(C_HWLDDST, __MMA_C_CONFIG_HWLDDST_X4_0),
1146  // end new
1147  ASSIGN(C_RSVD5 , 0),
1148  ASSIGN(C_HWLDTYPE , __MMA_C_CONFIG_HWLDTYPE_INT8),
1149  ASSIGN(C_RSVD6 , 0),
1150  ASSIGN(C_OPSTART , __MMA_C_CONFIG_OPSTART_OPERATION0), // No enum in MMA spec? Initial C operand selections
1151  ASSIGN(C_BSTART , 0x0), // Initial B bank selection for reading B matrix data
1152  ASSIGN(C_CRSTART , 0x0), // Initial C bank selection for reading operands
1153  ASSIGN(C_CWSTART , 0x0), // Initial C bank selection for writing computation results
1154  ASSIGN(C_CLSTART , 0x0), // Initial C bank selection for writing operands from HWALD*
1155  ASSIGN(C_RSVD7 , 0),
1156  ASSIGN(C_CROFFSET , 0x0), // 6-bits C row read offset
1157  ASSIGN(C_RSVD8 , 0),
1158  ASSIGN(C_CWOFFSET , 0x0), // C row write offset for computations
1159  ASSIGN(C_RSVD9 , 0),
1160  ASSIGN(C_CLOFFSET , 0x0), // C row write offset for HWALD* instructions
1161  ASSIGN(C_RSVD10 , 0),
1162  ASSIGN(C_CLSWPER , 0), // C bank switch period for HWALD* instruction writes
1163  ASSIGN(C_CLRSTPER , 0), // C write row offset reset period for HWALD*
1164  ASSIGN(C_OP1PER , 0), // Operation 1 period
1165  ASSIGN(C_OP0PER , FFTLIB_MMA_SIZE_8_BIT), // Operation 0 period
1166  ASSIGN(C_BSWPER , FFTLIB_MMA_SIZE_8_BIT), // B bank switch period
1167  ASSIGN(C_CRSWPER , 0), // C bank switch period for read instructions
1168  ASSIGN(C_CWSWPER , 0), // C bank switch period for computation writes
1169  ASSIGN(C_CRRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C read row offset reset period
1170  ASSIGN(C_CWRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C write row offset reset period for computations
1171 
1172  // begin new
1173  // ASSIGN(X_ReLU , 0x1), // Enable Rectified Linear Units non-linearity after optional saturation
1174  // ASSIGN(X_RSVD1 , 0),
1175  // ASSIGN(X_SAT , 0x1), // Enable saturation in the transfer buffer element type after optional rounding
1176  // ASSIGN(X_RSVD2 , 0),
1177  // ASSIGN(X_RE , 0x1), // Enable routing via 1/2 LSB addition after shifting
1178  ASSIGN(X_ReLU, 0), /* Optional non-linearity. */
1179  // begin new 2
1180  ASSIGN(X_PSAT, 0),
1181  // end new 2
1182  ASSIGN(X_SAT_MIN_5_0, 0),
1183  ASSIGN(X_SAT, 1), // Enable saturation in the transfer buffer element type after optional rounding
1184  ASSIGN(X_SAT_MIN_12_6, 0),
1185  ASSIGN(X_RE, 0x1), // Enable routing via 1/2 LSB addition after shifting
1186  ASSIGN(X_SAT_MIN_15_13, 0),
1187  ASSIGN(X_RANGE, __MMA_X_CONFIG_RANGE_DISABLE_NOINIT), /* Min/Max range accumulation control on C matrix reads by X FSM */
1188  ASSIGN(X_SCALE_SHIFT_CTRL, __MMA_X_CONFIG_SCALE_SHIFT_CTRL_DISABLE),
1189  // end new
1190  ASSIGN(X_RSVD3 , 0),
1191  ASSIGN(X_SHIFT , 0), // 7 bits Right shift amount), signed or unsigned depending on CTYPE fieldASSIGN(
1192  // begin new
1193  //ASSIGN(X_RSVD4 , 0),
1194  ASSIGN(X_VPACKN, __MMA_X_CONFIG_VPACKN_DISABLE),
1195  // end new
1196  ASSIGN(X_XTYPE , __MMA_X_CONFIG_XTYPE_UINT8), // Transfer buffer element typeASSIGN( Not all combinations of CTYPE and XTYPE are supported
1197  // begin new
1198  //ASSIGN(X_RSVD5 , 0),
1199  ASSIGN(X_SAT_MAX_3_0, 0),
1200  // end new
1201  ASSIGN(X_CTYPE , __MMA_X_CONFIG_CTYPE_INT32), // C matrix element typeASSIGN( This must be consistent with the B FSM setting
1202  // begin new
1203  // ASSIGN(X_RSVD6 , 0),
1204  ASSIGN(X_SAT_MAX_8_4, 0),
1205  // end new
1206  ASSIGN(X_CSWPER , FFTLIB_MMA_SIZE_8_BIT), // C read bank switch period
1207  ASSIGN(X_CRRSTPER , FFTLIB_MMA_SIZE_8_BIT), // C read row offset reset period
1208  ASSIGN(X_COFFSET , 0x0), // C matrix row read address offset
1209  ASSIGN(X_CSTART , 0x0), // Initial C bank selection
1210  // begin new
1211  //ASSIGN(X_RSVD7 , 0x0), // Reserved
1212  ASSIGN(X_SAT_MAX_15_9, 0),
1213  // end new
1214 
1215  ASSIGN(RSVD , 0),
1216  ASSIGN(PARITYCTRL , __MMA_NORMAL)
1217 };
1218 
1219 /* -------------------------------------------------------------------------- */
1220 /* MISRAC Rule 4.9(DEFINE.FUNC) Deviation: The advisory is not being */
1221 /* addressed so as not to lose portability across different platforms. */
1222 /* -------------------------------------------------------------------------- */
1223 #ifdef WIN32
1224 #define ASSIGN(param, value) value
1225 #else
1226 #define ASSIGN(param, value) .param = value
1227 #endif
1228 const __HWA_OFFSET_REG offsetRegStruct_zeros =
1229 {
1230  ASSIGN(offset0 , 0),
1231  ASSIGN(offset1 , 0),
1232  ASSIGN(offset2 , 0),
1233  ASSIGN(offset3 , 0),
1234  ASSIGN(A_LUT_VAL_0 , 0),
1235  ASSIGN(offset4 , 0),
1236  ASSIGN(offset5 , 0),
1237  ASSIGN(offset6 , 0),
1238  ASSIGN(offset7 , 0),
1239  ASSIGN(A_LUT_VAL_1 , 0),
1240  ASSIGN(offset8 , 0),
1241  ASSIGN(offset9 , 0),
1242  ASSIGN(offset10 , 0),
1243  ASSIGN(offset11 , 0),
1244  ASSIGN(A_LUT_VAL_2 , 0),
1245  ASSIGN(offset12 , 0),
1246  ASSIGN(offset13 , 0),
1247  ASSIGN(offset14 , 0),
1248  ASSIGN(offset15 , 0),
1249  ASSIGN(A_LUT_VAL_3 , 0),
1250  ASSIGN(offset16 , 0),
1251  ASSIGN(offset17 , 0),
1252  ASSIGN(offset18 , 0),
1253  ASSIGN(offset19 , 0),
1254  ASSIGN(A_LUT_VAL_4 , 0),
1255  ASSIGN(offset20 , 0),
1256  ASSIGN(offset21 , 0),
1257  ASSIGN(offset22 , 0),
1258  ASSIGN(offset23 , 0),
1259  ASSIGN(A_LUT_VAL_5 , 0),
1260  ASSIGN(offset24 , 0),
1261  ASSIGN(offset25 , 0),
1262  ASSIGN(offset26 , 0),
1263  ASSIGN(offset27 , 0),
1264  ASSIGN(A_LUT_VAL_6 , 0),
1265  ASSIGN(offset28 , 0),
1266  ASSIGN(offset29 , 0),
1267  ASSIGN(offset30 , 0),
1268  ASSIGN(offset31 , 0),
1269  ASSIGN(A_LUT_VAL_7 , 0),
1270 // ASSIGN(offset32 , 0),
1271 // ASSIGN(offset33 , 0),
1272 // ASSIGN(offset34 , 0),
1273 // ASSIGN(offset35 , 0),
1274 // ASSIGN(A_LUT_VAL_8 , 0),
1275 // ASSIGN(offset36 , 0),
1276 // ASSIGN(offset37 , 0),
1277 // ASSIGN(offset38 , 0),
1278 // ASSIGN(offset39 , 0),
1279 // ASSIGN(A_LUT_VAL_9 , 0),
1280 // ASSIGN(offset40 , 0),
1281 // ASSIGN(offset41 , 0),
1282 // ASSIGN(offset42 , 0),
1283 // ASSIGN(offset43 , 0),
1284 // ASSIGN(A_LUT_VAL_10 , 0),
1285 // ASSIGN(offset44 , 0),
1286 // ASSIGN(offset45 , 0),
1287 // ASSIGN(offset46 , 0),
1288 // ASSIGN(offset47 , 0),
1289 // ASSIGN(A_LUT_VAL_11 , 0),
1290 // ASSIGN(offset48 , 0),
1291 // ASSIGN(offset49 , 0),
1292 // ASSIGN(offset50 , 0),
1293 // ASSIGN(offset51 , 0),
1294 // ASSIGN(A_LUT_VAL_12 , 0),
1295 // ASSIGN(offset52 , 0),
1296 // ASSIGN(offset53 , 0),
1297 // ASSIGN(offset54 , 0),
1298 // ASSIGN(offset55 , 0),
1299 // ASSIGN(A_LUT_VAL_13 , 0),
1300 // ASSIGN(offset56 , 0),
1301 // ASSIGN(offset57 , 0),
1302 // ASSIGN(offset58 , 0),
1303 // ASSIGN(offset59 , 0),
1304 // ASSIGN(A_LUT_VAL_14 , 0),
1305 // ASSIGN(offset60 , 0),
1306 // ASSIGN(offset61 , 0),
1307 // ASSIGN(offset62 , 0),
1308 // ASSIGN(offset63 , 0),
1309 // ASSIGN(A_LUT_VAL_15 , 0)
1310 };
1311 
1312 const __HWA_OFFSET_REG offsetRegStruct_diagonal_32bit =
1313 {
1314  ASSIGN(offset0 , 0),
1315  ASSIGN(offset1 , 0),
1316  ASSIGN(offset2 , 0),
1317  ASSIGN(offset3 , 0),
1318  ASSIGN(A_LUT_VAL_0 , 0),
1319  ASSIGN(offset4 , 1),
1320  ASSIGN(offset5 , 0),
1321  ASSIGN(offset6 , 0),
1322  ASSIGN(offset7 , 0),
1323  ASSIGN(A_LUT_VAL_1 , 0),
1324  ASSIGN(offset8 , 2),
1325  ASSIGN(offset9 , 0),
1326  ASSIGN(offset10 , 0),
1327  ASSIGN(offset11 , 0),
1328  ASSIGN(A_LUT_VAL_2 , 0),
1329  ASSIGN(offset12 , 3),
1330  ASSIGN(offset13 , 0),
1331  ASSIGN(offset14 , 0),
1332  ASSIGN(offset15 , 0),
1333  ASSIGN(A_LUT_VAL_3 , 0),
1334  ASSIGN(offset16 , 4),
1335  ASSIGN(offset17 , 0),
1336  ASSIGN(offset18 , 0),
1337  ASSIGN(offset19 , 0),
1338  ASSIGN(A_LUT_VAL_4 , 0),
1339  ASSIGN(offset20 , 5),
1340  ASSIGN(offset21 , 0),
1341  ASSIGN(offset22 , 0),
1342  ASSIGN(offset23 , 0),
1343  ASSIGN(A_LUT_VAL_5 , 0),
1344  ASSIGN(offset24 , 6),
1345  ASSIGN(offset25 , 0),
1346  ASSIGN(offset26 , 0),
1347  ASSIGN(offset27 , 0),
1348  ASSIGN(A_LUT_VAL_6 , 0),
1349  ASSIGN(offset28 , 7),
1350  ASSIGN(offset29 , 0),
1351  ASSIGN(offset30 , 0),
1352  ASSIGN(offset31 , 0),
1353  ASSIGN(A_LUT_VAL_7 , 0),
1354 // ASSIGN(offset32 , 8),
1355 // ASSIGN(offset33 , 0),
1356 // ASSIGN(offset34 , 0),
1357 // ASSIGN(offset35 , 0),
1358 // ASSIGN(A_LUT_VAL_8 , 0),
1359 // ASSIGN(offset36 , 9),
1360 // ASSIGN(offset37 , 0),
1361 // ASSIGN(offset38 , 0),
1362 // ASSIGN(offset39 , 0),
1363 // ASSIGN(A_LUT_VAL_9 , 0),
1364 // ASSIGN(offset40 , 10),
1365 // ASSIGN(offset41 , 0),
1366 // ASSIGN(offset42 , 0),
1367 // ASSIGN(offset43 , 0),
1368 // ASSIGN(A_LUT_VAL_10 , 0),
1369 // ASSIGN(offset44 , 11),
1370 // ASSIGN(offset45 , 0),
1371 // ASSIGN(offset46 , 0),
1372 // ASSIGN(offset47 , 0),
1373 // ASSIGN(A_LUT_VAL_11 , 0),
1374 // ASSIGN(offset48 , 12),
1375 // ASSIGN(offset49 , 0),
1376 // ASSIGN(offset50 , 0),
1377 // ASSIGN(offset51 , 0),
1378 // ASSIGN(A_LUT_VAL_12 , 0),
1379 // ASSIGN(offset52 , 13),
1380 // ASSIGN(offset53 , 0),
1381 // ASSIGN(offset54 , 0),
1382 // ASSIGN(offset55 , 0),
1383 // ASSIGN(A_LUT_VAL_13 , 0),
1384 // ASSIGN(offset56 , 14),
1385 // ASSIGN(offset57 , 0),
1386 // ASSIGN(offset58 , 0),
1387 // ASSIGN(offset59 , 0),
1388 // ASSIGN(A_LUT_VAL_14 , 0),
1389 // ASSIGN(offset60 , 15),
1390 // ASSIGN(offset61 , 0),
1391 // ASSIGN(offset62 , 0),
1392 // ASSIGN(offset63 , 0),
1393 // ASSIGN(A_LUT_VAL_15 , 0)
1394 };
1395 
1396 const __HWA_OFFSET_REG offsetRegStruct_diagonal_16bit =
1397 {
1398  ASSIGN(offset0 , 0),
1399  ASSIGN(offset1 , 0),
1400  ASSIGN(offset2 , 1),
1401  ASSIGN(offset3 , 0),
1402  ASSIGN(A_LUT_VAL_0 , 0),
1403  ASSIGN(offset4 , 2),
1404  ASSIGN(offset5 , 0),
1405  ASSIGN(offset6 , 3),
1406  ASSIGN(offset7 , 0),
1407  ASSIGN(A_LUT_VAL_1 , 0),
1408  ASSIGN(offset8 , 4),
1409  ASSIGN(offset9 , 0),
1410  ASSIGN(offset10 , 5),
1411  ASSIGN(offset11 , 0),
1412  ASSIGN(A_LUT_VAL_2 , 0),
1413  ASSIGN(offset12 , 6),
1414  ASSIGN(offset13 , 0),
1415  ASSIGN(offset14 , 7),
1416  ASSIGN(offset15 , 0),
1417  ASSIGN(A_LUT_VAL_3 , 0),
1418  ASSIGN(offset16 , 8),
1419  ASSIGN(offset17 , 0),
1420  ASSIGN(offset18 , 9),
1421  ASSIGN(offset19 , 0),
1422  ASSIGN(A_LUT_VAL_4 , 0),
1423  ASSIGN(offset20 , 10),
1424  ASSIGN(offset21 , 0),
1425  ASSIGN(offset22 , 11),
1426  ASSIGN(offset23 , 0),
1427  ASSIGN(A_LUT_VAL_5 , 0),
1428  ASSIGN(offset24 , 12),
1429  ASSIGN(offset25 , 0),
1430  ASSIGN(offset26 , 13),
1431  ASSIGN(offset27 , 0),
1432  ASSIGN(A_LUT_VAL_6 , 0),
1433  ASSIGN(offset28 , 14),
1434  ASSIGN(offset29 , 0),
1435  ASSIGN(offset30 , 15),
1436  ASSIGN(offset31 , 0),
1437  ASSIGN(A_LUT_VAL_7 , 0),
1438 // ASSIGN(offset32 , 16),
1439 // ASSIGN(offset33 , 0),
1440 // ASSIGN(offset34 , 17),
1441 // ASSIGN(offset35 , 0),
1442 // ASSIGN(A_LUT_VAL_8 , 0),
1443 // ASSIGN(offset36 , 18),
1444 // ASSIGN(offset37 , 0),
1445 // ASSIGN(offset38 , 19),
1446 // ASSIGN(offset39 , 0),
1447 // ASSIGN(A_LUT_VAL_9 , 0),
1448 // ASSIGN(offset40 , 20),
1449 // ASSIGN(offset41 , 0),
1450 // ASSIGN(offset42 , 21),
1451 // ASSIGN(offset43 , 0),
1452 // ASSIGN(A_LUT_VAL_10 , 0),
1453 // ASSIGN(offset44 , 22),
1454 // ASSIGN(offset45 , 0),
1455 // ASSIGN(offset46 , 23),
1456 // ASSIGN(offset47 , 0),
1457 // ASSIGN(A_LUT_VAL_11 , 0),
1458 // ASSIGN(offset48 , 24),
1459 // ASSIGN(offset49 , 0),
1460 // ASSIGN(offset50 , 25),
1461 // ASSIGN(offset51 , 0),
1462 // ASSIGN(A_LUT_VAL_12 , 0),
1463 // ASSIGN(offset52 , 26),
1464 // ASSIGN(offset53 , 0),
1465 // ASSIGN(offset54 , 27),
1466 // ASSIGN(offset55 , 0),
1467 // ASSIGN(A_LUT_VAL_13 , 0),
1468 // ASSIGN(offset56 , 28),
1469 // ASSIGN(offset57 , 0),
1470 // ASSIGN(offset58 , 29),
1471 // ASSIGN(offset59 , 0),
1472 // ASSIGN(A_LUT_VAL_14 , 0),
1473 // ASSIGN(offset60 , 30),
1474 // ASSIGN(offset61 , 0),
1475 // ASSIGN(offset62 , 31),
1476 // ASSIGN(offset63 , 0),
1477 // ASSIGN(A_LUT_VAL_15 , 0)
1478 };
1479 
1480 const __HWA_OFFSET_REG offsetRegStruct_diagonal_8bit =
1481 {
1482  ASSIGN(offset0 , 0),
1483  ASSIGN(offset1 , 1),
1484  ASSIGN(offset2 , 2),
1485  ASSIGN(offset3 , 3),
1486  ASSIGN(A_LUT_VAL_0 , 0),
1487  ASSIGN(offset4 , 4),
1488  ASSIGN(offset5 , 5),
1489  ASSIGN(offset6 , 6),
1490  ASSIGN(offset7 , 7),
1491  ASSIGN(A_LUT_VAL_1 , 0),
1492  ASSIGN(offset8 , 8),
1493  ASSIGN(offset9 , 9),
1494  ASSIGN(offset10 , 10),
1495  ASSIGN(offset11 , 11),
1496  ASSIGN(A_LUT_VAL_2 , 0),
1497  ASSIGN(offset12 , 12),
1498  ASSIGN(offset13 , 13),
1499  ASSIGN(offset14 , 14),
1500  ASSIGN(offset15 , 15),
1501  ASSIGN(A_LUT_VAL_3 , 0),
1502  ASSIGN(offset16 , 16),
1503  ASSIGN(offset17 , 17),
1504  ASSIGN(offset18 , 18),
1505  ASSIGN(offset19 , 19),
1506  ASSIGN(A_LUT_VAL_4 , 0),
1507  ASSIGN(offset20 , 20),
1508  ASSIGN(offset21 , 21),
1509  ASSIGN(offset22 , 22),
1510  ASSIGN(offset23 , 23),
1511  ASSIGN(A_LUT_VAL_5 , 0),
1512  ASSIGN(offset24 , 24),
1513  ASSIGN(offset25 , 25),
1514  ASSIGN(offset26 , 26),
1515  ASSIGN(offset27 , 27),
1516  ASSIGN(A_LUT_VAL_6 , 0),
1517  ASSIGN(offset28 , 28),
1518  ASSIGN(offset29 , 29),
1519  ASSIGN(offset30 , 30),
1520  ASSIGN(offset31 , 31),
1521  ASSIGN(A_LUT_VAL_7 , 0),
1522 // ASSIGN(offset32 , 32),
1523 // ASSIGN(offset33 , 33),
1524 // ASSIGN(offset34 , 34),
1525 // ASSIGN(offset35 , 35),
1526 // ASSIGN(A_LUT_VAL_8 , 0),
1527 // ASSIGN(offset36 , 36),
1528 // ASSIGN(offset37 , 37),
1529 // ASSIGN(offset38 , 38),
1530 // ASSIGN(offset39 , 39),
1531 // ASSIGN(A_LUT_VAL_9 , 0),
1532 // ASSIGN(offset40 , 40),
1533 // ASSIGN(offset41 , 41),
1534 // ASSIGN(offset42 , 42),
1535 // ASSIGN(offset43 , 43),
1536 // ASSIGN(A_LUT_VAL_10 , 0),
1537 // ASSIGN(offset44 , 44),
1538 // ASSIGN(offset45 , 45),
1539 // ASSIGN(offset46 , 46),
1540 // ASSIGN(offset47 , 47),
1541 // ASSIGN(A_LUT_VAL_11 , 0),
1542 // ASSIGN(offset48 , 48),
1543 // ASSIGN(offset49 , 49),
1544 // ASSIGN(offset50 , 50),
1545 // ASSIGN(offset51 , 51),
1546 // ASSIGN(A_LUT_VAL_12 , 0),
1547 // ASSIGN(offset52 , 52),
1548 // ASSIGN(offset53 , 53),
1549 // ASSIGN(offset54 , 54),
1550 // ASSIGN(offset55 , 55),
1551 // ASSIGN(A_LUT_VAL_13 , 0),
1552 // ASSIGN(offset56 , 56),
1553 // ASSIGN(offset57 , 57),
1554 // ASSIGN(offset58 , 58),
1555 // ASSIGN(offset59 , 59),
1556 // ASSIGN(A_LUT_VAL_14 , 0),
1557 // ASSIGN(offset60 , 60),
1558 // ASSIGN(offset61 , 61),
1559 // ASSIGN(offset62 , 62),
1560 // ASSIGN(offset63 , 63),
1561 // ASSIGN(A_LUT_VAL_15 , 0)
1562 };
1563 
1564 /* -------------------------------------------------------------------------- */
1565 /* MISRAC Rule 8.2(UNMATCHED.PARAMS) Deviation: This is the compiler */
1566 /* recommended way to initialize a vector. */
1567 /* -------------------------------------------------------------------------- */
1568 #if defined(_HOST_BUILD)
1569 
1570 // permutation register values scale and shift
1571 const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_1 = c7x::uchar_vec(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1572 const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_2 = c7x::uchar_vec(0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1573 const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_3 = c7x::uchar_vec(0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1574 const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_4 = c7x::uchar_vec(0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1575 
1576 // permutation register values for 32-bit bias
1577 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_1 = c7x::uchar_vec(0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1578 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_1 = c7x::uchar_vec(0);
1579 
1580 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_2 = c7x::uchar_vec(0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7);
1581 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_2 = c7x::uchar_vec(0);
1582 
1583 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_3 = c7x::uchar_vec( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7);
1584 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_3 = c7x::uchar_vec( 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1585 
1586 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_4 = c7x::uchar_vec(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
1588 
1589 // permutation register values for 64-bit bias
1590 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_64bit_No_1 = c7x::uchar_vec(0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7);
1591 
1592 // permutation register values scale and shift, split groups case
1593 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_1 = c7x::uchar_vec(0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1594 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_2 = c7x::uchar_vec(0, 1, 2, 3, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1595 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_3 = c7x::uchar_vec(0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1596 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_4 = c7x::uchar_vec(0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1597 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_5 = c7x::uchar_vec(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1598 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_6 = c7x::uchar_vec(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 0, 0, 0, 0, 0, 0, 0);
1599 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_7 = c7x::uchar_vec(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13, 0, 0, 0, 0);
1600 
1601 
1602 // permutation register values for 32-bit bias, split groups case
1603 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_1 = c7x::uchar_vec( 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1604 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_1 = c7x::uchar_vec( 0);
1605 
1606 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_2 = c7x::uchar_vec( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
1607 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_2 = c7x::uchar_vec( 0);
1608 
1609 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_3 = c7x::uchar_vec( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7);
1610 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_3 = c7x::uchar_vec( 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1611 
1612 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_4 = c7x::uchar_vec( 0, 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);
1613 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_4 = c7x::uchar_vec( 0, 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);
1614 
1615 // permutation register values for 64-bit bias, split groups case
1617 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_64bit_No_1 = c7x::uchar_vec(0);
1618 
1619 
1620 #else
1621 
1622 const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_1 = (const c7x::uchar_vec)(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1623 const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_2 = (const c7x::uchar_vec)(0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1624 const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_3 = (const c7x::uchar_vec)(0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1625 const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_4 = (const c7x::uchar_vec)(0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1626 
1627 // permutation register values for 32-bit bias
1628 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_1 = (const c7x::uchar_vec)(0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1629 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_1 = (const c7x::uchar_vec)(0);
1630 
1631 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_2 = (const c7x::uchar_vec)(0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7);
1632 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_2 = (const c7x::uchar_vec)(0);
1633 
1634 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_3 = (const c7x::uchar_vec)( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7);
1635 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_3 = (const c7x::uchar_vec)( 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1636 
1637 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_4 = (const c7x::uchar_vec)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
1638 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_4 = (const c7x::uchar_vec)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
1639 
1640 // permutation register values for 64-bit bias
1641 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_64bit_No_1 = (const c7x::uchar_vec)(0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7);
1642 const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_64bit_No_1 = (const c7x::uchar_vec)(0);
1643 
1644 // permutation register values scale and shift, split groups case
1645 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_1 = (const c7x::uchar_vec)(0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1646 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_2 = (const c7x::uchar_vec)(0, 1, 2, 3, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1647 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_3 = (const c7x::uchar_vec)(0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1648 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_4 = (const c7x::uchar_vec)(0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1649 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_5 = (const c7x::uchar_vec)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1650 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_6 = (const c7x::uchar_vec)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 0, 0, 0, 0, 0, 0, 0);
1651 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_7 = (const c7x::uchar_vec)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13, 0, 0, 0, 0);
1652 
1653 
1654 // permutation register values for 32-bit bias, split groups case
1655 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_1 = (const c7x::uchar_vec)( 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1656 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_1 = (const c7x::uchar_vec)( 0);
1657 
1658 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_2 = (const c7x::uchar_vec)( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
1659 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_2 = (const c7x::uchar_vec)( 0);
1660 
1661 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_3 = (const c7x::uchar_vec)( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7);
1662 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_3 = (const c7x::uchar_vec)( 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1663 
1664 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_32bit_No_4 = (const c7x::uchar_vec)( 0, 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);
1665 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_4 = (const c7x::uchar_vec)( 0, 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);
1666 
1667 // permutation register values for 64-bit bias, split groups case
1668 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec0_64bit_No_1 = (const c7x::uchar_vec)( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
1669 const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_64bit_No_1 = (c7x::uchar_vec)(0);
1670 
1671 #endif
1672 
1673 
1674 
1675 
1676 /* ======================================================================== */
1677 /* End of file: FFTLIB_configurations.c */
1678 /* ======================================================================== */
#define FFTLIB_MMA_SIZE_16_BIT
type is 16-bit integers
#define FFTLIB_MMA_SIZE_8_BIT
MMA size as a function of precision.
#define FFTLIB_MMA_SIZE_32_BIT
type is 32-bit integers
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_1
const __HWA_OFFSET_REG offsetRegStruct_zeros
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_64bit_No_1
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 __HWA_CONFIG_REG_v1 configRegisterStruct_i16u_i16s_o16u
const __HWA_OFFSET_REG offsetRegStruct_diagonal_16bit
const __HWA_CONFIG_REG_v1 configRegisterStruct_i16s_i16s_o16u
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_scale_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_2
const __HWA_CONFIG_REG_v1 configRegisterStruct_i8u_i8s_o8s
const __HWA_OFFSET_REG offsetRegStruct_diagonal_8bit
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
#define ASSIGN(param, value)
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_1
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 __HWA_CONFIG_REG_v1 configRegisterStruct_i32s_i32s_o32s
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec0_32bit_No_3
const __HWA_CONFIG_REG_v1 configRegisterStruct_i8s_i8s_o8u
const __HWA_CONFIG_REG_v1 configRegisterStruct_i16s_i16s_o16s
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_biasVec1_32bit_No_3
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_scale_No_4
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 __HWA_OFFSET_REG offsetRegStruct_diagonal_32bit
const c7x::uchar_vec FFTLIB_vperm_convolve_col_biasVec1_32bit_No_2
const c7x::uchar_vec FFTLIB_vperm_convolve_col_scale_No_1
const __HWA_CONFIG_REG_v1 configRegisterStruct_i8u_i8s_o8u
const c7x::uchar_vec FFTLIB_vperm_convolve_col_splitGroups_biasVec1_32bit_No_1
const __HWA_CONFIG_REG_v1 configRegisterStruct_i16u_i16s_o16s
const __HWA_CONFIG_REG_v1 configRegisterStruct_i8s_i8s_o8s