FFTLIB User Guide
FFTLIB_FFT_dftLarge_ixX_cxX_oxX.h
Go to the documentation of this file.
1 /*******************************************************************************
2 **+--------------------------------------------------------------------------+**
3 **| **** |**
4 **| **** |**
5 **| ******o*** |**
6 **| ********_///_**** |**
7 **| ***** /_//_/ **** |**
8 **| ** ** (__/ **** |**
9 **| ********* |**
10 **| **** |**
11 **| *** |**
12 **| |**
13 **| Copyright (c) 2016 Texas Instruments Incorporated |**
14 **| |**
15 **| All rights reserved not granted herein. |**
16 **| |**
17 **| Limited License. |**
18 **| |**
19 **| Texas Instruments Incorporated grants a world-wide, royalty-free, |**
20 **| non-exclusive license under copyrights and patents it now or |**
21 **| hereafter owns or controls to make, have made, use, import, offer to |**
22 **| sell and sell ("Utilize") this software subject to the terms herein. |**
23 **| With respect to the foregoing patent license, such license is granted |**
24 **| solely to the extent that any such patent is necessary to Utilize the |**
25 **| software alone. The patent license shall not apply to any |**
26 **| combinations which include this software, other than combinations |**
27 **| with devices manufactured by or for TI ("TI Devices"). No hardware |**
28 **| patent is licensed hereunder. |**
29 **| |**
30 **| Redistributions must preserve existing copyright notices and |**
31 **| reproduce this license (including the above copyright notice and the |**
32 **| disclaimer and (if applicable) source code license limitations below) |**
33 **| in the documentation and/or other materials provided with the |**
34 **| distribution |**
35 **| |**
36 **| Redistribution and use in binary form, without modification, are |**
37 **| permitted provided that the following conditions are met: |**
38 **| |**
39 **| * No reverse engineering, decompilation, or disassembly of this |**
40 **| software is permitted with respect to any software provided in binary |**
41 **| form. |**
42 **| |**
43 **| * any redistribution and use are licensed by TI for use only with |**
44 **| TI Devices. |**
45 **| |**
46 **| * Nothing shall obligate TI to provide you with source code for |**
47 **| the software licensed and provided to you in object code. |**
48 **| |**
49 **| If software source code is provided to you, modification and |**
50 **| redistribution of the source code are permitted provided that the |**
51 **| following conditions are met: |**
52 **| |**
53 **| * any redistribution and use of the source code, including any |**
54 **| resulting derivative works, are licensed by TI for use only with TI |**
55 **| Devices. |**
56 **| |**
57 **| * any redistribution and use of any object code compiled from the |**
58 **| source code and any resulting derivative works, are licensed by TI |**
59 **| for use only with TI Devices. |**
60 **| |**
61 **| Neither the name of Texas Instruments Incorporated nor the names of |**
62 **| its suppliers may be used to endorse or promote products derived from |**
63 **| this software without specific prior written permission. |**
64 **| |**
65 **| DISCLAIMER. |**
66 **| |**
67 **| THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY |**
68 **| EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |**
69 **| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |**
70 **| PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TI AND TI'S LICENSORS BE |**
71 **| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |**
72 **| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |**
73 **| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |**
74 **| BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |**
75 **| WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |**
76 **| OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |**
77 **| EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |**
78 **+--------------------------------------------------------------------------+**
79 *******************************************************************************/
80 
81 #ifndef FFTLIB_FFT_DFTLARGE_IXX_CXX_OXX_H_
82 #define FFTLIB_FFT_DFTLARGE_IXX_CXX_OXX_H_
83 
84 #include "../../common/FFTLIB_types.h"
85 #include "../../linalg_c7xmma/FFTLIB_LINALG_matrixMatrixMultiply_ixX_ixX_oxX/FFTLIB_LINALG_matrixMatrixMultiply_ixX_ixX_oxX.h"
86 
87 #ifdef __cplusplus
88 extern "C" {
89 #endif
90 
113 #define FFTLIB_FFT_DFTLARGE_IXX_CXX_OXX_NUMSHIFTS 1
114 
118 typedef struct {
120  int8_t funcStyle;
123  uint32_t fftSize;
125  uint32_t batchSize;
130  uint32_t interleave;
141 
154 
177  const FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs,
178  FFTLIB_bufParams1D_t *bufParamsX,
179  FFTLIB_bufParams1D_t *bufParamsW,
180  FFTLIB_bufParams1D_t *bufParamsY);
181 
200  const FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs,
201  void *pW,
202  const FFTLIB_bufParams1D_t *bufParamsW);
203 
228  FFTLIB_kernelHandle handle,
229  const FFTLIB_bufParams1D_t *bufParamsX,
230  const FFTLIB_bufParams1D_t *bufParamsW,
231  const FFTLIB_bufParams1D_t *bufParamsY,
232  const FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs);
233 
259  FFTLIB_kernelHandle handle,
260  const FFTLIB_bufParams1D_t *bufParamsX,
261  const FFTLIB_bufParams1D_t *bufParamsW,
262  const FFTLIB_bufParams1D_t *bufParamsY,
263  const FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs);
264 
296  const void *restrict pX,
297  const void *restrict pW,
298  void *restrict pY);
299 
322  const void *restrict pX,
323  const void *restrict pW,
324  const void *restrict pY);
325 
349  FFTLIB_kernelHandle handle,
350  const FFTLIB_bufParams1D_t *bufParamsX,
351  const FFTLIB_bufParams1D_t *bufParamsY,
352  const FFTLIB_bufParams1D_t *bufParamsW,
353  uint32_t fftSize,
354  uint32_t batchSize,
355  uint64_t *archCycles,
356  uint64_t *estCycles);
357 
360 #ifdef __cplusplus
361 }
362 #endif
363 
364 #endif /* FFTLIB_FFT_DFTLARGE_IXX_CXX_OXX_H_ */
365 
366 /* ======================================================================== */
367 /* End of file: FFTLIB_FFT_dftLarge_ixX_cxX_oxX.h */
368 /* ======================================================================== */
void * FFTLIB_kernelHandle
Handle type for FFTLIB operations.
Definition: FFTLIB_types.h:217
FFTLIB_STATUS_NAME
The enumeration of all status codes.
Definition: FFTLIB_types.h:172
#define FFTLIB_FFT_DFTLARGE_IXX_CXX_OXX_NUMSHIFTS
Macro to define the number of bit-shifts that are to be provided for use in the internal DFT computat...
FFTLIB_STATUS FFTLIB_FFT_dftLarge_ixX_cxX_oxX_exec_checkParams(FFTLIB_kernelHandle handle, const void *restrict pX, const void *restrict pW, const void *restrict pY)
This function checks the validity of the parameters passed to FFTLIB_FFT_dftLarge_ixX_cxX_oxX_exec fu...
FFTLIB_STATUS FFTLIB_FFT_dftLarge_ixX_cxX_oxX_twGen(const FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs, void *pW, const FFTLIB_bufParams1D_t *bufParamsW)
This is a utility function that generates the DFT computational matrix into the provided buffer.
FFTLIB_STATUS FFTLIB_FFT_dftLarge_ixX_cxX_oxX_getSizes(const FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs, FFTLIB_bufParams1D_t *bufParamsX, FFTLIB_bufParams1D_t *bufParamsW, FFTLIB_bufParams1D_t *bufParamsY)
This is a query function to calculate the sizes of input, output and the DFT computational matrix buf...
int32_t FFTLIB_FFT_dftLarge_ixX_cxX_oxX_getHandleSize(FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This is a query function to calculate the size of internal handle.
FFTLIB_STATUS FFTLIB_FFT_dftLarge_ixX_cxX_oxX_init_checkParams(FFTLIB_kernelHandle handle, const FFTLIB_bufParams1D_t *bufParamsX, const FFTLIB_bufParams1D_t *bufParamsW, const FFTLIB_bufParams1D_t *bufParamsY, const FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This function checks the validity of the parameters passed to FFTLIB_FFT_dftLarge_ixX_cxX_oxX_init fu...
FFTLIB_STATUS FFTLIB_FFT_dftLarge_ixX_cxX_oxX_init(FFTLIB_kernelHandle handle, const FFTLIB_bufParams1D_t *bufParamsX, const FFTLIB_bufParams1D_t *bufParamsW, const FFTLIB_bufParams1D_t *bufParamsY, const FFTLIB_FFT_dftLarge_ixX_cxX_oxX_InitArgs *pKerInitArgs)
This function should be called before the FFTLIB_FFT_dftLarge_ixX_cxX_oxX_exec function is called....
FFTLIB_STATUS FFTLIB_FFT_dftLarge_ixX_cxX_oxX_exec(FFTLIB_kernelHandle handle, const void *restrict pX, const void *restrict pW, void *restrict pY)
This function is the main kernel compute function.
void FFTLIB_FFT_dftLarge_ixX_cxX_oxX_perfEst(FFTLIB_kernelHandle handle, const FFTLIB_bufParams1D_t *bufParamsX, const FFTLIB_bufParams1D_t *bufParamsY, const FFTLIB_bufParams1D_t *bufParamsW, uint32_t fftSize, uint32_t batchSize, uint64_t *archCycles, uint64_t *estCycles)
This is a utility function that gives an estimate of the cycles consumed for the kernel execution.
Structure containing the parameters for DFT computation.
int8_t funcStyle
Variant of the function refer to FFTLIB_FUNCTION_STYLE.
uint32_t interleave
Flag to indicate if the real and imaginary parts of data are interleaved or not. A value of 1 indicat...
uint32_t batchSize
Size of the batch in terms of number of channels of DFT's.
uint32_t fftSize
Size of each channel's data in terms of number of complex points.
A structure for a 1 dimensional buffer descriptor.