23 #ifndef COMMON_MMALIB_TYPES_H_
24 #define COMMON_MMALIB_TYPES_H_ 1
28 #ifndef __OPENCL_VERSION__
41 #include "c71/MMALIB_defines.h"
43 #include "c7524/MMALIB_types.h"
44 #include "c7524/MMALIB_defines.h"
49 #if !defined(MMALIB_DEBUGPRINT)
50 #define MMALIB_DEBUGPRINT 0
53 #if (defined(_HOST_BUILD) && (MMALIB_COMPILER_VERSION < 1003999))
56 #define MMALIB_const const
59 #define __PRAGMA(x) _Pragma(#x)
61 # define __INLINE_FUNC(x) __PRAGMA(FUNC_ALWAYS_INLINE)
63 # define __INLINE_FUNC(x) __PRAGMA(FUNC_ALWAYS_INLINE(x))
71 #define MMALIB_PRINTF(fmt,...) \
73 fprintf(stdout, fmt, __VA_ARGS__); \
76 #if MMALIB_DEBUGPRINT > 0
77 #define MMALIB_DEBUGPRINTFN(N, fmt, ...) \
79 if (MMALIB_DEBUGPRINT >= (N)) { \
80 fprintf(stdout, "MMALIB debug %s - %d: " fmt, __FUNCTION__, __LINE__, \
87 #define MMALIB_DEBUGPRINTFN(N, fmt, ...)
91 #if defined(MMALIB_MESSAGES)
94 #define MMALIB_MESG(fmt, ...) fprintf(stderr, fmt, __VA_ARGS__)
96 #define MMALIB_MESG(fmt, ...)
117 #define MMALIB_SOFT_MMA_RESET 0
120 #define MMALIB_STATIC_INLINE static inline
124 #include <c7x_scalable.h>
126 extern const c7x::uchar_vec MMALIB_zeroVect_uchar_vec;
127 extern const c7x::ushort_vec MMALIB_zeroVect_ushort_vec;
128 extern const c7x::uchar_vec MMALIB_vperm_data_0_63;
304 #define MMALIB_PARAM_SIZE 128
305 #define MMALIB_BYTE_WIDTH __MMA_A_COLS(sizeof(int8_t))
306 #define MMALIB_MMA_ACCUMULATOR_BYTE_WIDTH_8_BIT 4
307 #define MMALIB_MMA_ACCUMULATOR_BYTE_WIDTH_16_BIT 8
308 #define MMALIB_MMA_ACCUMULATOR_BYTE_WIDTH_32_BIT 16
317 #define MMALIB_ALIGN_SHIFT_64BYTES \
319 #define MMALIB_ALIGN_SHIFT_128BYTES \
321 #define MMALIB_ALIGN_SHIFT_256BYTES \
324 #define MMALIB_ALIGN_64BYTES \
325 (1 << MMALIB_ALIGN_SHIFT_64BYTES)
326 #define MMALIB_ALIGN_128BYTES \
327 (1 << MMALIB_ALIGN_SHIFT_128BYTES)
328 #define MMALIB_ALIGN_256BYTES \
329 (1 << MMALIB_ALIGN_SHIFT_256BYTES)
331 #define MMALIB_L2DATA_ALIGN_SHIFT \
332 MMALIB_ALIGN_SHIFT_64BYTES
336 #define MMALIB_L2DATA_ALIGNMENT (((uint32_t)1) << ((uint32_t)MMALIB_L2DATA_ALIGN_SHIFT))
345 #define MMALIB_MMA_SIZE_8_BIT __MMA_A_COLS(sizeof(int8_t))
346 #define MMALIB_MMA_SIZE_16_BIT __MMA_A_COLS(sizeof(int16_t))
347 #define MMALIB_MMA_SIZE_32_BIT __MMA_A_COLS(sizeof(int32_t))
350 #define MMALIB_MMA_BIAS_SIZE_32_BIT __MMA_A_COLS(sizeof(int32_t))
351 #define MMALIB_MMA_BIAS_SIZE_64_BIT ((MMALIB_MMA_BIAS_SIZE_32_BIT) >> 1)
371 #if defined(_HOST_BUILD)
372 #define MMALIB_asm(string) ;
374 #define MMALIB_asm(string); asm(string);
384 #if defined(_HOST_BUILD)
386 #define xstr(x) str(x)
388 #define __attribute__()
389 #define MMALIB_UNROLL(count)
391 #define MMALIB_UNROLL(count) _Pragma(str(UNROLL(count)))
394 #define MMALIB_UNROLL(COUNT) [[TI::unroll(COUNT)]]
397 #if defined(_HOST_BUILD)
399 #define __attribute__()
400 #define MMALIB_MUST_ITERATE(initial, max, multiple)
402 #define MMALIB_MUST_ITERATE(initial, max, multiple) _Pragma(str(MUST_ITERATE(initial, max, multiple)))
405 #define MMALIB_MUST_ITERATE(INTIAL, MAX, MULTIPLE) [[TI::must_iterate(INTIAL, MAX, MULTIPLE)]]
408 #ifndef MMALIB_NUMBER_RANDOM_DIM_TESTS
409 #define MMALIB_MAX_TEST_PER_KERNEL 1024
412 #ifndef MMALIB_NUMBER_RANDOM_DIM_TESTS
413 #define MMALIB_NUMBER_RANDOM_DIM_TESTS 1
416 #define MMALIB_PERFORMANCE_TEST_PATTERN RANDOM_SIGNED
418 #define MMALIB_TEST_OUTPUT_HEAP 0
419 #if defined(_HOST_BUILD)
422 #define MMALIB_TEST_OUTPUT_MSMC MMALIB_TEST_OUTPUT_HEAP
424 #define MMALIB_TEST_OUTPUT_MSMC 1
427 #define STRIDE_OPT_4CYCLE 1
440 #define MMALIB_min(x, y) \
441 (((x) < (y)) ? (x) : (y))
442 #define MMALIB_max(x, y) \
443 (((x) < (y)) ? (y) : (x))
444 #define MMALIB_ceilingDiv(x, y) \
455 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i32f_i32f_o32f;
456 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i32s_i32s_o32s;
458 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i16s_i16s_o16s;
459 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i16s_i16s_o16u;
460 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i16u_i16s_o16s;
461 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i16u_i16s_o16u;
463 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i8s_i8s_o8s;
464 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i8s_i8s_o8u;
465 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i8u_i8s_o8s;
466 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i8u_i8s_o8u;
467 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i8s_i8u_o8s;
468 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i8u_i8u_o8s;
469 extern const MMALIB_MMA_CONFIG_REG configRegisterStruct_i8u_i8u_o8u;
471 extern const __HWA_OFFSET_REG offsetRegStruct_zeros;
472 extern const __HWA_OFFSET_REG offsetRegStruct_diagonal_32bit;
473 extern const __HWA_OFFSET_REG offsetRegStruct_diagonal_16bit;
474 extern const __HWA_OFFSET_REG offsetRegStruct_diagonal_8bit;
File to hold buffer parameter related info for MMALIB.
MMALIB_tensor_format_e MMALIB_tensor_format
MMALIB_LUT_type_e
The enumeration of possible look-up table (LUT) settings.
MMALIB_STATUS_NAME
The enumeration of all status codes.
MMALIB_STATUS_NAME MMALIB_STATUS
Return value for MMALIB functions.
float MMALIB_F32
Single precision floating point.
MMALIB_FUNCTION_STYLE
Enumeration for the style of function implementation.
void * MMALIB_kernelHandle
Handle type for MMALIB operations.
MMALIB_buffer_mode_e
Buffer structure for input feature maps and coefficients of MMALIB_CNN_convolve_row_ixX_ixX_oxX.
double MMALIB_D64
Double precision floating point.
MMALIB_LUT_type_e MMALIB_LUT_type
MMALIB_tensor_format_e
Tensor format.
@ MMALIB_LUT_NONE
No lookup table post processing.
@ MMALIB_LUT_ILUT
Use ILUT post processing.
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_SUBMCHANNELS
@ MMALIB_ERR_INVALID_ACTIVATION
@ MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_TYPE_COMBINATION
@ MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_WEIGHTS_TYPE
@ MMALIB_ERR_CONVOLVE_COL_INVALID_SHIFTMETHOD
@ MMALIB_ERR_POINTWISE_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_INPUT_TYPE
@ MMALIB_ERR_INVALID_VALUE
@ MMALIB_ERR_CONVOLVE_COL_INVALID_BIASB_TYPE
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_ROWS_STRIDE
@ MMALIB_ERR_DECONVOLVE_ROW_INVALID_BUFFER_SIZES
@ MMALIB_ERR_TENSOR_CONVERT_UNSUPPORTED_TYPE_COMBINATION
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_NUM_OUTPUT_CHANNELS_PER_GROUP
@ MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_WEIGHTS_DIMENSION
@ MMALIB_ERR_MATRIX_TRANSPOSE_UNSUPPORTED_INPUT_TYPE
@ MMALIB_ERR_DECONVOLVE_ROW_INVALID_PAD
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_ROWS_STRIDE
@ MMALIB_ERR_POINTWISE_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_TYPE_COMBINATION
@ MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_ACCUMULATE_UNSUPPORTED_TYPE_COMBINATION
@ MMALIB_ERR_NOT_EQUAL_WIDTH_STRIDE
@ MMALIB_ERR_PIXELSHUFFLE_ROW_UNSUPPORTED_STRIDE
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_INITARGS
@ MMALIB_ERR_CONVOLVE_COL_INVALID_SHIFTVALUES
@ MMALIB_ERR_CONVOLVE_COL_INVALID_BIASBVALUES
@ MMALIB_ERR_DECONVOLVE_ROW_INVALID_SUBMCHANNELS
@ MMALIB_ERR_CONVOLVE_COL_INVALID_CASE
@ MMALIB_ERR_POINTWISE_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_OUTPUT_TYPE
@ MMALIB_ERR_PIXELSHUFFLE_ROW_UNSUPPORTED_TYPE_COMBINATION
@ MMALIB_ERR_DECONVOLVE_ROW_INVALID_STRIDE
@ MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_TYPE_COMBINATION
@ MMALIB_ERR_NULL_POINTER
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_INCHOFFSET_CIRCULAR
@ MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_OUTPUT_TYPE
@ MMALIB_ERR_MATRIX_TRANSPOSE_UNSUPPORTED_TYPE_COMBINATION
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_SUBMCHANNELS
@ MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_OUTPUT_FEATURE_MAP_TYPE
@ MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_STRIDE
@ MMALIB_ERR_NOT_ALIGNED_PTRS_STRIDES
@ MMALIB_ERR_MATRIX_TRANSPOSE_UNSUPPORTED_OUTPUT_TYPE
@ MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_ACCUMULATE_UNSUPPORTED_INPUT_TYPE
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_KDIM
@ MMALIB_ERR_INVALID_SHIFT
@ MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_STRIDE_DILATION_COMBINATION
@ MMALIB_ERR_INVALID_TYPE
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_VALIDCOLSIN
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_SUBMCHANNELS_STRIDE
@ MMALIB_ERR_FULLYCONNECTED_INVALID_TYPE_COMBINATION
@ MMALIB_ERR_CONVOLVE_COL_INVALID_NUMBIASVALS
@ MMALIB_ERR_FULLYCONNECTED_INVALID_TYPE_RELU_COMBINATION
@ MMALIB_ERR_NOT_ALIGNED_WIDTHS
@ MMALIB_ERR_TENSOR_CONVERT_INVALID_TYPE_COMBINATION
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_INCHOFFSET_CIRCULAR
@ MMALIB_ERR_DECONVOLVE_ROW_INVALID_INIT_ARGS
@ MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_UNSUPPORTED_INPUT_TYPE
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_BUFFER_DIMENSION
@ MMALIB_ERR_NOT_IMPLEMENTED
@ MMALIB_ERR_TENSOR_CONVERT_UNSUPPORTED_PAD_DIMENSION
@ MMALIB_ERR_TENSOR_CONVERT_UNSUPPORTED_CONVRSION_FORMAT
@ MMALIB_ERR_BUFFER_TOO_SMALL
@ MMALIB_ERR_FULLYCONNECTED_INVALID_DIMENSION_COMBINATION
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_NUM_GROUPS_PER_KERNEL
@ MMALIB_ERR_CONVOLVE_ROW_UNSUPPORTED_STRIDE
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_UPSCALE_FACTOR
@ MMALIB_ERR_INVALID_DIMENSION
@ MMALIB_ERR_CONVOLVE_ROW_UNSUPPORTED_TYPE_COMBINATION
@ MMALIB_ERR_DECONVOLVE_ROW_INVALID_KERNEL_SIZE
@ MMALIB_ERR_TENSOR_CONVERT_UNSUPPORTED_CHANNEL_DIMENSION
@ MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_INPUT_FEATURE_MAP_TYPE
@ MMALIB_ERR_CONVOLVE_COL_UNSUPPORTED_GROUPING
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_PAD_VALUES
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_PTR_STRIDE
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_NUM_GROUPS_PER_KERNEL_STRIDED
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_PITCHA
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_INITARGS
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_NUMOFOUTPUTCHKERBUF
@ MMALIB_ERR_MATRIX_MATRIX_MULTIPLY_ACCUMULATE_UNSUPPORTED_OUTPUT_TYPE
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_PTR_STRIDE
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_VALIDCOLSIN
@ MMALIB_ERR_CONVOLVE_COL_INVALID_PAD_VALUES
@ MMALIB_ERR_DECONVOLVE_ROW_INVALID_BUFFER_DIMENSION_WEIGHTS
@ MMALIB_ERR_CONVOLVE_ROW_INVALID_BUFFER_DIMENSION
@ MMALIB_ERR_PIXELSHUFFLE_ROW_INVALID_SUBMCHANNELS_STRIDE
@ MMALIB_ERR_DECONVOLVE_ROW_INVALID_DILATION
@ MMALIB_ERR_TENSOR_CONVERT_INVALID_DIMENSION_COMBINATION
@ MMALIB_FUNCTION_OPTIMIZED
@ MMALIB_BUF_CIRCULAR
Circular buffer for coefficients.
@ MMALIB_LINEAR
Linear buffer.
@ MMALIB_HWC
Used when tensor is in NHWC format.
@ MMALIB_CHW
Used when tensor is in NCHW format.