DSPLIB User Guide
DSPLIB_mulConstant.cpp
Go to the documentation of this file.
1 /******************************************************************************
2  * *
3  * module name :DSPLIB *
4  * *
5  * module descripton :Matrix Multiply Accelerator Library module for C7x+MMA *
6  * *
7  * Copyright (C) 2017-2018 Texas Instruments Incorporated - https://www.ti.com/ *
8  * ALL RIGHTS RESERVED *
9  * *
10  ******************************************************************************/
11 
24 
26 {
27  int32_t privBufSize = sizeof(DSPLIB_mulConstant_PrivArgs);
28  return privBufSize;
29 }
30 
32  const DSPLIB_bufParams1D_t *bufParamsIn,
33  const DSPLIB_bufParams1D_t *bufParamsOut,
34  const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
35 {
37 
38 #if DSPLIB_DEBUGPRINT
39  printf("Enter DSPLIB_mulConstant_init_checkParams\n");
40 #endif
41  if (handle == NULL) {
42  status = DSPLIB_ERR_NULL_POINTER;
43  }
44 
45  if (status == DSPLIB_SUCCESS) {
46  if ((bufParamsIn->data_type != DSPLIB_INT16) && (bufParamsIn->data_type != DSPLIB_INT32) &&
47  (bufParamsIn->data_type != DSPLIB_INT8) && (bufParamsIn->data_type != DSPLIB_FLOAT32) &&
48  (bufParamsIn->data_type != DSPLIB_FLOAT64) && (bufParamsIn->data_type != DSPLIB_UINT8) &&
49  (bufParamsIn->data_type != DSPLIB_UINT16) && (bufParamsIn->data_type != DSPLIB_UINT32)) {
50  status = DSPLIB_ERR_INVALID_TYPE;
51  }
52  else if (bufParamsIn->data_type != bufParamsOut->data_type) {
53  status = DSPLIB_ERR_INVALID_TYPE;
54  }
55  else {
56  /* Nothing to do here */
57  }
58  }
59 
60  return status;
61 }
62 
64  const void *restrict pIn1,
65  const void *restrict pIn2,
66  const void *restrict pOut)
67 {
68  DSPLIB_STATUS status;
69 
70 #if DSPLIB_DEBUGPRINT
71  printf("Enter DSPLIB_mulConstant_exec_checkParams\n");
72 #endif
73  if ((pIn1 == NULL) || (pIn2 == NULL) || (pOut == NULL)) {
74  status = DSPLIB_ERR_NULL_POINTER;
75  }
76  else {
77  status = DSPLIB_SUCCESS;
78  }
79 
80  return status;
81 }
82 
84  DSPLIB_bufParams1D_t *bufParamsIn,
85  DSPLIB_bufParams1D_t *bufParamsOut,
86  const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
87 {
90 
91 #if DSPLIB_DEBUGPRINT
92  printf("DSPLIB_DEBUGPRINT Enter DSPLIB_mulConstant_init\n");
93 #endif
94  pKerPrivArgs->blockSize = pKerInitArgs->dataSize;
95 
96 #if DSPLIB_DEBUGPRINT
97  printf("DSPLIB_DEBUGPRINT DSPLIB_mulConstant_init pKerPrivArgs->blockSize %d bufParamsIn->data_type %d\n",
98  pKerPrivArgs->blockSize, bufParamsIn->data_type);
99 #endif
100 
101  if (pKerInitArgs->funcStyle == DSPLIB_FUNCTION_NATC) {
102  if (bufParamsIn->data_type == DSPLIB_FLOAT32) {
104  }
105  else if (bufParamsIn->data_type == DSPLIB_FLOAT64) {
107  }
108  else if (bufParamsIn->data_type == DSPLIB_INT8) {
110  }
111  else if (bufParamsIn->data_type == DSPLIB_UINT8) {
113  }
114  else if (bufParamsIn->data_type == DSPLIB_INT16) {
116  }
117  else if (bufParamsIn->data_type == DSPLIB_UINT16) {
119  }
120  else if (bufParamsIn->data_type == DSPLIB_INT32) {
122  }
123  else if (bufParamsIn->data_type == DSPLIB_UINT32) {
125  }
126  else {
127  status = DSPLIB_ERR_INVALID_TYPE;
128 #if DSPLIB_DEBUGPRINT
129  printf("DSPLIB_DEBUGPRINT CP 2 status %d\n", status);
130 #endif
131  }
132  }
133  else {
134  if (bufParamsIn->data_type == DSPLIB_FLOAT32) {
135 #if DSPLIB_DEBUGPRINT
136  printf("DSPLIB_DEBUGPRINT bufParamsIn->data_type == DSPLIB_FLOAT32\n");
137 #endif
139  status = DSPLIB_mulConstant_init_ci<float>(handle, bufParamsIn, bufParamsOut, pKerInitArgs);
140  }
141  else if (bufParamsIn->data_type == DSPLIB_FLOAT64) {
143  status = DSPLIB_mulConstant_init_ci<double>(handle, bufParamsIn, bufParamsOut, pKerInitArgs);
144  }
145  else if (bufParamsIn->data_type == DSPLIB_INT8) {
147  status = DSPLIB_mulConstant_init_ci<int8_t>(handle, bufParamsIn, bufParamsOut, pKerInitArgs);
148  }
149  else if (bufParamsIn->data_type == DSPLIB_UINT8) {
151  status = DSPLIB_mulConstant_init_ci<uint8_t>(handle, bufParamsIn, bufParamsOut, pKerInitArgs);
152  }
153  else if (bufParamsIn->data_type == DSPLIB_INT16) {
155  status = DSPLIB_mulConstant_init_ci<int16_t>(handle, bufParamsIn, bufParamsOut, pKerInitArgs);
156  }
157  else if (bufParamsIn->data_type == DSPLIB_UINT16) {
159  status = DSPLIB_mulConstant_init_ci<uint16_t>(handle, bufParamsIn, bufParamsOut, pKerInitArgs);
160  }
161  else if (bufParamsIn->data_type == DSPLIB_INT32) {
163  status = DSPLIB_mulConstant_init_ci<int32_t>(handle, bufParamsIn, bufParamsOut, pKerInitArgs);
164  }
165  else if (bufParamsIn->data_type == DSPLIB_UINT32) {
167  status = DSPLIB_mulConstant_init_ci<uint32_t>(handle, bufParamsIn, bufParamsOut, pKerInitArgs);
168  }
169  else {
170  status = DSPLIB_ERR_INVALID_TYPE;
171  }
172  }
173 #if DSPLIB_DEBUGPRINT
174  printf("DSPLIB_DEBUGPRINT CP 3 status %d\n", status);
175 #endif
176  return status;
177 }
178 
180 DSPLIB_mulConstant_exec(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
181 {
182  DSPLIB_STATUS status;
183 
184 #if DSPLIB_DEBUGPRINT
185  printf("DSPLIB_DEBUGPRINT Enter DSPLIB_mulConstant_exec\n");
186 #endif
187 
188  DSPLIB_mulConstant_PrivArgs *pKerPrivArgs = (DSPLIB_mulConstant_PrivArgs *) handle;
189 
190 #if DSPLIB_DEBUGPRINT
191  printf("DSPLIB_DEBUGPRINT pKerPrivArgs->blockSize %d\n", pKerPrivArgs->blockSize);
192 #endif
193  status = pKerPrivArgs->execute(handle, pIn1, pIn2, pOut);
194 
195  return status;
196 }
template DSPLIB_STATUS DSPLIB_mulConstant_exec_ci< int32_t, DSPLIB_INT32 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_init_ci< uint16_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_mulConstant_init_ci< int8_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_mulConstant_init_ci< int16_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_ci< uint16_t, DSPLIB_UINT16 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_init_ci< uint8_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_ci< uint8_t, DSPLIB_UINT8 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_init_ci< int32_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_ci< uint32_t, DSPLIB_UINT32 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_ci< int8_t, DSPLIB_INT8 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_ci< float, DSPLIB_FLOAT32 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_init_ci< uint32_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_ci< int16_t, DSPLIB_INT16 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_init_ci< double >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_ci< double, DSPLIB_FLOAT64 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_init_ci< float >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_cn< float, DSPLIB_FLOAT32 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_cn< uint32_t, DSPLIB_UINT32 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_cn< int32_t, DSPLIB_INT32 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_cn< int16_t, DSPLIB_INT16 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_cn< double, DSPLIB_FLOAT64 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_cn< int8_t, DSPLIB_INT8 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_cn< uint8_t, DSPLIB_UINT8 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_mulConstant_exec_cn< uint16_t, DSPLIB_UINT16 >(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
Header file for kernel's internal use. For the kernel's interface, please see DSPLIB_mulConstant.
DSPLIB_STATUS_NAME
The enumeration of all status codes.
Definition: DSPLIB_types.h:151
void * DSPLIB_kernelHandle
Handle type for DSPLIB operations.
Definition: DSPLIB_types.h:172
@ DSPLIB_FUNCTION_NATC
Definition: DSPLIB_types.h:176
@ DSPLIB_UINT8
@ DSPLIB_UINT16
@ DSPLIB_INT32
@ DSPLIB_INT16
@ DSPLIB_FLOAT32
@ DSPLIB_FLOAT64
@ DSPLIB_UINT32
@ DSPLIB_INT8
@ DSPLIB_SUCCESS
Definition: DSPLIB_types.h:152
@ DSPLIB_ERR_NULL_POINTER
Definition: DSPLIB_types.h:157
@ DSPLIB_ERR_INVALID_TYPE
Definition: DSPLIB_types.h:155
DSPLIB_STATUS DSPLIB_mulConstant_exec_checkParams(DSPLIB_kernelHandle handle, const void *restrict pIn1, const void *restrict pIn2, const void *restrict pOut)
This function checks the validity of the parameters passed to DSPLIB_mulConstant_exec function....
DSPLIB_STATUS DSPLIB_mulConstant_init(DSPLIB_kernelHandle handle, DSPLIB_bufParams1D_t *bufParamsIn, DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
This function should be called before the DSPLIB_mulConstant_exec function is called....
int32_t DSPLIB_mulConstant_getHandleSize(DSPLIB_mulConstant_InitArgs *pKerInitArgs)
This is a query function to calculate the size of internal handle.
DSPLIB_STATUS DSPLIB_mulConstant_exec(DSPLIB_kernelHandle handle, void *restrict pIn1, void *restrict pIn2, void *restrict pOut)
This function is the main kernel compute function.
DSPLIB_STATUS DSPLIB_mulConstant_init_checkParams(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_mulConstant_InitArgs *pKerInitArgs)
This function checks the validity of the parameters passed to DSPLIB_mulConstant_init function....
A structure for a 1 dimensional buffer descriptor.
uint32_t data_type
Values are of type DSPLIB_data_type_e.
Structure containing the parameters to initialize the kernel.
uint32_t dataSize
Size of input data
int8_t funcStyle
Variant of the function refer to DSPLIB_FUNCTION_STYLE
Structure that is reserved for internal use by the kernel.
pFxnDSPLIB_mulConstant_exec execute
Function pointer to point to the right execution variant between DSPLIB_mulConstant_exec_cn and DSPLI...
int32_t blockSize
Size of input buffer for different batches DSPLIB_mulConstant_init that will be retrieved and used by...