andrewm@379
|
1 /*
|
andrewm@379
|
2 * Copyright 2012-15 ARM Limited and Contributors.
|
andrewm@379
|
3 * All rights reserved.
|
andrewm@379
|
4 *
|
andrewm@379
|
5 * Redistribution and use in source and binary forms, with or without
|
andrewm@379
|
6 * modification, are permitted provided that the following conditions are met:
|
andrewm@379
|
7 * * Redistributions of source code must retain the above copyright
|
andrewm@379
|
8 * notice, this list of conditions and the following disclaimer.
|
andrewm@379
|
9 * * Redistributions in binary form must reproduce the above copyright
|
andrewm@379
|
10 * notice, this list of conditions and the following disclaimer in the
|
andrewm@379
|
11 * documentation and/or other materials provided with the distribution.
|
andrewm@379
|
12 * * Neither the name of ARM Limited nor the
|
andrewm@379
|
13 * names of its contributors may be used to endorse or promote products
|
andrewm@379
|
14 * derived from this software without specific prior written permission.
|
andrewm@379
|
15 *
|
andrewm@379
|
16 * THIS SOFTWARE IS PROVIDED BY ARM LIMITED AND CONTRIBUTORS "AS IS" AND
|
andrewm@379
|
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
andrewm@379
|
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
andrewm@379
|
19 * DISCLAIMED. IN NO EVENT SHALL ARM LIMITED AND CONTRIBUTORS BE LIABLE FOR ANY
|
andrewm@379
|
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
andrewm@379
|
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
andrewm@379
|
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
andrewm@379
|
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
andrewm@379
|
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
andrewm@379
|
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
andrewm@379
|
26 */
|
andrewm@379
|
27
|
andrewm@379
|
28 /*
|
andrewm@379
|
29 * NE10 Library : inc/NE10_dsp.h
|
andrewm@379
|
30 */
|
andrewm@379
|
31
|
andrewm@379
|
32
|
andrewm@379
|
33 #include "NE10_types.h"
|
andrewm@379
|
34
|
andrewm@379
|
35 #ifndef NE10_DSP_H
|
andrewm@379
|
36 #define NE10_DSP_H
|
andrewm@379
|
37
|
andrewm@379
|
38 #ifdef __cplusplus
|
andrewm@379
|
39 extern "C" {
|
andrewm@379
|
40 #endif
|
andrewm@379
|
41
|
andrewm@379
|
42 ///////////////////////////
|
andrewm@379
|
43 // function prototypes:
|
andrewm@379
|
44 ///////////////////////////
|
andrewm@379
|
45
|
andrewm@379
|
46 /* fft functions*/
|
andrewm@379
|
47
|
andrewm@379
|
48 /* function pointers*/
|
andrewm@379
|
49 extern ne10_fft_cfg_float32_t (*ne10_fft_alloc_c2c_float32) (ne10_int32_t nfft);
|
andrewm@379
|
50 extern ne10_fft_cfg_int32_t (*ne10_fft_alloc_c2c_int32) (ne10_int32_t nfft);
|
andrewm@379
|
51
|
andrewm@379
|
52 extern void (*ne10_fft_c2c_1d_float32) (ne10_fft_cpx_float32_t *fout,
|
andrewm@379
|
53 ne10_fft_cpx_float32_t *fin,
|
andrewm@379
|
54 ne10_fft_cfg_float32_t cfg,
|
andrewm@379
|
55 ne10_int32_t inverse_fft);
|
andrewm@379
|
56
|
andrewm@379
|
57 extern void (*ne10_fft_r2c_1d_float32) (ne10_fft_cpx_float32_t *fout,
|
andrewm@379
|
58 ne10_float32_t *fin,
|
andrewm@379
|
59 ne10_fft_r2c_cfg_float32_t cfg);
|
andrewm@379
|
60
|
andrewm@379
|
61 extern void (*ne10_fft_c2r_1d_float32) (ne10_float32_t *fout,
|
andrewm@379
|
62 ne10_fft_cpx_float32_t *fin,
|
andrewm@379
|
63 ne10_fft_r2c_cfg_float32_t cfg);
|
andrewm@379
|
64
|
andrewm@379
|
65 extern void (*ne10_fft_c2c_1d_int32) (ne10_fft_cpx_int32_t *fout,
|
andrewm@379
|
66 ne10_fft_cpx_int32_t *fin,
|
andrewm@379
|
67 ne10_fft_cfg_int32_t cfg,
|
andrewm@379
|
68 ne10_int32_t inverse_fft,
|
andrewm@379
|
69 ne10_int32_t scaled_flag);
|
andrewm@379
|
70
|
andrewm@379
|
71 extern void (*ne10_fft_r2c_1d_int32) (ne10_fft_cpx_int32_t *fout,
|
andrewm@379
|
72 ne10_int32_t *fin,
|
andrewm@379
|
73 ne10_fft_r2c_cfg_int32_t cfg,
|
andrewm@379
|
74 ne10_int32_t scaled_flag);
|
andrewm@379
|
75
|
andrewm@379
|
76 extern void (*ne10_fft_c2r_1d_int32) (ne10_int32_t *fout,
|
andrewm@379
|
77 ne10_fft_cpx_int32_t *fin,
|
andrewm@379
|
78 ne10_fft_r2c_cfg_int32_t cfg,
|
andrewm@379
|
79 ne10_int32_t scaled_flag);
|
andrewm@379
|
80
|
andrewm@379
|
81 extern void (*ne10_fft_c2c_1d_int16) (ne10_fft_cpx_int16_t *fout,
|
andrewm@379
|
82 ne10_fft_cpx_int16_t *fin,
|
andrewm@379
|
83 ne10_fft_cfg_int16_t cfg,
|
andrewm@379
|
84 ne10_int32_t inverse_fft,
|
andrewm@379
|
85 ne10_int32_t scaled_flag);
|
andrewm@379
|
86
|
andrewm@379
|
87 extern void (*ne10_fft_r2c_1d_int16) (ne10_fft_cpx_int16_t *fout,
|
andrewm@379
|
88 ne10_int16_t *fin,
|
andrewm@379
|
89 ne10_fft_r2c_cfg_int16_t cfg,
|
andrewm@379
|
90 ne10_int32_t scaled_flag);
|
andrewm@379
|
91
|
andrewm@379
|
92 extern void (*ne10_fft_c2r_1d_int16) (ne10_int16_t *fout,
|
andrewm@379
|
93 ne10_fft_cpx_int16_t *fin,
|
andrewm@379
|
94 ne10_fft_r2c_cfg_int16_t cfg,
|
andrewm@379
|
95 ne10_int32_t scaled_flag);
|
andrewm@379
|
96
|
andrewm@379
|
97 /* init functions*/
|
andrewm@379
|
98 extern ne10_fft_cfg_int16_t ne10_fft_alloc_c2c_int16 (ne10_int32_t nfft);
|
andrewm@379
|
99
|
andrewm@379
|
100 /* destroy functions */
|
andrewm@379
|
101 extern void ne10_fft_destroy_c2c_float32 (ne10_fft_cfg_float32_t);
|
andrewm@379
|
102 extern void ne10_fft_destroy_c2c_int32 (ne10_fft_cfg_int32_t);
|
andrewm@379
|
103 extern void ne10_fft_destroy_c2c_int16 (ne10_fft_cfg_int16_t);
|
andrewm@379
|
104
|
andrewm@379
|
105 extern void ne10_fft_destroy_r2c_float32 (ne10_fft_r2c_cfg_float32_t);
|
andrewm@379
|
106 extern void ne10_fft_destroy_r2c_int32 (ne10_fft_r2c_cfg_int32_t);
|
andrewm@379
|
107 extern void ne10_fft_destroy_r2c_int16 (ne10_fft_r2c_cfg_int16_t);
|
andrewm@379
|
108
|
andrewm@379
|
109 extern ne10_fft_r2c_cfg_float32_t ne10_fft_alloc_r2c_float32 (ne10_int32_t nfft);
|
andrewm@379
|
110 extern ne10_fft_r2c_cfg_int32_t ne10_fft_alloc_r2c_int32 (ne10_int32_t nfft);
|
andrewm@379
|
111 extern ne10_fft_r2c_cfg_int16_t ne10_fft_alloc_r2c_int16 (ne10_int32_t nfft);
|
andrewm@379
|
112
|
andrewm@379
|
113 /* C version*/
|
andrewm@379
|
114 extern ne10_fft_cfg_float32_t ne10_fft_alloc_c2c_float32_c (ne10_int32_t nfft);
|
andrewm@379
|
115 extern ne10_fft_cfg_int32_t ne10_fft_alloc_c2c_int32_c (ne10_int32_t nfft);
|
andrewm@379
|
116
|
andrewm@379
|
117 extern void ne10_fft_c2c_1d_float32_c (ne10_fft_cpx_float32_t *fout,
|
andrewm@379
|
118 ne10_fft_cpx_float32_t *fin,
|
andrewm@379
|
119 ne10_fft_cfg_float32_t cfg,
|
andrewm@379
|
120 ne10_int32_t inverse_fft);
|
andrewm@379
|
121
|
andrewm@379
|
122 extern void ne10_fft_r2c_1d_float32_c (ne10_fft_cpx_float32_t *fout,
|
andrewm@379
|
123 ne10_float32_t *fin,
|
andrewm@379
|
124 ne10_fft_r2c_cfg_float32_t cfg);
|
andrewm@379
|
125
|
andrewm@379
|
126 extern void ne10_fft_c2r_1d_float32_c (ne10_float32_t *fout,
|
andrewm@379
|
127 ne10_fft_cpx_float32_t *fin,
|
andrewm@379
|
128 ne10_fft_r2c_cfg_float32_t cfg);
|
andrewm@379
|
129
|
andrewm@379
|
130 extern void ne10_fft_c2c_1d_int32_c (ne10_fft_cpx_int32_t *fout,
|
andrewm@379
|
131 ne10_fft_cpx_int32_t *fin,
|
andrewm@379
|
132 ne10_fft_cfg_int32_t cfg,
|
andrewm@379
|
133 ne10_int32_t inverse_fft,
|
andrewm@379
|
134 ne10_int32_t scaled_flag);
|
andrewm@379
|
135
|
andrewm@379
|
136 extern void ne10_fft_r2c_1d_int32_c (ne10_fft_cpx_int32_t *fout,
|
andrewm@379
|
137 ne10_int32_t *fin,
|
andrewm@379
|
138 ne10_fft_r2c_cfg_int32_t cfg,
|
andrewm@379
|
139 ne10_int32_t scaled_flag);
|
andrewm@379
|
140
|
andrewm@379
|
141 extern void ne10_fft_c2r_1d_int32_c (ne10_int32_t *fout,
|
andrewm@379
|
142 ne10_fft_cpx_int32_t *fin,
|
andrewm@379
|
143 ne10_fft_r2c_cfg_int32_t cfg,
|
andrewm@379
|
144 ne10_int32_t scaled_flag);
|
andrewm@379
|
145
|
andrewm@379
|
146 extern void ne10_fft_c2c_1d_int16_c (ne10_fft_cpx_int16_t *fout,
|
andrewm@379
|
147 ne10_fft_cpx_int16_t *fin,
|
andrewm@379
|
148 ne10_fft_cfg_int16_t cfg,
|
andrewm@379
|
149 ne10_int32_t inverse_fft,
|
andrewm@379
|
150 ne10_int32_t scaled_flag);
|
andrewm@379
|
151
|
andrewm@379
|
152 extern void ne10_fft_r2c_1d_int16_c (ne10_fft_cpx_int16_t *fout,
|
andrewm@379
|
153 ne10_int16_t *fin,
|
andrewm@379
|
154 ne10_fft_r2c_cfg_int16_t cfg,
|
andrewm@379
|
155 ne10_int32_t scaled_flag);
|
andrewm@379
|
156
|
andrewm@379
|
157 extern void ne10_fft_c2r_1d_int16_c (ne10_int16_t *fout,
|
andrewm@379
|
158 ne10_fft_cpx_int16_t *fin,
|
andrewm@379
|
159 ne10_fft_r2c_cfg_int16_t cfg,
|
andrewm@379
|
160 ne10_int32_t scaled_flag);
|
andrewm@379
|
161
|
andrewm@379
|
162
|
andrewm@379
|
163 /* NEON version*/
|
andrewm@379
|
164 extern ne10_fft_cfg_float32_t ne10_fft_alloc_c2c_float32_neon (ne10_int32_t nfft);
|
andrewm@379
|
165 extern ne10_fft_cfg_int32_t ne10_fft_alloc_c2c_int32_neon (ne10_int32_t nfft);
|
andrewm@379
|
166
|
andrewm@379
|
167 extern void ne10_fft_c2c_1d_float32_neon (ne10_fft_cpx_float32_t *fout,
|
andrewm@379
|
168 ne10_fft_cpx_float32_t *fin,
|
andrewm@379
|
169 ne10_fft_cfg_float32_t cfg,
|
andrewm@379
|
170 ne10_int32_t inverse_fft);
|
andrewm@379
|
171
|
andrewm@379
|
172 extern void ne10_fft_r2c_1d_float32_neon (ne10_fft_cpx_float32_t *fout,
|
andrewm@379
|
173 ne10_float32_t *fin,
|
andrewm@379
|
174 ne10_fft_r2c_cfg_float32_t cfg);
|
andrewm@379
|
175
|
andrewm@379
|
176 extern void ne10_fft_c2r_1d_float32_neon (ne10_float32_t *fout,
|
andrewm@379
|
177 ne10_fft_cpx_float32_t *fin,
|
andrewm@379
|
178 ne10_fft_r2c_cfg_float32_t cfg);
|
andrewm@379
|
179
|
andrewm@379
|
180 extern void ne10_fft_c2c_1d_int32_neon (ne10_fft_cpx_int32_t *fout,
|
andrewm@379
|
181 ne10_fft_cpx_int32_t *fin,
|
andrewm@379
|
182 ne10_fft_cfg_int32_t cfg,
|
andrewm@379
|
183 ne10_int32_t inverse_fft,
|
andrewm@379
|
184 ne10_int32_t scaled_flag);
|
andrewm@379
|
185
|
andrewm@379
|
186 extern void ne10_fft_r2c_1d_int32_neon (ne10_fft_cpx_int32_t *fout,
|
andrewm@379
|
187 ne10_int32_t *fin,
|
andrewm@379
|
188 ne10_fft_r2c_cfg_int32_t cfg,
|
andrewm@379
|
189 ne10_int32_t scaled_flag);
|
andrewm@379
|
190
|
andrewm@379
|
191 extern void ne10_fft_c2r_1d_int32_neon (ne10_int32_t *fout,
|
andrewm@379
|
192 ne10_fft_cpx_int32_t *fin,
|
andrewm@379
|
193 ne10_fft_r2c_cfg_int32_t cfg,
|
andrewm@379
|
194 ne10_int32_t scaled_flag);
|
andrewm@379
|
195
|
andrewm@379
|
196 extern void ne10_fft_c2c_1d_int16_neon (ne10_fft_cpx_int16_t *fout,
|
andrewm@379
|
197 ne10_fft_cpx_int16_t *fin,
|
andrewm@379
|
198 ne10_fft_cfg_int16_t cfg,
|
andrewm@379
|
199 ne10_int32_t inverse_fft,
|
andrewm@379
|
200 ne10_int32_t scaled_flag);
|
andrewm@379
|
201
|
andrewm@379
|
202 extern void ne10_fft_r2c_1d_int16_neon (ne10_fft_cpx_int16_t *fout,
|
andrewm@379
|
203 ne10_int16_t *fin,
|
andrewm@379
|
204 ne10_fft_r2c_cfg_int16_t cfg,
|
andrewm@379
|
205 ne10_int32_t scaled_flag);
|
andrewm@379
|
206
|
andrewm@379
|
207 extern void ne10_fft_c2r_1d_int16_neon (ne10_int16_t *fout,
|
andrewm@379
|
208 ne10_fft_cpx_int16_t *fin,
|
andrewm@379
|
209 ne10_fft_r2c_cfg_int16_t cfg,
|
andrewm@379
|
210 ne10_int32_t scaled_flag);
|
andrewm@379
|
211
|
andrewm@379
|
212 /* fir functions*/
|
andrewm@379
|
213
|
andrewm@379
|
214 /* function pointers*/
|
andrewm@379
|
215 extern void (*ne10_fir_float) (const ne10_fir_instance_f32_t * S,
|
andrewm@379
|
216 ne10_float32_t * pSrc,
|
andrewm@379
|
217 ne10_float32_t * pDst,
|
andrewm@379
|
218 ne10_uint32_t blockSize);
|
andrewm@379
|
219
|
andrewm@379
|
220 extern void (*ne10_fir_decimate_float) (const ne10_fir_decimate_instance_f32_t * S,
|
andrewm@379
|
221 ne10_float32_t * pSrc,
|
andrewm@379
|
222 ne10_float32_t * pDst,
|
andrewm@379
|
223 ne10_uint32_t blockSize);
|
andrewm@379
|
224
|
andrewm@379
|
225 extern void (*ne10_fir_interpolate_float) (const ne10_fir_interpolate_instance_f32_t * S,
|
andrewm@379
|
226 ne10_float32_t * pSrc,
|
andrewm@379
|
227 ne10_float32_t * pDst,
|
andrewm@379
|
228 ne10_uint32_t blockSize);
|
andrewm@379
|
229
|
andrewm@379
|
230 extern void (*ne10_fir_lattice_float) (const ne10_fir_lattice_instance_f32_t * S,
|
andrewm@379
|
231 ne10_float32_t * pSrc,
|
andrewm@379
|
232 ne10_float32_t * pDst,
|
andrewm@379
|
233 ne10_uint32_t blockSize);
|
andrewm@379
|
234
|
andrewm@379
|
235 extern void (*ne10_fir_sparse_float) (ne10_fir_sparse_instance_f32_t * S,
|
andrewm@379
|
236 ne10_float32_t * pSrc,
|
andrewm@379
|
237 ne10_float32_t * pDst,
|
andrewm@379
|
238 ne10_float32_t * pScratchIn,
|
andrewm@379
|
239 ne10_uint32_t blockSize);
|
andrewm@379
|
240
|
andrewm@379
|
241
|
andrewm@379
|
242 /* init functions*/
|
andrewm@379
|
243 extern ne10_result_t ne10_fir_init_float (ne10_fir_instance_f32_t * S,
|
andrewm@379
|
244 ne10_uint16_t numTaps,
|
andrewm@379
|
245 ne10_float32_t * pCoeffs,
|
andrewm@379
|
246 ne10_float32_t * pState,
|
andrewm@379
|
247 ne10_uint32_t blockSize);
|
andrewm@379
|
248
|
andrewm@379
|
249 extern ne10_result_t ne10_fir_decimate_init_float (ne10_fir_decimate_instance_f32_t * S,
|
andrewm@379
|
250 ne10_uint16_t numTaps,
|
andrewm@379
|
251 ne10_uint8_t M,
|
andrewm@379
|
252 ne10_float32_t * pCoeffs,
|
andrewm@379
|
253 ne10_float32_t * pState,
|
andrewm@379
|
254 ne10_uint32_t blockSize);
|
andrewm@379
|
255
|
andrewm@379
|
256 extern ne10_result_t ne10_fir_interpolate_init_float (ne10_fir_interpolate_instance_f32_t * S,
|
andrewm@379
|
257 ne10_uint8_t L,
|
andrewm@379
|
258 ne10_uint16_t numTaps,
|
andrewm@379
|
259 ne10_float32_t * pCoeffs,
|
andrewm@379
|
260 ne10_float32_t * pState,
|
andrewm@379
|
261 ne10_uint32_t blockSize);
|
andrewm@379
|
262
|
andrewm@379
|
263 extern ne10_result_t ne10_fir_lattice_init_float (ne10_fir_lattice_instance_f32_t * S,
|
andrewm@379
|
264 ne10_uint16_t numStages,
|
andrewm@379
|
265 ne10_float32_t * pCoeffs,
|
andrewm@379
|
266 ne10_float32_t * pState);
|
andrewm@379
|
267
|
andrewm@379
|
268 extern ne10_result_t ne10_fir_sparse_init_float (ne10_fir_sparse_instance_f32_t * S,
|
andrewm@379
|
269 ne10_uint16_t numTaps,
|
andrewm@379
|
270 ne10_float32_t * pCoeffs,
|
andrewm@379
|
271 ne10_float32_t * pState,
|
andrewm@379
|
272 ne10_int32_t * pTapDelay,
|
andrewm@379
|
273 ne10_uint16_t maxDelay,
|
andrewm@379
|
274 ne10_uint32_t blockSize);
|
andrewm@379
|
275
|
andrewm@379
|
276 /* C version*/
|
andrewm@379
|
277 extern void ne10_fir_float_c (const ne10_fir_instance_f32_t * S,
|
andrewm@379
|
278 ne10_float32_t * pSrc,
|
andrewm@379
|
279 ne10_float32_t * pDst,
|
andrewm@379
|
280 ne10_uint32_t blockSize);
|
andrewm@379
|
281
|
andrewm@379
|
282 extern void ne10_fir_decimate_float_c (const ne10_fir_decimate_instance_f32_t * S,
|
andrewm@379
|
283 ne10_float32_t * pSrc,
|
andrewm@379
|
284 ne10_float32_t * pDst,
|
andrewm@379
|
285 ne10_uint32_t blockSize);
|
andrewm@379
|
286
|
andrewm@379
|
287 extern void ne10_fir_interpolate_float_c (const ne10_fir_interpolate_instance_f32_t * S,
|
andrewm@379
|
288 ne10_float32_t * pSrc,
|
andrewm@379
|
289 ne10_float32_t * pDst,
|
andrewm@379
|
290 ne10_uint32_t blockSize);
|
andrewm@379
|
291
|
andrewm@379
|
292 extern void ne10_fir_lattice_float_c (const ne10_fir_lattice_instance_f32_t * S,
|
andrewm@379
|
293 ne10_float32_t * pSrc,
|
andrewm@379
|
294 ne10_float32_t * pDst,
|
andrewm@379
|
295 ne10_uint32_t blockSize);
|
andrewm@379
|
296
|
andrewm@379
|
297 extern void ne10_fir_sparse_float_c (ne10_fir_sparse_instance_f32_t * S,
|
andrewm@379
|
298 ne10_float32_t * pSrc,
|
andrewm@379
|
299 ne10_float32_t * pDst,
|
andrewm@379
|
300 ne10_float32_t * pScratchIn,
|
andrewm@379
|
301 ne10_uint32_t blockSize);
|
andrewm@379
|
302
|
andrewm@379
|
303
|
andrewm@379
|
304 /* NEON version*/
|
andrewm@379
|
305
|
andrewm@379
|
306 /**
|
andrewm@379
|
307 * @addtogroup FIR
|
andrewm@379
|
308 * @{
|
andrewm@379
|
309 */
|
andrewm@379
|
310 #ifdef ENABLE_NE10_FIR_FLOAT_NEON
|
andrewm@379
|
311 extern void ne10_fir_float_neon (const ne10_fir_instance_f32_t * S,
|
andrewm@379
|
312 ne10_float32_t * pSrc,
|
andrewm@379
|
313 ne10_float32_t * pDst,
|
andrewm@379
|
314 ne10_uint32_t blockSize)
|
andrewm@379
|
315 asm ("ne10_fir_float_neon");
|
andrewm@379
|
316 #endif // ENABLE_NE10_FIR_FLOAT_NEON
|
andrewm@379
|
317 /** @} */ //end of FIR group
|
andrewm@379
|
318
|
andrewm@379
|
319 /**
|
andrewm@379
|
320 * @addtogroup FIR_Decimate
|
andrewm@379
|
321 * @{
|
andrewm@379
|
322 */
|
andrewm@379
|
323 #ifdef ENABLE_NE10_FIR_DECIMATE_FLOAT_NEON
|
andrewm@379
|
324 extern void ne10_fir_decimate_float_neon (const ne10_fir_decimate_instance_f32_t * S,
|
andrewm@379
|
325 ne10_float32_t *pSrc,
|
andrewm@379
|
326 ne10_float32_t *pDst,
|
andrewm@379
|
327 ne10_uint32_t blockSize) asm ("ne10_fir_decimate_float_neon");
|
andrewm@379
|
328
|
andrewm@379
|
329 /** @} */ //end of FIR_decimate group
|
andrewm@379
|
330 #endif // ENABLE_NE10_FIR_DECIMATE_FLOAT_NEON
|
andrewm@379
|
331 /**
|
andrewm@379
|
332 * @addtogroup FIR_Interpolate
|
andrewm@379
|
333 * @{
|
andrewm@379
|
334 */
|
andrewm@379
|
335 #ifdef ENABLE_NE10_FIR_INTERPOLATE_FLOAT_NEON
|
andrewm@379
|
336 extern void ne10_fir_interpolate_float_neon (const ne10_fir_interpolate_instance_f32_t * S,
|
andrewm@379
|
337 ne10_float32_t *pSrc,
|
andrewm@379
|
338 ne10_float32_t *pDst,
|
andrewm@379
|
339 ne10_uint32_t blockSize) asm ("ne10_fir_interpolate_float_neon");
|
andrewm@379
|
340 #endif // ENABLE_NE10_FIR_INTERPOLATE_FLOAT_NEON
|
andrewm@379
|
341 /** @} */ //end of FIR_interpolate group
|
andrewm@379
|
342
|
andrewm@379
|
343 /**
|
andrewm@379
|
344 * @addtogroup FIR_Lattice
|
andrewm@379
|
345 * @{
|
andrewm@379
|
346 */
|
andrewm@379
|
347 #ifdef ENABLE_NE10_FIR_LATTICE_FLOAT_NEON
|
andrewm@379
|
348 extern void ne10_fir_lattice_float_neon (const ne10_fir_lattice_instance_f32_t * S,
|
andrewm@379
|
349 ne10_float32_t * pSrc,
|
andrewm@379
|
350 ne10_float32_t * pDst,
|
andrewm@379
|
351 ne10_uint32_t blockSize) asm ("ne10_fir_lattice_float_neon");
|
andrewm@379
|
352 #endif // ENABLE_NE10_FIR_LATTICE_FLOAT_NEON
|
andrewm@379
|
353 /** @} */ //end of FIR_Lattice group
|
andrewm@379
|
354
|
andrewm@379
|
355 /**
|
andrewm@379
|
356 * @addtogroup FIR_Sparse
|
andrewm@379
|
357 * @{
|
andrewm@379
|
358 */
|
andrewm@379
|
359 #ifdef ENABLE_NE10_FIR_SPARSE_FLOAT_NEON
|
andrewm@379
|
360 extern void ne10_fir_sparse_float_neon (ne10_fir_sparse_instance_f32_t * S,
|
andrewm@379
|
361 ne10_float32_t * pSrc,
|
andrewm@379
|
362 ne10_float32_t * pDst,
|
andrewm@379
|
363 ne10_float32_t * pScratch,
|
andrewm@379
|
364 ne10_uint32_t blockSize)
|
andrewm@379
|
365 asm ("ne10_fir_sparse_float_neon");
|
andrewm@379
|
366 #endif // ENABLE_NE10_FIR_SPARSE_FLOAT_NEON
|
andrewm@379
|
367 /** @} */ //end of FIR_sparse group
|
andrewm@379
|
368
|
andrewm@379
|
369
|
andrewm@379
|
370 /* iir functions*/
|
andrewm@379
|
371
|
andrewm@379
|
372 /* function pointers*/
|
andrewm@379
|
373 extern void (*ne10_iir_lattice_float) (const ne10_iir_lattice_instance_f32_t * S,
|
andrewm@379
|
374 ne10_float32_t * pSrc,
|
andrewm@379
|
375 ne10_float32_t * pDst,
|
andrewm@379
|
376 ne10_uint32_t blockSize);
|
andrewm@379
|
377
|
andrewm@379
|
378 /* init functions*/
|
andrewm@379
|
379 extern ne10_result_t ne10_iir_lattice_init_float (ne10_iir_lattice_instance_f32_t * S,
|
andrewm@379
|
380 ne10_uint16_t numStages,
|
andrewm@379
|
381 ne10_float32_t * pkCoeffs,
|
andrewm@379
|
382 ne10_float32_t * pvCoeffs,
|
andrewm@379
|
383 ne10_float32_t * pState,
|
andrewm@379
|
384 ne10_uint32_t blockSize);
|
andrewm@379
|
385
|
andrewm@379
|
386
|
andrewm@379
|
387 /* C version*/
|
andrewm@379
|
388 extern void ne10_iir_lattice_float_c (const ne10_iir_lattice_instance_f32_t * S,
|
andrewm@379
|
389 ne10_float32_t * pSrc,
|
andrewm@379
|
390 ne10_float32_t * pDst,
|
andrewm@379
|
391 ne10_uint32_t blockSize);
|
andrewm@379
|
392
|
andrewm@379
|
393 /* NEON version*/
|
andrewm@379
|
394
|
andrewm@379
|
395 /**
|
andrewm@379
|
396 * @addtogroup IIR_Lattice
|
andrewm@379
|
397 * @{
|
andrewm@379
|
398 */
|
andrewm@379
|
399 #ifdef ENABLE_NE10_IIR_LATTICE_FLOAT_NEON
|
andrewm@379
|
400 extern void ne10_iir_lattice_float_neon (const ne10_iir_lattice_instance_f32_t * S,
|
andrewm@379
|
401 ne10_float32_t * pSrc,
|
andrewm@379
|
402 ne10_float32_t * pDst,
|
andrewm@379
|
403 ne10_uint32_t blockSize) asm ("ne10_iir_lattice_float_neon");
|
andrewm@379
|
404 #endif // ENABLE_NE10_IIR_LATTICE_FLOAT_NEON
|
andrewm@379
|
405 /** @} */ //end of IIR_Lattice group
|
andrewm@379
|
406
|
andrewm@379
|
407 #ifdef __cplusplus
|
andrewm@379
|
408 }
|
andrewm@379
|
409 #endif
|
andrewm@379
|
410
|
andrewm@379
|
411 #endif
|