40 #include "../common/c71/VXLIB_inlines.h"
49 #define SE_PARAM_BASE (0x0000)
50 #define SE0_PARAM_OFFSET (SE_PARAM_BASE)
51 #define SE1_PARAM_OFFSET (SE0_PARAM_OFFSET + VXLIB_SE_PARAM_SIZE)
52 #define SA0_PARAM_OFFSET (SE1_PARAM_OFFSET + VXLIB_SE_PARAM_SIZE)
62 template <u
int32_t dTypeIn0>
72 __SE_TEMPLATE_v1 se0Params = __gen_SE_TEMPLATE_v1();
73 __SE_TEMPLATE_v1 se1Params = __gen_SE_TEMPLATE_v1();
74 __SA_TEMPLATE_v1 sa0Params = __gen_SA_TEMPLATE_v1();
78 uint8_t *pBlock = pKerPrivArgs->
bufPblock;
81 pKerPrivArgs->
numBlocks = VXLIB_SE0SE1SA0_init<dTypeIn0, dTypeIn0, dTypeIn0>(
82 &se0Params, &se1Params, &sa0Params, bufParamsIn0, bufParamsIn1, bufParamsOut);
129 template <>
inline c7x::uchar_vec VXLIB_absDiff_calc<c7x::uchar_vec>(c7x::uchar_vec vecA, c7x::uchar_vec vecB)
131 c7x::uchar_vec absDiffOut = (__abs_diff(vecA, vecB));
136 template <>
inline c7x::short_vec VXLIB_absDiff_calc<c7x::short_vec>(c7x::short_vec vecA, c7x::short_vec vecB)
138 c7x::short_vec absDiffOut = __abs(__sub_sat(vecA, vecB));
149 template <
typename dataType>
155 __SE_TEMPLATE_v1 se0Params;
156 __SE_TEMPLATE_v1 se1Params;
157 __SA_TEMPLATE_v1 sa0Params;
159 dataType *restrict pInLocal0 = (dataType *) pIn0;
160 dataType *restrict pInLocal1 = (dataType *) pIn1;
161 dataType *restrict pOutLocal = (dataType *) pOut;
164 printf(
"Enter VXLIB_add_exec_ci\n");
167 typedef typename c7x::make_full_vector<dataType>::type vec;
170 printf(
"Enter eleCount %d\n", eleCount);
172 uint8_t *pBlock = pKerPrivArgs->
bufPblock;
179 __SE0_OPEN(pInLocal0, se0Params);
180 __SE1_OPEN(pInLocal1, se1Params);
183 __SA0_OPEN(sa0Params);
185 size_t numBlocks = pKerPrivArgs->
numBlocks;
188 for (uint32_t counter = 0; counter < numBlocks; counter++) {
189 vec a = c7x::strm_eng<0, vec>::get_adv();
190 vec b = c7x::strm_eng<1, vec>::get_adv();
194 __vpred tmp = c7x::strm_agen<0, vec>::get_vpred();
195 vec *addr = c7x::strm_agen<0, vec>::get_adv(pOutLocal);
197 __vstore_pred(tmp, addr, out);
215 void *restrict pOut);
220 void *restrict pOut);
template VXLIB_STATUS VXLIB_absDiff_init_ci< VXLIB_INT16 >(VXLIB_kernelHandle handle, const VXLIB_bufParams2D_t *bufParamsIn0, const VXLIB_bufParams2D_t *bufParamsIn1, const VXLIB_bufParams2D_t *bufParamsOut, const VXLIB_absDiff_InitArgs *pKerInitArgs)
template VXLIB_STATUS VXLIB_absDiff_exec_ci< uint8_t >(VXLIB_kernelHandle handle, void *restrict pIn0, void *restrict pIn1, void *restrict pOut)
dataType VXLIB_absDiff_calc(dataType vecA, dataType vecB)
VXLIB_STATUS VXLIB_absDiff_exec_ci(VXLIB_kernelHandle handle, void *restrict pIn0, void *restrict pIn1, void *restrict pOut)
This function is the main execution function for the C7x implementation of the kernel....
template VXLIB_STATUS VXLIB_absDiff_exec_ci< int16_t >(VXLIB_kernelHandle handle, void *restrict pIn0, void *restrict pIn1, void *restrict pOut)
template VXLIB_STATUS VXLIB_absDiff_init_ci< VXLIB_UINT8 >(VXLIB_kernelHandle handle, const VXLIB_bufParams2D_t *bufParamsIn0, const VXLIB_bufParams2D_t *bufParamsIn1, const VXLIB_bufParams2D_t *bufParamsOut, const VXLIB_absDiff_InitArgs *pKerInitArgs)
VXLIB_STATUS VXLIB_absDiff_init_ci(VXLIB_kernelHandle handle, const VXLIB_bufParams2D_t *bufParamsIn0, const VXLIB_bufParams2D_t *bufParamsIn1, const VXLIB_bufParams2D_t *bufParamsOut, const VXLIB_absDiff_InitArgs *pKerInitArgs)
This function is the initialization function for the C7x implementation of the kernel....
Header file for kernel's internal use. For the kernel's interface, please see VXLIB_absDiff.
void * VXLIB_kernelHandle
Handle type for VXLIB operations.
VXLIB_STATUS_NAME
The enumeration of all status codes.
Structure containing the parameters to initialize the kernel.
Structure that is reserved for internal use by the kernel.
size_t numBlocks
Number of blocks to be processed after simidfication.
uint8_t bufPblock[VXLIB_ABSDIFF_IXX_IXX_OXX_PBLOCK_SIZE]
A structure for a 2 dimensional buffer descriptor.