1 /* ======================================================================= */
2 /* TEXAS INSTRUMENTS, INC. */
3 /* */
4 /* NAME */
5 /* DSP_ifft16x32_d.c -- Driver file for DSP_ifft16x32 */
6 /* */
7 /* USAGE */
8 /* This code contains a driver program for testing the 'DSP_ifft16x32'*/
9 /* kernel. The function prototype appears below. The driver itself */
10 /* is invoked as a standard C program, and results are reported on */
11 /* stdout. */
12 /* */
13 /* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */
14 /* */
15 /* */
16 /* Redistribution and use in source and binary forms, with or without */
17 /* modification, are permitted provided that the following conditions */
18 /* are met: */
19 /* */
20 /* Redistributions of source code must retain the above copyright */
21 /* notice, this list of conditions and the following disclaimer. */
22 /* */
23 /* Redistributions in binary form must reproduce the above copyright */
24 /* notice, this list of conditions and the following disclaimer in the */
25 /* documentation and/or other materials provided with the */
26 /* distribution. */
27 /* */
28 /* Neither the name of Texas Instruments Incorporated nor the names of */
29 /* its contributors may be used to endorse or promote products derived */
30 /* from this software without specific prior written permission. */
31 /* */
32 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
33 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
34 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */
35 /* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
36 /* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
37 /* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
38 /* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */
39 /* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */
40 /* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
41 /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */
42 /* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
43 /* */
44 /* ======================================================================= */
46 #include <stdio.h>
47 #include <time.h>
48 #include <stdlib.h>
49 #include <limits.h>
50 #include <string.h>
51 #include <c6x.h>
53 #include "DSP_ifft16x32_cn.h"
54 #include "DSP_ifft16x32.h"
55 #include "DSP_ifft16x32_i.h"
56 #include "gen_twiddle_fft16x32.h"
58 /* Defines */
59 #if defined(__TI_EABI__)
60 #define kernel_size _kernel_size
61 #endif
63 extern char kernel_size;
64 #define CYCLE_FORMULA_NX_PT1 128
65 #define CYCLE_FORMULA_NX_PT2 256
66 #define FORMULA_SIZE 2
67 int form_cycle [FORMULA_SIZE];
69 /* ======================================================================== */
70 /* Kernel-specific alignments */
71 /* ======================================================================== */
72 #pragma DATA_ALIGN(w, 8);
74 #pragma DATA_ALIGN(x, 8);
75 #pragma DATA_ALIGN(x_c, 8);
76 #pragma DATA_ALIGN(x_i, 8);
77 #pragma DATA_ALIGN(x_sa, 8);
79 #pragma DATA_ALIGN(y, 8);
80 #pragma DATA_ALIGN(y_c, 8);
81 #pragma DATA_ALIGN(y_i, 8);
82 #pragma DATA_ALIGN(y_sa, 8);
84 /* ======================================================================== */
85 /* Parameters of fixed dataset. */
86 /* ======================================================================== */
87 #define N (256)
88 #define PAD (16)
90 /* ======================================================================== */
91 /* Number of input arguments: */
92 /* ======================================================================== */
93 #define NUM_INPUTS (1)
95 /* ======================================================================== */
96 /* Initialized arrays with fixed test data. */
97 /* ======================================================================== */
98 int x[NUM_INPUTS][2*N + 2*PAD] =
99 {
100 /* Input Number: 0 */
102 {
103 -0x4AF2AAD5, 0x08C3C636, -0x045937AA, 0x0A3C7B5B,
104 0x253DB9C5, -0x3422FD6F, -0x227A0836, -0x0B91F870,
105 -0x1E9758E9, -0x55FD39C9, -0x185DF8F2, -0x204FEF86,
106 0x3FD069F9, 0x5A4759EC, 0x7221D819, 0x3A4FD7C0,
108 0x30071174, 0x04DA228A, 0x549CDFD9, -0x6A0A35DF,
109 -0x255F0E71, 0x6DBBD555, -0x00CC4A6C, 0x36562270,
110 -0x0F3E1998, -0x7586E64E, -0x4846472F, 0x46182B2F,
111 0x560CEF0C, -0x0893EF30, 0x3E85364E, 0x2E84B559,
112 -0x7A87715D, -0x320AAA4E, -0x6C9A5889, -0x6E90CA29,
113 0x327D7A5E, 0x683AE32A, 0x272E76EE, 0x6EED1416,
114 -0x3AD7E54E, -0x7A1A98CF, 0x2773D099, -0x13C054B0,
115 0x05935259, 0x5166823A, 0x3ED409B6, 0x3F8168F6,
116 -0x66CCE963, -0x29CB8427, 0x607A067E, 0x3FA0A3C7,
117 -0x3E6AAC94, 0x4C8BD564, 0x22283BCC, 0x1C0BA30F,
118 -0x23106649, -0x28C9A60B, 0x0675AF4E, -0x4559B671,
119 0x311D2298, 0x20D00E57, 0x5EA494C2, 0x3080EE8D,
120 0x7B7795C0, 0x5C069858, 0x2A9DE4B7, -0x12371470,
121 -0x45F5DB52, 0x2E62870C, 0x798A945D, 0x04814E41,
122 -0x2F4994CC, -0x04EEE78B, -0x26723027, 0x1C8140F8,
123 0x57A8A9BF, 0x152AD80C, 0x4124BBA2, -0x7FDF6E8F,
124 0x48B8BAEB, 0x55F6BFC4, 0x099D536B, -0x24C409D6,
125 -0x23DA9B23, -0x673FCF19, 0x5F3EC516, 0x18E874EA,
126 0x3D3771EC, -0x6468929D, -0x368118D9, -0x1C89890F,
127 0x713B160C, -0x385A0E02, 0x23E92E4E, 0x4E250F51,
128 0x16682287, 0x56713CF4, -0x51E04491, 0x2628EEEF,
129 0x561F837D, 0x67B8887C, -0x6A880F4B, 0x5F657BB0,
130 -0x54F27052, 0x7032F1BC, -0x7A3CE9CB, 0x2E6C9F4B,
131 -0x204E5DF7, -0x66157B66, -0x3C487570, 0x4344BF48,
132 -0x23407E74, 0x798DBC06, 0x4367FC26, -0x529EA05C,
133 -0x4C17EF1C, -0x42C50DE2, 0x51773B4D, -0x2190085E,
134 0x777ED35E, 0x2F562FC4, 0x305A0A12, 0x57526B42,
135 0x4E81BD9A, -0x5E1C09E5, 0x49418707, 0x79ECBDDF,
136 0x5581C88C, 0x46D1756B, 0x5A209B92, -0x05DE997F,
137 -0x41111DBD, -0x1D265B0E, 0x2959F84E, 0x7D9ED547,
138 -0x46BF6302, 0x6E50D018, 0x438B27F0, -0x2B1B5477,
139 -0x5D7CD000, -0x6A80E86D, 0x33FB1D33, 0x640D131A,
140 -0x1039AF47, -0x63FFB212, -0x30DF19AD, 0x2BD6D237,
141 0x6BE741AF, 0x2E96CEFB, -0x04272F74, -0x0B937C60,
142 0x2D40C3B4, -0x71F73E4D, 0x78B1B023, 0x25757A53,
143 -0x2342B51B, -0x5581BC0A, 0x38DAAF7D, -0x48202686,
144 -0x4F380110, -0x6724FE48, -0x49C7DF4B, -0x2413AD05,
145 -0x3C66F3DA, -0x0C5C3CE3, -0x2CE718BC, -0x4FFEECCD,
146 0x1C71C5D3, -0x5C30A40D, -0x4A000ED1, -0x49489CA8,
147 0x0327055F, -0x78C774E4, 0x33212F3C, 0x52AB670C,
148 0x1C9F6CBD, 0x7EF25060, 0x3EF4A5B4, 0x048E998B,
149 -0x385F1D65, 0x612E1F29, -0x2D92F6D6, -0x450696EF,
150 0x418BE6E2, 0x5B218DA4, -0x13B19C34, -0x317C7421,
151 0x0C742FFD, 0x2266E2CF, 0x072647C0, 0x24927669,
152 0x20171564, -0x609EDD14, -0x6698E8F8, -0x0F8C77C8,
153 0x59394AFA, 0x732AF2E3, 0x1A22CB6C, -0x5DD2A11D,
154 -0x4C24A159, -0x1A8E00F7, 0x0CDED6F1, 0x71A1DAC4,
155 -0x3D256D34, -0x4E1ABF31, -0x71E179A7, 0x14584CC8,
156 -0x08908713, 0x44A2ADDA, -0x150C81D6, 0x19A555ED,
157 0x2606DB32, -0x2CE918F6, -0x4BBC4542, 0x637CEEEB,
158 -0x31FC81D4, -0x2310BD1F, -0x1CDB6624, 0x4B8E1E84,
159 -0x5122E29F, -0x71783624, 0x79DE7F5F, -0x11D91E05,
160 0x18224227, -0x6BAF5DD4, 0x260E7A5D, 0x1749B537,
161 -0x73249AC1, -0x3D3B97A1, 0x76657E5D, 0x4F8E5910,
162 0x19CADAC6, 0x2C52F170, 0x088CA317, -0x68B8C4C0,
163 -0x02F0F622, 0x1DD1FCBE, 0x3FACF938, 0x455A0A7F,
164 0x15B276B0, 0x7BEE516C, -0x01EF9C4C, -0x7C99FFB0,
165 -0x7A7EE9D1, 0x0421CEB2, -0x1093F9E4, -0x0A5AAE19,
166 0x2FDE6E22, -0x03612577, -0x3CB8457D, 0x08114BC8,
167 0x6EE304FE, -0x46342DB6, -0x0001EB9B, 0x5D489F83,
168 -0x74936AFC, -0x6B4C2C49, -0x340C89E1, -0x1D50A1DF,
169 -0x767E5AD8, -0x3B007E1C, 0x4B56AB6A, 0x0B5C1EB8,
170 -0x575F35B9, -0x6813D46E, -0x0BF166A3, -0x4FC0365D,
171 0x306B5818, -0x683D1190, 0x6C486F84, 0x1505A1EA,
172 0x0535C87A, 0x114E32C0, 0x7124F76F, -0x72B714B0,
173 0x7EEA7978, 0x7CDC25F1, 0x3E005F58, 0x5074C888,
174 -0x0116C85D, 0x4F359491, -0x020FE4B4, -0x170641E9,
175 -0x2AD7ECD2, -0x4CEA40C4, -0x4A3BAAA3, -0x34CF96A4,
176 -0x17B2FDAA, -0x5D4F7020, 0x4841625D, -0x666E1FBD,
177 -0x66E12E6D, -0x1E563F07, -0x150F335B, 0x7E9B3E1F,
178 0x76D3E110, 0x6A157130, -0x57ED9CA0, 0x3907DF2E,
179 0x32C92FED, -0x4C04531D, 0x6B36DEE6, 0x48B8C846,
180 0x561B2FCC, 0x5CD54D14, 0x06EB8B96, -0x441242D4,
181 0x4992EC23, -0x396D1CB8, -0x37E4793E, 0x26337E13,
182 0x0D83FBDD, 0x0997F5C7, 0x107E0223, 0x4299BDC2,
183 0x4AFEBABB, -0x2DB7C536, 0x68B61F4F, -0x585ACC19,
184 0x1BF25807, -0x5A75C9F0, -0x59793640, 0x37896D10,
185 0x209D300C, 0x09C8D15D, -0x6E51D522, -0x5AE33F31,
186 0x58EDEDD6, 0x0FFD4D62, -0x7519DF66, -0x5CF3137C,
187 0x3838FCBC, -0x38C4CC75, -0x4385B4FA, 0x3BDFEC56,
188 -0x6D2334CA, 0x1735A53D, 0x4F062082, -0x3CDA8B34,
189 -0x45C3AB8B, 0x7548A8F2, 0x23DA8CEB, -0x00876769,
190 0x70A0794C, 0x0885CCCC, -0x758D5CAF, -0x1D4AD9FD,
191 0x1171A5DD, -0x50BE2DFD, -0x6F64213D, 0x78F8268B,
192 -0x71A2B872, 0x6BA0AFC7, 0x3EB66390, 0x70DC1022,
193 -0x5B237731, -0x505E78FB, 0x6C94DCA5, -0x2C85DB68,
194 -0x22731FE3, 0x13331194, -0x717FA59D, 0x56A679B2,
195 -0x2A06112A, -0x0E4018AD, 0x0FE0C88B, -0x230ECD9B,
196 0x42421D58, 0x61BB46A5, -0x54049A53, -0x6D139844,
197 0x442098DF, 0x1DC1B9DF, 0x5062D09F, 0x382730E8,
198 0x77C910BA, -0x3465D1E7, 0x0472227E, 0x0C7A6BF6,
199 0x4C3BC439, 0x2BD900EE, 0x51818FBE, -0x27F85C4B,
200 0x28645EF1, -0x59929763, -0x4AD9E74A, -0x558355C7,
201 -0x3C53E23B, -0x334925E4, -0x6CDA34BB, -0x4FDE9F6E,
202 0x5462C834, 0x2CA2D38C, 0x34760FF1, -0x50E5DAD7,
203 -0x077B0F8A, 0x143D939B, 0x40F67B19, -0x4D8C88BD,
204 -0x1491FD23, -0x40AEBDB1, 0x4533BAAC, 0x4B68432F,
205 -0x0A1563FD, 0x5B7D03B4, -0x4024FC16, 0x046E599E,
206 -0x52E53FC1, 0x7A5076FD, 0x264993AF, 0x758498A3,
207 -0x0731BE1C, 0x6AE62484, -0x7F47433D, 0x763B41D9,
208 0x4DAE0CC4, -0x1077A6C4, -0x026B0249, 0x0305F53B,
209 0x3DD4B486, -0x1F3C12FE, 0x0D6CADCA, 0x3843E41A,
210 -0x37C82CC3, 0x308F7661, -0x75FA57A6, 0x0098A8C1,
211 -0x0F7A4F38, -0x281594C7, 0x590F9452, -0x290AB0B8,
212 0x10D4B881, 0x1D7BB3D1, 0x17FB2E33, 0x43ED0C00,
213 0x79BA44AF, -0x2F4AE332, 0x4D712217, 0x6BC91B1C,
214 -0x21BAD9BE, -0x1E05B763, -0x5C1A08B8, 0x4ADA50F2,
215 -0x0DAF75A1, -0x27C47D46, -0x6329802C, 0x188DD171,
216 -0x214360D8, -0x3E590298, 0x561F5BB5, 0x4BC28035,
217 -0x14F16DA9, -0x133DF9B0, -0x3107F602, -0x3F1B6D2E,
218 0x03E54F24, 0x209E9F86, 0x2B0F0090, -0x71C13047,
219 0x67DA98E5, -0x5889F784, -0x70BBA829, -0x06ECFBB1,
220 0x303ADE0D, -0x37A347A7, -0x187981EC, 0x09FC1FAD,
221 0x1C2673DF, 0x23633E3F, 0x44547BAF, 0x49FF7986,
222 0x118F7F78, 0x6FC98FF4, 0x3E5A400B, 0x2DEECCB6,
223 -0x0C65B864, 0x23A64A76, -0x2D4B7D8F, -0x6681A704,
224 0x39DE43CE, 0x7F955BFA, 0x4D4AA572, 0x09AAB45B,
225 -0x38F788D2, 0x7BE796D3, -0x4A24CC99, -0x122E365B,
226 -0x75A3575B, 0x1ECEBDC0, 0x40185E64, -0x67EB7F4D,
227 0x6398D2D6, -0x49F193DB, 0x486E1447, 0x5F7699BC,
228 -0x354190A7, 0x77B27CAC, 0x48E81742, 0x5C412F5D,
229 -0x3DCAF440, -0x02C6B22F, 0x5BB8AB77, 0x51256ACA,
230 -0x762F571D, 0x3BCB7DD4, -0x3921B0E7, 0x369FDDA6,
231 -0x6FC59A07, 0x40F18F97, -0x01900268, -0x18E3EAFF,
232 0x3C3C04F4, 0x7044FCE1, -0x43007FB0, 0x7B5ECE04,
233 -0x19985855, -0x655ACC71, -0x6E53AFB4, -0x415BA43D,
234 -0x5E6094B6, 0x7379052C, 0x7D4A7D87, 0x4E10B7BC,
235 0x4A074A8F, -0x03A50191, 0x142F2C40, -0x1C2C3888,
237 0x58D0C849, 0x42D72D24, -0x64E2EA36, 0x349446DB,
238 -0x0D9B1056, 0x11A6D302, -0x4927618B, 0x0A9ADC9B,
239 -0x3689E42B, 0x01EA8BE5, 0x15CDF4F1, -0x10C414A0,
240 0x3E730D44, 0x69E44FF1, -0x5995463B, 0x07057D0D
241 },
243 };
245 int x_c[NUM_INPUTS][2*N + 2*PAD];
246 int x_i[NUM_INPUTS][2*N + 2*PAD];
247 int x_sa[NUM_INPUTS][2*N + 2*PAD];
249 int y[NUM_INPUTS][2*N + 2*PAD] =
250 {
251 /* Input Number: 0 */
253 {
254 0x3FD0CE68, -0x3D460ADE, -0x34773FB5, -0x6ED11950,
255 0x7AC1E220, -0x23556441, 0x1C8553B0, -0x7C3D6B5F,
256 0x47C6426D, -0x71A78AC2, 0x26728487, -0x28EB77BC,
257 -0x215C570B, 0x35808F09, -0x4E16F2A3, -0x0C13000D,
259 0x5136A2D3, -0x553EFE4F, 0x0E0345DB, -0x41043A65,
260 -0x345800DA, 0x15D80308, -0x17106F14, -0x2DF4488E,
261 -0x6E7B0A12, 0x20EA7AA5, 0x17A7ED6F, 0x5B78F668,
262 0x4C3AA7B7, 0x1E416B50, -0x00B5F30B, 0x155E3BB1,
263 0x18696C85, -0x7AE61F27, -0x11679700, -0x0DEB18FB,
264 -0x2B5E9574, 0x5BDFB4D2, 0x00070155, -0x1A9FCA03,
265 0x3BFCF933, 0x007ED0BE, 0x0A0208CE, 0x4FEF1E22,
266 0x3E1D53DC, -0x1CDEA9E7, 0x0CC63838, -0x6A7196DC,
267 0x2B071AF9, -0x6CFBC926, -0x61A1DF40, 0x5AA665B4,
268 0x0D611BE9, -0x3D484C32, -0x10C0F5A3, -0x258F2672,
269 -0x246F10E5, -0x5F91AF98, -0x3DF01432, -0x0F856BD8,
270 -0x16C42403, 0x23C9B075, -0x12042162, 0x3EDB3389,
271 0x1BAA8834, -0x4D5921C9, -0x18BC5255, -0x04486831,
272 0x6187FF9C, -0x4B937690, -0x2EAB1442, -0x1E858729,
273 -0x087C876F, -0x7BA45E35, -0x77EFED58, -0x37A6446C,
274 -0x18A68AFE, 0x4D5AF03C, 0x3DB23A6A, 0x6393E386,
275 0x58B2A7CB, 0x47CE13BC, 0x11D3D0E3, -0x600CC819,
276 0x146C23D8, -0x25189A0A, 0x380EE788, 0x290F16F6,
277 -0x1C3C9D68, 0x2BF35E5A, 0x19CD8AA9, -0x652C0D10,
278 0x21D4902C, -0x7DC931E9, -0x00545C47, -0x36417ECF,
279 0x190BA9EC, 0x24BD9886, -0x38FD12DD, -0x43936F01,
280 -0x53172155, 0x09B34E75, 0x13147227, -0x3822F185,
281 -0x4C5036B4, -0x0944C324, -0x76A9E9C3, 0x48FBB93C,
282 -0x4C8F0BE8, -0x7F399B7C, -0x75A14F78, -0x731DFAE5,
283 0x46F72467, 0x74ECE20B, -0x0010CF35, 0x5A6BA297,
284 -0x27E70AFA, 0x23C940D9, -0x6459AE96, -0x6387C58C,
285 0x1EDD47F0, 0x11D5387A, 0x2DCE57F6, -0x44812708,
286 -0x24E61134, -0x76BEA11C, 0x71CC61BB, 0x0DD07651,
287 0x60D73AB4, -0x6128C1DC, -0x174D451F, -0x03CDB851,
288 0x5B2BC7C3, 0x04535EF5, 0x3673C78E, 0x40201E75,
289 0x66E714F3, 0x59C7BABD, -0x7BCC076C, -0x349977DA,
290 -0x264F8945, 0x4D791E7B, 0x673F4727, -0x2A94E494,
291 0x64EEC7FB, 0x30C4F811, -0x35DE38E0, -0x753A9B2F,
292 -0x0ED98F4E, 0x687A1384, 0x6155BE41, -0x1976F564,
293 0x423036FB, 0x4849BEA0, 0x1E23D00C, 0x28E59F5C,
294 -0x222EA630, -0x31611D81, 0x2D16AC98, 0x7C6C9C94,
295 -0x44D17DE1, -0x3975787B, -0x0B692B06, 0x37B4061C,
296 0x36ADF79C, -0x2DD7C3C8, -0x68DE1451, 0x47A6479D,
297 -0x3D545E19, -0x28FB0370, -0x7E56F26E, 0x421AB1C1,
298 -0x12659F8B, 0x4B07F21E, 0x758EBADA, -0x69D1D377,
299 0x1BFF29C2, -0x0CA55054, -0x5D43335A, 0x67E19346,
300 -0x6E338FB3, 0x78D352BD, 0x3C6DF887, -0x7393C03A,
301 0x3EA465E0, 0x6B631379, 0x16015E9F, 0x2EDC3D1F,
302 -0x34888865, 0x29FDC183, -0x337A583E, -0x67894C54,
303 0x7305A750, 0x2887B133, -0x1BABD4DE, -0x62B41255,
304 0x1DBF2A9C, 0x264890C0, -0x7EAB52FD, 0x2F9EA10D,
305 0x378AD556, -0x44AC5433, 0x0F6018FA, -0x6C7D2C1C,
306 -0x1E1B283E, -0x2880E41D, -0x7EB729CE, -0x3FC80CFA,
307 -0x2D16C0FB, -0x62B094AD, -0x7905D7C1, 0x5DD09C4F,
308 -0x75492D8D, 0x296B1CFD, 0x4E4415F3, -0x146A73EF,
309 0x42B4AC14, -0x46ED5C76, 0x4FC05EC1, -0x7259C3D4,
310 0x243C2CFF, -0x46F4B67F, -0x6FA7FAD8, -0x03A14DAF,
311 0x4F23B0F7, 0x369E83D2, -0x050A2256, 0x16FCF6E8,
312 0x10A59ED7, 0x38072C42, 0x2BC3AAC1, -0x61F947D9,
313 -0x0ED5C7C4, 0x7AF13543, 0x50A34B6E, -0x650A5B35,
314 0x0379BF07, 0x116A3CB6, -0x78CE8B41, -0x2A651C01,
315 -0x11409FE3, 0x71DE9312, 0x3FF670EE, 0x0BCB44E9,
316 0x4B0372F0, 0x57933477, 0x25367B7D, 0x35C99A61,
317 -0x46907FA6, 0x1A21212B, 0x0FDE19E2, 0x7CF0BF52,
318 0x47039B39, -0x1C8E4E02, 0x6D13093A, 0x5622CA42,
319 -0x6FD87DAC, 0x47B84A17, -0x3617C67D, 0x3C76F084,
320 0x2C990D10, -0x3B08F757, -0x4453AD1F, -0x6E5B6E6C,
321 -0x23BA919D, -0x55882CE8, -0x109EB793, 0x28B7F219,
322 0x0075BB9D, -0x1E2FA107, -0x503382F2, -0x0E82D8EB,
323 -0x2E17BF92, 0x19E0998C, 0x67B1EAD1, 0x4939A6B8,
324 -0x22B9D443, -0x1FA6F9EF, -0x415D20A6, 0x70140962,
325 0x4D7AF6C4, 0x1638898D, -0x5702362D, -0x582C81B9,
326 0x6D6628F7, 0x50D41678, 0x027E82E4, 0x6B4C6043,
327 -0x087F1DCC, -0x69232630, 0x2F00BA3B, 0x60188356,
328 -0x54364D48, 0x0FE24119, 0x43D0E015, 0x580FA841,
329 -0x6055C39C, 0x0ADC81C5, 0x282E2057, 0x02F9A2D7,
330 -0x1ED2D239, -0x0DCB0C7D, 0x4E66EBAA, -0x3EF05D8F,
331 -0x26E00B92, -0x5C340B06, 0x62108A26, 0x21AD3508,
332 -0x147829FD, -0x55785A97, -0x7D14B802, 0x79D17285,
333 -0x1BF33E4E, -0x2124E449, 0x7DE295C0, 0x2CD7CAA6,
334 -0x504F8BAA, -0x1229829E, -0x66592D6E, 0x13F11120,
335 -0x3C8C8C0F, 0x452E8CE2, 0x58730E00, -0x7714D2A4,
336 -0x1BA9B912, -0x202EDF16, -0x3C8B9D2F, -0x645A0D9C,
337 -0x60C6795A, 0x7B71051E, -0x3FBDAB9A, -0x1A284E8B,
338 0x0D2637B8, -0x4A692D5D, -0x16F33AE1, -0x75741340,
339 0x6372F09F, -0x7B50DBD6, 0x63DBF549, -0x2A184336,
340 -0x46BEB1E8, -0x605B342D, 0x4579061B, 0x01A86302,
341 -0x5D0DC92F, 0x47696184, -0x058768CB, -0x5B13730C,
342 0x02E361DE, -0x0FEC2EDB, 0x2EDBE92B, 0x3EB2B3AB,
343 -0x51E4468A, 0x59EC4746, -0x4221EE65, 0x70A344BB,
344 0x4C55037F, -0x7DF6EE54, 0x2762B245, 0x5595D877,
345 -0x0115B1A1, 0x06E4ED49, 0x0D7AD1B6, -0x7FA7CE38,
346 0x481CBA92, 0x61723C1E, 0x2E9124F3, 0x243A5537,
347 -0x37B9FA6E, -0x6BC5507D, 0x6AC17DB3, -0x262DA56C,
348 0x2C656A81, -0x4F0B26A7, 0x4DB8BE9F, -0x71739C29,
349 -0x1972B9E1, -0x34DFD458, -0x63322BE5, 0x18734298,
350 0x38B40E88, -0x2FD81ADE, 0x67B24519, -0x1040AD47,
351 -0x0F9AE8C6, -0x3F8E8DF2, 0x253FCC77, -0x775D0B44,
352 0x75D2A1E8, -0x35F455DE, 0x4AE97C61, -0x2727C3C4,
353 -0x63374970, -0x27BE753C, -0x0EAA07C0, 0x7A734F0D,
354 -0x4D01AA9E, -0x0D4029D3, -0x0372D251, -0x01901970,
355 0x605267E5, 0x11B423FF, 0x445226FE, -0x2579755B,
356 -0x3CA8FB10, -0x2E8B2845, 0x491764BA, 0x7CBBEEC9,
357 0x51D183E5, -0x75E76F54, -0x16EABC47, 0x0A3503E1,
358 0x028CDCBA, 0x4DA775AD, -0x67FA0BC0, 0x40D1312A,
359 0x3E13CD43, 0x4937005F, -0x5C058565, -0x0907BC2F,
360 0x0ECB5851, 0x0F95A64A, -0x0C25C62E, -0x36CC8747,
361 0x15F1010D, 0x42EDFA65, -0x25056A26, 0x6D074BE5,
362 -0x350F95D9, 0x28F2AF83, 0x5C5A16D6, 0x1D8C5E0D,
363 0x7EA3A646, -0x60FAEAD0, -0x74FA5E1F, -0x48B8E521,
364 -0x63100EBA, -0x031E898F, 0x580B37D7, -0x033D859F,
365 -0x44B7DF43, 0x4946EEF0, 0x78A4CAB8, 0x6F6B7C05,
366 -0x137695B7, 0x6A252113, -0x3D0F6AFB, 0x5E30CAE1,
367 -0x344501D9, -0x5530978A, -0x66287A53, -0x6AA2F471,
368 -0x1CCC226C, 0x2C9FEA54, -0x2874CCFE, 0x26375B3C,
369 -0x3C66708B, -0x4352E1AB, -0x3BCF18C7, -0x151D81A8,
370 0x6C4915CC, -0x7603C3BA, -0x77E7DA13, 0x18FD3275,
371 0x7398B470, 0x47AE203F, -0x58CCB1D1, -0x787ACC33,
372 0x727B0992, 0x31B20DA6, 0x050DCAA1, 0x157873F1,
373 0x3F0FEB8D, 0x717BEDA8, -0x1207C1E6, -0x4E480CE0,
374 0x607D9677, 0x6F317297, -0x6B29ACB7, -0x71512F37,
375 0x47C7A806, -0x7F145458, -0x4BFD7A10, -0x0BC7004B,
376 -0x220F96CA, -0x799F8057, -0x67267CE3, 0x3E442E5A,
377 -0x41F81FCA, -0x1C6160EB, 0x3A6599F3, 0x77BF5BD6,
378 -0x2F6ACAD4, 0x61495A15, -0x1C53528D, 0x1E3C8F15,
379 -0x721820D2, 0x77CDE8E9, -0x33E3C125, -0x6B21AD61,
380 -0x6143DEED, 0x751A993D, 0x4999FC02, -0x5DFEC371,
381 0x33D7558A, 0x136479E2, -0x09509DBD, -0x4DD6BCCE,
382 -0x5911820A, -0x15A9268F, 0x6A5DEB6D, 0x28AA2BD2,
383 -0x1F89546D, 0x4B584F5D, -0x0FF2BDB9, 0x5A9CAA25,
384 0x03DDAF6C, 0x024898E6, -0x3BDEF0F6, -0x487D5014,
385 -0x24686C72, 0x793DEE7C, 0x52AAC877, -0x72BD98CD,
386 -0x726A99F2, -0x3E3DB3FE, 0x01BC13E9, -0x0C32A340,
388 0x1A98D656, 0x031D1884, -0x011ECE07, 0x5E194C2B,
389 0x14E60E33, -0x2EF43E2F, -0x76CD03DF, 0x53CE2F19,
390 0x28E86C39, -0x1C743982, 0x518DEAF3, -0x38C21FDC,
391 -0x1DE9821B, -0x4FE65231, 0x4C6EA751, -0x65EE030D
392 },
394 };
396 int y_c[NUM_INPUTS][2*N + 2*PAD];
397 int y_i[NUM_INPUTS][2*N + 2*PAD];
398 int y_sa[NUM_INPUTS][2*N + 2*PAD];
400 short w[NUM_INPUTS][2*N + 2*PAD];
402 /* ======================================================================== */
403 /* Prototypes for timing functions. */
404 /* ======================================================================== */
405 clock_t time_c(int cur_input, int n);
406 clock_t time_i(int cur_input, int n);
407 clock_t time_sa(int cur_input, int n);
409 /* ======================================================================== */
410 /* MAIN -- Top level driver for the test. */
411 /* ======================================================================== */
412 int main()
413 {
414 clock_t t_overhead, t_start, t_stop;
415 clock_t t_c, t_i;
416 #ifdef _LITTLE_ENDIAN
417 clock_t t_sa;
418 #endif
419 int i, j, k, n, m, radix, fail;
421 /* -------------------------------------------------------------------- */
422 /* Initialize timer for clock */
423 TSCL= 0,TSCH=0;
424 /* Compute the overhead of calling _itoll(TSCH, TSCL) twice to get timing info. */
425 /* -------------------------------------------------------------------- */
426 t_start = _itoll(TSCH, TSCL);
427 t_stop = _itoll(TSCH, TSCL);
428 t_overhead = t_stop - t_start;
430 for (j = 16, k = 1, fail = 0; j <= N; k++, j *= 2) {
431 for (n = 31, m = 1; (j & (1 << n)) == 0; n--, m++)
432 ;
433 radix = m & 1 ? 2 : 4;
435 /* -------------------------------------------------------------------- */
436 /* Generate twiddle factors */
437 /* -------------------------------------------------------------------- */
438 gen_twiddle_fft16x32(&w[0][PAD], j);
440 /* -------------------------------------------------------------------- */
441 /* Copy vector to all inputs. */
442 /* -------------------------------------------------------------------- */
443 memcpy(x_c, x, sizeof(x_c));
444 memcpy(x_i, x, sizeof(x_i));
445 memcpy(x_sa, x, sizeof(x_sa));
446 memcpy(y_c, y, sizeof(y_c));
447 memcpy(y_i, y, sizeof(y_i));
448 memcpy(y_sa, y, sizeof(y_sa));
450 /* -------------------------------------------------------------------- */
451 /* Check the results arrays, and report any failures. */
452 /* -------------------------------------------------------------------- */
453 for(i = 0; i < NUM_INPUTS; i++) {
454 t_c = time_c(i, j) - t_overhead;
455 t_i = time_i(i, j) - t_overhead;
456 #ifdef _LITTLE_ENDIAN
457 t_sa = time_sa(i, j) - t_overhead;
458 #endif
459 }
461 printf("DSP_ifft16x32\tIter#: %d\t", k);
463 if (memcmp(y_c, y_i, sizeof(y_c))) {
464 fail++;
465 printf("Result Failure (y_i) ");
466 }
467 else
468 printf("Result Successful (y_i) ");
470 #ifdef _LITTLE_ENDIAN
471 if (memcmp(y_c, y_sa, sizeof(y_c))) {
472 fail++;
473 printf("Result Failure (y_sa) ");
474 }
475 else
476 printf("Result Successful (y_sa) ");
477 #endif
479 #ifdef _LITTLE_ENDIAN
480 printf("\tRadix = %d\tN = %d\tnatC: %d\tintC: %d\tSA: %d\n", radix, j, t_c, t_i, t_sa);
481 #else
482 printf("\tRadix = %d\tN = %d\tnatC: %d\tintC: %d\n", radix, j, t_c, t_i);
483 #endif
485 if (j == CYCLE_FORMULA_NX_PT1)
486 form_cycle[0] = t_i;
487 if (j == CYCLE_FORMULA_NX_PT2)
488 form_cycle[1] = t_i;
489 }
491 /* Provide memory information */
492 #ifdef __TI_COMPILER_VERSION__ // for TI compiler only
493 printf("Memory: %d bytes\n", &kernel_size);
494 #endif
496 /* Provide profiling information */
497 printf("Cycles: %d (N=128) %d (N=256)\n", form_cycle[0], form_cycle[1]);
499 return (fail);
500 }
502 /* ======================================================================== */
503 /* TIME_C -- Measure elapsed time for natural C version. */
504 /* ======================================================================== */
505 clock_t time_c(int cur_input, int n)
506 {
507 clock_t t_start, t_stop;
509 t_start = _itoll(TSCH, TSCL);
510 DSP_ifft16x32_cn(&w[cur_input][PAD], n, &x_c[cur_input][PAD], &y_c[cur_input][PAD]);
511 t_stop = _itoll(TSCH, TSCL);
512 return t_stop - t_start;
513 }
515 /* ======================================================================== */
516 /* TIME_I -- Measure elapsed time for intrinsic C version. */
517 /* ======================================================================== */
518 clock_t time_i(int cur_input, int n)
519 {
520 clock_t t_start, t_stop;
522 t_start = _itoll(TSCH, TSCL);
523 DSP_ifft16x32_i(&w[cur_input][PAD], n, &x_i[cur_input][PAD], &y_i[cur_input][PAD]);
524 t_stop = _itoll(TSCH, TSCL);
525 return t_stop - t_start;
526 }
528 /* ======================================================================== */
529 /* TIME_SA -- Measure elapsed time for SA version. */
530 /* ======================================================================== */
531 clock_t time_sa(int cur_input, int n)
532 {
533 clock_t t_start, t_stop;
535 t_start = _itoll(TSCH, TSCL);
536 DSP_ifft16x32(&w[cur_input][PAD], n, &x_sa[cur_input][PAD], &y_sa[cur_input][PAD]);
537 t_stop = _itoll(TSCH, TSCL);
538 return t_stop - t_start;
539 }
541 /* ======================================================================== */
542 /* End of file: DSP_ifft16x32_d.c */
543 /* ------------------------------------------------------------------------ */
544 /* Copyright (C) 2011 Texas Instruments, Incorporated. */
545 /* All Rights Reserved. */
546 /* ======================================================================== */