48 #if __C7X_VEC_SIZE_BITS__ == 256
49 uchar32 vMask16 = uchar32(1,
81 uchar32 vMask32 = uchar32(3,
113 uchar32 vMask64 = uchar32(7,
145 #elif __C7X_VEC_SIZE_BITS__ == 512
146 uchar64 vMask16 = uchar64(1,
210 uchar64 vMask32 = uchar64(3,
275 uchar64 vMask64 = uchar64(7,
350 template <
typename dataType>
361 uint32_t blockSize = pKerPrivArgs->
blockSize;
363 typedef typename c7x::make_full_vector<dataType>::type vec;
365 uint8_t *pBlock = pKerPrivArgs->
bufPblock;
366 __SE_VECLEN SE_VECLEN = c7x::se_veclen<vec>::value;
367 __SA_VECLEN SA_VECLEN = c7x::sa_veclen<vec>::value;
368 __SE_ELETYPE SE_ELETYPE = c7x::se_eletype<vec>::value;
370 __SE_TEMPLATE_v1 se0Params = __gen_SE_TEMPLATE_v1();
371 se0Params.DIMFMT = __SE_DIMFMT_1D;
372 se0Params.ELETYPE = SE_ELETYPE;
373 se0Params.VECLEN = SE_VECLEN;
374 se0Params.ICNT0 = blockSize;
376 __SA_TEMPLATE_v1 sa0Params = __gen_SA_TEMPLATE_v1();
377 sa0Params.DIMFMT = __SA_DIMFMT_1D;
378 sa0Params.VECLEN = SA_VECLEN;
379 sa0Params.ICNT0 = blockSize;
426 template <
typename dataType, u
int32_t maskType>
433 uint32_t blockSize = pKerPrivArgs->
blockSize;
435 typedef typename c7x::make_full_vector<dataType>::type vec;
436 uint32_t eleCount = c7x::element_count_of<vec>::value;
437 __SE_TEMPLATE_v1 se0Params;
438 __SA_TEMPLATE_v1 sa0Params;
440 dataType *srcPtr = (dataType *) pIn;
441 dataType *dstPtr = (dataType *) pOut;
447 DSPLIB_DEBUGPRINTFN(0,
"srcPtr: %p dstPtr: %p blockSize: %d\n", srcPtr, dstPtr, blockSize);
449 uint8_t *pBlock = pKerPrivArgs->
bufPblock;
454 __SE0_OPEN(srcPtr, se0Params);
455 __SA0_OPEN(sa0Params);
457 c7x::uchar_vec vMask = blk_eswap_mask<maskType>();
458 for (cntr = 0; cntr < blockSize; cntr += eleCount) {
459 vec inpBlock = c7x::strm_eng<0, vec>::get_adv();
460 vec swappedBlock = c7x::reinterpret<vec>(__permute(vMask, c7x::as_uchar_vec(inpBlock)));
461 __vpred vpStore = c7x::strm_agen<0, vec>::get_vpred();
462 vec *outVecPtr = c7x::strm_agen<0, vec>::get_adv(dstPtr);
463 __vstore_pred(vpStore, outVecPtr, swappedBlock);
#define SE_SE0_PARAM_OFFSET
#define SE_SA0_PARAM_OFFSET
template DSPLIB_STATUS DSPLIB_blk_eswap_exec_ci< int64_t, DSPLIB_UINT64 >(DSPLIB_kernelHandle handle, void *restrict pIn, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_blk_eswap_init_ci< int16_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_blk_eswap_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_blk_eswap_exec_ci< uint16_t, DSPLIB_UINT16 >(DSPLIB_kernelHandle handle, void *restrict pIn, void *restrict pOut)
c7x::uchar_vec blk_eswap_mask< DSPLIB_UINT16 >()
template DSPLIB_STATUS DSPLIB_blk_eswap_init_ci< uint32_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_blk_eswap_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_blk_eswap_exec_ci< double, DSPLIB_UINT64 >(DSPLIB_kernelHandle handle, void *restrict pIn, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_blk_eswap_init_ci< uint16_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_blk_eswap_InitArgs *pKerInitArgs)
DSPLIB_STATUS DSPLIB_blk_eswap_exec_ci(DSPLIB_kernelHandle handle, void *restrict pIn, void *restrict pOut)
This function is the main execution function for the C7x implementation of the kernel....
template DSPLIB_STATUS DSPLIB_blk_eswap_init_ci< double >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_blk_eswap_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_blk_eswap_init_ci< uint64_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_blk_eswap_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_blk_eswap_exec_ci< int32_t, DSPLIB_UINT32 >(DSPLIB_kernelHandle handle, void *restrict pIn, void *restrict pOut)
c7x::uchar_vec blk_eswap_mask< DSPLIB_UINT64 >()
template DSPLIB_STATUS DSPLIB_blk_eswap_exec_ci< uint32_t, DSPLIB_UINT32 >(DSPLIB_kernelHandle handle, void *restrict pIn, void *restrict pOut)
c7x::uchar_vec blk_eswap_mask< DSPLIB_UINT32 >()
template DSPLIB_STATUS DSPLIB_blk_eswap_exec_ci< int16_t, DSPLIB_UINT16 >(DSPLIB_kernelHandle handle, void *restrict pIn, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_blk_eswap_init_ci< int32_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_blk_eswap_InitArgs *pKerInitArgs)
template DSPLIB_STATUS DSPLIB_blk_eswap_exec_ci< float, DSPLIB_UINT32 >(DSPLIB_kernelHandle handle, void *restrict pIn, void *restrict pOut)
DSPLIB_STATUS DSPLIB_blk_eswap_init_ci(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_blk_eswap_InitArgs *pKerInitArgs)
This function is the initialization function for the C7x implementation of the kernel....
template DSPLIB_STATUS DSPLIB_blk_eswap_init_ci< float >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_blk_eswap_InitArgs *pKerInitArgs)
c7x::uchar_vec blk_eswap_mask()
template DSPLIB_STATUS DSPLIB_blk_eswap_exec_ci< uint64_t, DSPLIB_UINT64 >(DSPLIB_kernelHandle handle, void *restrict pIn, void *restrict pOut)
template DSPLIB_STATUS DSPLIB_blk_eswap_init_ci< int64_t >(DSPLIB_kernelHandle handle, const DSPLIB_bufParams1D_t *bufParamsIn, const DSPLIB_bufParams1D_t *bufParamsOut, const DSPLIB_blk_eswap_InitArgs *pKerInitArgs)
Header file for kernel's internal use. For the kernel's interface, please see DSPLIB_blk_eswap.
#define DSPLIB_DEBUGPRINTFN(N, fmt,...)
DSPLIB_STATUS_NAME
The enumeration of all status codes.
void * DSPLIB_kernelHandle
Handle type for DSPLIB operations.
Structure containing the parameters to initialize the kernel.
Structure that is reserved for internal use by the kernel.
uint8_t bufPblock[DSPLIB_BLK_ESWAP_IXX_IXX_OXX_PBLOCK_SIZE]
Buffer to save SE & SA configuration parameters
int32_t blockSize
Size of input buffer for different batches DSPLIB_blk_eswap_init that will be retrieved and used by D...
A structure for a 1 dimensional buffer descriptor.