32 template <
typename dataType>
47 int32_t M = pKerPrivArgs->
M;
48 int32_t K = pKerPrivArgs->
K;
49 int32_t N = pKerPrivArgs->
N;
50 qs = pKerPrivArgs->
qs;
56 printf(
"Enter DSPLIB_matMul_fixed_exec_cn\n");
60 printf(
"DSPLIB_matMul_fixed_exec_cn: M = %d, N = %d, K = %d, strideIn0 = %d, strideIn1 = %d, strideOut = %d\n", M, N, K,
61 strideIn0, strideIn1, strideOut);
64 dataType *restrict A = (dataType *) pIn0;
65 dataType *restrict B = (dataType *) pIn1;
67 dataType *restrict C = (dataType *) pOut;
69 for (m = 0; m < M; m++) {
70 for (n = 0; n < N; n++) {
72 for (k = 0; k < K; k++) {
73 product = A[k + m * strideIn0] * B[n + k * strideIn1];
76 C[n + m * strideOut] = (int64_t)((uint64_t)sum >> (uint64_t)qs);
template DSPLIB_STATUS DSPLIB_matMul_fixed_exec_cn< int8_t >(DSPLIB_kernelHandle handle, void *restrict pIn0, void *restrict pIn1, void *restrict pOut)
DSPLIB_STATUS DSPLIB_matMul_fixed_exec_cn(DSPLIB_kernelHandle handle, void *restrict pIn0, void *restrict pIn1, void *restrict pOut)
This function is the main execution function for the natural C implementation of the kernel....
template DSPLIB_STATUS DSPLIB_matMul_fixed_exec_cn< int16_t >(DSPLIB_kernelHandle handle, void *restrict pIn0, void *restrict pIn1, void *restrict pOut)
Header file for kernel's internal use. For the kernel's interface, please see DSPLIB_matMul_fixed.
DSPLIB_STATUS_NAME
The enumeration of all status codes.
void * DSPLIB_kernelHandle
Handle type for DSPLIB operations.
Structure that is reserved for internal use by the kernel.
int32_t strideIn0Elements
int32_t strideOutElements
int32_t strideIn1Elements