To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / src / fftw-3.3.8 / dft / scalar / codelets / t1_12.c @ 167:bd3cc4d1df30

History | View | Annotate | Download (14.2 KB)

1
/*
2
 * Copyright (c) 2003, 2007-14 Matteo Frigo
3
 * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation; either version 2 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18
 *
19
 */
20

    
21
/* This file was automatically generated --- DO NOT EDIT */
22
/* Generated on Thu May 24 08:04:14 EDT 2018 */
23

    
24
#include "dft/codelet-dft.h"
25

    
26
#if defined(ARCH_PREFERS_FMA) || defined(ISA_EXTENSION_PREFERS_FMA)
27

    
28
/* Generated by: ../../../genfft/gen_twiddle.native -fma -compact -variables 4 -pipeline-latency 4 -n 12 -name t1_12 -include dft/scalar/t.h */
29

    
30
/*
31
 * This function contains 118 FP additions, 68 FP multiplications,
32
 * (or, 72 additions, 22 multiplications, 46 fused multiply/add),
33
 * 47 stack variables, 2 constants, and 48 memory accesses
34
 */
35
#include "dft/scalar/t.h"
36

    
37
static void t1_12(R *ri, R *ii, const R *W, stride rs, INT mb, INT me, INT ms)
38
{
39
     DK(KP866025403, +0.866025403784438646763723170752936183471402627);
40
     DK(KP500000000, +0.500000000000000000000000000000000000000000000);
41
     {
42
          INT m;
43
          for (m = mb, W = W + (mb * 22); m < me; m = m + 1, ri = ri + ms, ii = ii + ms, W = W + 22, MAKE_VOLATILE_STRIDE(24, rs)) {
44
               E T1, T2i, Tl, T2e, T10, T1Y, TG, T1S, Ty, T2r, T1s, T2f, T1d, T21, T1H;
45
               E T1Z, Te, T2o, T1l, T2h, TT, T1V, T1A, T1T;
46
               T1 = ri[0];
47
               T2i = ii[0];
48
               {
49
                    E Th, Tk, Ti, T2d, Tg, Tj;
50
                    Th = ri[WS(rs, 6)];
51
                    Tk = ii[WS(rs, 6)];
52
                    Tg = W[10];
53
                    Ti = Tg * Th;
54
                    T2d = Tg * Tk;
55
                    Tj = W[11];
56
                    Tl = FMA(Tj, Tk, Ti);
57
                    T2e = FNMS(Tj, Th, T2d);
58
               }
59
               {
60
                    E TW, TZ, TX, T1X, TV, TY;
61
                    TW = ri[WS(rs, 9)];
62
                    TZ = ii[WS(rs, 9)];
63
                    TV = W[16];
64
                    TX = TV * TW;
65
                    T1X = TV * TZ;
66
                    TY = W[17];
67
                    T10 = FMA(TY, TZ, TX);
68
                    T1Y = FNMS(TY, TW, T1X);
69
               }
70
               {
71
                    E TC, TF, TD, T1R, TB, TE;
72
                    TC = ri[WS(rs, 3)];
73
                    TF = ii[WS(rs, 3)];
74
                    TB = W[4];
75
                    TD = TB * TC;
76
                    T1R = TB * TF;
77
                    TE = W[5];
78
                    TG = FMA(TE, TF, TD);
79
                    T1S = FNMS(TE, TC, T1R);
80
               }
81
               {
82
                    E Tn, Tq, To, T1o, Tt, Tw, Tu, T1q, Tm, Ts;
83
                    Tn = ri[WS(rs, 10)];
84
                    Tq = ii[WS(rs, 10)];
85
                    Tm = W[18];
86
                    To = Tm * Tn;
87
                    T1o = Tm * Tq;
88
                    Tt = ri[WS(rs, 2)];
89
                    Tw = ii[WS(rs, 2)];
90
                    Ts = W[2];
91
                    Tu = Ts * Tt;
92
                    T1q = Ts * Tw;
93
                    {
94
                         E Tr, T1p, Tx, T1r, Tp, Tv;
95
                         Tp = W[19];
96
                         Tr = FMA(Tp, Tq, To);
97
                         T1p = FNMS(Tp, Tn, T1o);
98
                         Tv = W[3];
99
                         Tx = FMA(Tv, Tw, Tu);
100
                         T1r = FNMS(Tv, Tt, T1q);
101
                         Ty = Tr + Tx;
102
                         T2r = Tx - Tr;
103
                         T1s = T1p - T1r;
104
                         T2f = T1p + T1r;
105
                    }
106
               }
107
               {
108
                    E T12, T15, T13, T1D, T18, T1b, T19, T1F, T11, T17;
109
                    T12 = ri[WS(rs, 1)];
110
                    T15 = ii[WS(rs, 1)];
111
                    T11 = W[0];
112
                    T13 = T11 * T12;
113
                    T1D = T11 * T15;
114
                    T18 = ri[WS(rs, 5)];
115
                    T1b = ii[WS(rs, 5)];
116
                    T17 = W[8];
117
                    T19 = T17 * T18;
118
                    T1F = T17 * T1b;
119
                    {
120
                         E T16, T1E, T1c, T1G, T14, T1a;
121
                         T14 = W[1];
122
                         T16 = FMA(T14, T15, T13);
123
                         T1E = FNMS(T14, T12, T1D);
124
                         T1a = W[9];
125
                         T1c = FMA(T1a, T1b, T19);
126
                         T1G = FNMS(T1a, T18, T1F);
127
                         T1d = T16 + T1c;
128
                         T21 = T1c - T16;
129
                         T1H = T1E - T1G;
130
                         T1Z = T1E + T1G;
131
                    }
132
               }
133
               {
134
                    E T3, T6, T4, T1h, T9, Tc, Ta, T1j, T2, T8;
135
                    T3 = ri[WS(rs, 4)];
136
                    T6 = ii[WS(rs, 4)];
137
                    T2 = W[6];
138
                    T4 = T2 * T3;
139
                    T1h = T2 * T6;
140
                    T9 = ri[WS(rs, 8)];
141
                    Tc = ii[WS(rs, 8)];
142
                    T8 = W[14];
143
                    Ta = T8 * T9;
144
                    T1j = T8 * Tc;
145
                    {
146
                         E T7, T1i, Td, T1k, T5, Tb;
147
                         T5 = W[7];
148
                         T7 = FMA(T5, T6, T4);
149
                         T1i = FNMS(T5, T3, T1h);
150
                         Tb = W[15];
151
                         Td = FMA(Tb, Tc, Ta);
152
                         T1k = FNMS(Tb, T9, T1j);
153
                         Te = T7 + Td;
154
                         T2o = Td - T7;
155
                         T1l = T1i - T1k;
156
                         T2h = T1i + T1k;
157
                    }
158
               }
159
               {
160
                    E TI, TL, TJ, T1w, TO, TR, TP, T1y, TH, TN;
161
                    TI = ri[WS(rs, 7)];
162
                    TL = ii[WS(rs, 7)];
163
                    TH = W[12];
164
                    TJ = TH * TI;
165
                    T1w = TH * TL;
166
                    TO = ri[WS(rs, 11)];
167
                    TR = ii[WS(rs, 11)];
168
                    TN = W[20];
169
                    TP = TN * TO;
170
                    T1y = TN * TR;
171
                    {
172
                         E TM, T1x, TS, T1z, TK, TQ;
173
                         TK = W[13];
174
                         TM = FMA(TK, TL, TJ);
175
                         T1x = FNMS(TK, TI, T1w);
176
                         TQ = W[21];
177
                         TS = FMA(TQ, TR, TP);
178
                         T1z = FNMS(TQ, TO, T1y);
179
                         TT = TM + TS;
180
                         T1V = TS - TM;
181
                         T1A = T1x - T1z;
182
                         T1T = T1x + T1z;
183
                    }
184
               }
185
               {
186
                    E TA, T28, T2k, T2m, T1f, T2l, T2b, T2c;
187
                    {
188
                         E Tf, Tz, T2g, T2j;
189
                         Tf = T1 + Te;
190
                         Tz = Tl + Ty;
191
                         TA = Tf + Tz;
192
                         T28 = Tf - Tz;
193
                         T2g = T2e + T2f;
194
                         T2j = T2h + T2i;
195
                         T2k = T2g + T2j;
196
                         T2m = T2j - T2g;
197
                    }
198
                    {
199
                         E TU, T1e, T29, T2a;
200
                         TU = TG + TT;
201
                         T1e = T10 + T1d;
202
                         T1f = TU + T1e;
203
                         T2l = TU - T1e;
204
                         T29 = T1S + T1T;
205
                         T2a = T1Y + T1Z;
206
                         T2b = T29 - T2a;
207
                         T2c = T29 + T2a;
208
                    }
209
                    ri[WS(rs, 6)] = TA - T1f;
210
                    ii[WS(rs, 6)] = T2k - T2c;
211
                    ri[0] = TA + T1f;
212
                    ii[0] = T2c + T2k;
213
                    ri[WS(rs, 3)] = T28 - T2b;
214
                    ii[WS(rs, 3)] = T2l + T2m;
215
                    ri[WS(rs, 9)] = T28 + T2b;
216
                    ii[WS(rs, 9)] = T2m - T2l;
217
               }
218
               {
219
                    E T1m, T1K, T2p, T2y, T2s, T2x, T1t, T1L, T1B, T1N, T1W, T25, T22, T26, T1I;
220
                    E T1O;
221
                    {
222
                         E T1g, T2n, T2q, T1n;
223
                         T1g = FNMS(KP500000000, Te, T1);
224
                         T1m = FNMS(KP866025403, T1l, T1g);
225
                         T1K = FMA(KP866025403, T1l, T1g);
226
                         T2n = FNMS(KP500000000, T2h, T2i);
227
                         T2p = FMA(KP866025403, T2o, T2n);
228
                         T2y = FNMS(KP866025403, T2o, T2n);
229
                         T2q = FNMS(KP500000000, T2f, T2e);
230
                         T2s = FMA(KP866025403, T2r, T2q);
231
                         T2x = FNMS(KP866025403, T2r, T2q);
232
                         T1n = FNMS(KP500000000, Ty, Tl);
233
                         T1t = FNMS(KP866025403, T1s, T1n);
234
                         T1L = FMA(KP866025403, T1s, T1n);
235
                    }
236
                    {
237
                         E T1v, T1U, T20, T1C;
238
                         T1v = FNMS(KP500000000, TT, TG);
239
                         T1B = FNMS(KP866025403, T1A, T1v);
240
                         T1N = FMA(KP866025403, T1A, T1v);
241
                         T1U = FNMS(KP500000000, T1T, T1S);
242
                         T1W = FMA(KP866025403, T1V, T1U);
243
                         T25 = FNMS(KP866025403, T1V, T1U);
244
                         T20 = FNMS(KP500000000, T1Z, T1Y);
245
                         T22 = FMA(KP866025403, T21, T20);
246
                         T26 = FNMS(KP866025403, T21, T20);
247
                         T1C = FNMS(KP500000000, T1d, T10);
248
                         T1I = FNMS(KP866025403, T1H, T1C);
249
                         T1O = FMA(KP866025403, T1H, T1C);
250
                    }
251
                    {
252
                         E T1u, T1J, T2z, T2A;
253
                         T1u = T1m + T1t;
254
                         T1J = T1B + T1I;
255
                         ri[WS(rs, 2)] = T1u - T1J;
256
                         ri[WS(rs, 8)] = T1u + T1J;
257
                         T2z = T2x + T2y;
258
                         T2A = T25 + T26;
259
                         ii[WS(rs, 2)] = T2z - T2A;
260
                         ii[WS(rs, 8)] = T2A + T2z;
261
                    }
262
                    {
263
                         E T1M, T1P, T2v, T2w;
264
                         T1M = T1K + T1L;
265
                         T1P = T1N + T1O;
266
                         ri[WS(rs, 10)] = T1M - T1P;
267
                         ri[WS(rs, 4)] = T1M + T1P;
268
                         T2v = T1W + T22;
269
                         T2w = T2s + T2p;
270
                         ii[WS(rs, 4)] = T2v + T2w;
271
                         ii[WS(rs, 10)] = T2w - T2v;
272
                    }
273
                    {
274
                         E T1Q, T23, T2t, T2u;
275
                         T1Q = T1K - T1L;
276
                         T23 = T1W - T22;
277
                         ri[WS(rs, 7)] = T1Q - T23;
278
                         ri[WS(rs, 1)] = T1Q + T23;
279
                         T2t = T2p - T2s;
280
                         T2u = T1N - T1O;
281
                         ii[WS(rs, 1)] = T2t - T2u;
282
                         ii[WS(rs, 7)] = T2u + T2t;
283
                    }
284
                    {
285
                         E T24, T27, T2B, T2C;
286
                         T24 = T1m - T1t;
287
                         T27 = T25 - T26;
288
                         ri[WS(rs, 11)] = T24 - T27;
289
                         ri[WS(rs, 5)] = T24 + T27;
290
                         T2B = T2y - T2x;
291
                         T2C = T1B - T1I;
292
                         ii[WS(rs, 5)] = T2B - T2C;
293
                         ii[WS(rs, 11)] = T2C + T2B;
294
                    }
295
               }
296
          }
297
     }
298
}
299

    
300
static const tw_instr twinstr[] = {
301
     {TW_FULL, 0, 12},
302
     {TW_NEXT, 1, 0}
303
};
304

    
305
static const ct_desc desc = { 12, "t1_12", twinstr, &GENUS, {72, 22, 46, 0}, 0, 0, 0 };
306

    
307
void X(codelet_t1_12) (planner *p) {
308
     X(kdft_dit_register) (p, t1_12, &desc);
309
}
310
#else
311

    
312
/* Generated by: ../../../genfft/gen_twiddle.native -compact -variables 4 -pipeline-latency 4 -n 12 -name t1_12 -include dft/scalar/t.h */
313

    
314
/*
315
 * This function contains 118 FP additions, 60 FP multiplications,
316
 * (or, 88 additions, 30 multiplications, 30 fused multiply/add),
317
 * 47 stack variables, 2 constants, and 48 memory accesses
318
 */
319
#include "dft/scalar/t.h"
320

    
321
static void t1_12(R *ri, R *ii, const R *W, stride rs, INT mb, INT me, INT ms)
322
{
323
     DK(KP500000000, +0.500000000000000000000000000000000000000000000);
324
     DK(KP866025403, +0.866025403784438646763723170752936183471402627);
325
     {
326
          INT m;
327
          for (m = mb, W = W + (mb * 22); m < me; m = m + 1, ri = ri + ms, ii = ii + ms, W = W + 22, MAKE_VOLATILE_STRIDE(24, rs)) {
328
               E T1, T1W, T18, T21, Tc, T15, T1V, T22, TR, T1E, T1o, T1D, T12, T1l, T1F;
329
               E T1G, Ti, T1S, T1d, T24, Tt, T1a, T1T, T25, TA, T1z, T1j, T1y, TL, T1g;
330
               E T1A, T1B;
331
               {
332
                    E T6, T16, Tb, T17;
333
                    T1 = ri[0];
334
                    T1W = ii[0];
335
                    {
336
                         E T3, T5, T2, T4;
337
                         T3 = ri[WS(rs, 4)];
338
                         T5 = ii[WS(rs, 4)];
339
                         T2 = W[6];
340
                         T4 = W[7];
341
                         T6 = FMA(T2, T3, T4 * T5);
342
                         T16 = FNMS(T4, T3, T2 * T5);
343
                    }
344
                    {
345
                         E T8, Ta, T7, T9;
346
                         T8 = ri[WS(rs, 8)];
347
                         Ta = ii[WS(rs, 8)];
348
                         T7 = W[14];
349
                         T9 = W[15];
350
                         Tb = FMA(T7, T8, T9 * Ta);
351
                         T17 = FNMS(T9, T8, T7 * Ta);
352
                    }
353
                    T18 = KP866025403 * (T16 - T17);
354
                    T21 = KP866025403 * (Tb - T6);
355
                    Tc = T6 + Tb;
356
                    T15 = FNMS(KP500000000, Tc, T1);
357
                    T1V = T16 + T17;
358
                    T22 = FNMS(KP500000000, T1V, T1W);
359
               }
360
               {
361
                    E T11, T1n, TW, T1m;
362
                    {
363
                         E TO, TQ, TN, TP;
364
                         TO = ri[WS(rs, 9)];
365
                         TQ = ii[WS(rs, 9)];
366
                         TN = W[16];
367
                         TP = W[17];
368
                         TR = FMA(TN, TO, TP * TQ);
369
                         T1E = FNMS(TP, TO, TN * TQ);
370
                    }
371
                    {
372
                         E TY, T10, TX, TZ;
373
                         TY = ri[WS(rs, 5)];
374
                         T10 = ii[WS(rs, 5)];
375
                         TX = W[8];
376
                         TZ = W[9];
377
                         T11 = FMA(TX, TY, TZ * T10);
378
                         T1n = FNMS(TZ, TY, TX * T10);
379
                    }
380
                    {
381
                         E TT, TV, TS, TU;
382
                         TT = ri[WS(rs, 1)];
383
                         TV = ii[WS(rs, 1)];
384
                         TS = W[0];
385
                         TU = W[1];
386
                         TW = FMA(TS, TT, TU * TV);
387
                         T1m = FNMS(TU, TT, TS * TV);
388
                    }
389
                    T1o = KP866025403 * (T1m - T1n);
390
                    T1D = KP866025403 * (T11 - TW);
391
                    T12 = TW + T11;
392
                    T1l = FNMS(KP500000000, T12, TR);
393
                    T1F = T1m + T1n;
394
                    T1G = FNMS(KP500000000, T1F, T1E);
395
               }
396
               {
397
                    E Ts, T1c, Tn, T1b;
398
                    {
399
                         E Tf, Th, Te, Tg;
400
                         Tf = ri[WS(rs, 6)];
401
                         Th = ii[WS(rs, 6)];
402
                         Te = W[10];
403
                         Tg = W[11];
404
                         Ti = FMA(Te, Tf, Tg * Th);
405
                         T1S = FNMS(Tg, Tf, Te * Th);
406
                    }
407
                    {
408
                         E Tp, Tr, To, Tq;
409
                         Tp = ri[WS(rs, 2)];
410
                         Tr = ii[WS(rs, 2)];
411
                         To = W[2];
412
                         Tq = W[3];
413
                         Ts = FMA(To, Tp, Tq * Tr);
414
                         T1c = FNMS(Tq, Tp, To * Tr);
415
                    }
416
                    {
417
                         E Tk, Tm, Tj, Tl;
418
                         Tk = ri[WS(rs, 10)];
419
                         Tm = ii[WS(rs, 10)];
420
                         Tj = W[18];
421
                         Tl = W[19];
422
                         Tn = FMA(Tj, Tk, Tl * Tm);
423
                         T1b = FNMS(Tl, Tk, Tj * Tm);
424
                    }
425
                    T1d = KP866025403 * (T1b - T1c);
426
                    T24 = KP866025403 * (Ts - Tn);
427
                    Tt = Tn + Ts;
428
                    T1a = FNMS(KP500000000, Tt, Ti);
429
                    T1T = T1b + T1c;
430
                    T25 = FNMS(KP500000000, T1T, T1S);
431
               }
432
               {
433
                    E TK, T1i, TF, T1h;
434
                    {
435
                         E Tx, Tz, Tw, Ty;
436
                         Tx = ri[WS(rs, 3)];
437
                         Tz = ii[WS(rs, 3)];
438
                         Tw = W[4];
439
                         Ty = W[5];
440
                         TA = FMA(Tw, Tx, Ty * Tz);
441
                         T1z = FNMS(Ty, Tx, Tw * Tz);
442
                    }
443
                    {
444
                         E TH, TJ, TG, TI;
445
                         TH = ri[WS(rs, 11)];
446
                         TJ = ii[WS(rs, 11)];
447
                         TG = W[20];
448
                         TI = W[21];
449
                         TK = FMA(TG, TH, TI * TJ);
450
                         T1i = FNMS(TI, TH, TG * TJ);
451
                    }
452
                    {
453
                         E TC, TE, TB, TD;
454
                         TC = ri[WS(rs, 7)];
455
                         TE = ii[WS(rs, 7)];
456
                         TB = W[12];
457
                         TD = W[13];
458
                         TF = FMA(TB, TC, TD * TE);
459
                         T1h = FNMS(TD, TC, TB * TE);
460
                    }
461
                    T1j = KP866025403 * (T1h - T1i);
462
                    T1y = KP866025403 * (TK - TF);
463
                    TL = TF + TK;
464
                    T1g = FNMS(KP500000000, TL, TA);
465
                    T1A = T1h + T1i;
466
                    T1B = FNMS(KP500000000, T1A, T1z);
467
               }
468
               {
469
                    E Tv, T1N, T1Y, T20, T14, T1Z, T1Q, T1R;
470
                    {
471
                         E Td, Tu, T1U, T1X;
472
                         Td = T1 + Tc;
473
                         Tu = Ti + Tt;
474
                         Tv = Td + Tu;
475
                         T1N = Td - Tu;
476
                         T1U = T1S + T1T;
477
                         T1X = T1V + T1W;
478
                         T1Y = T1U + T1X;
479
                         T20 = T1X - T1U;
480
                    }
481
                    {
482
                         E TM, T13, T1O, T1P;
483
                         TM = TA + TL;
484
                         T13 = TR + T12;
485
                         T14 = TM + T13;
486
                         T1Z = TM - T13;
487
                         T1O = T1z + T1A;
488
                         T1P = T1E + T1F;
489
                         T1Q = T1O - T1P;
490
                         T1R = T1O + T1P;
491
                    }
492
                    ri[WS(rs, 6)] = Tv - T14;
493
                    ii[WS(rs, 6)] = T1Y - T1R;
494
                    ri[0] = Tv + T14;
495
                    ii[0] = T1R + T1Y;
496
                    ri[WS(rs, 3)] = T1N - T1Q;
497
                    ii[WS(rs, 3)] = T1Z + T20;
498
                    ri[WS(rs, 9)] = T1N + T1Q;
499
                    ii[WS(rs, 9)] = T20 - T1Z;
500
               }
501
               {
502
                    E T1t, T1x, T27, T2a, T1w, T28, T1I, T29;
503
                    {
504
                         E T1r, T1s, T23, T26;
505
                         T1r = T15 + T18;
506
                         T1s = T1a + T1d;
507
                         T1t = T1r + T1s;
508
                         T1x = T1r - T1s;
509
                         T23 = T21 + T22;
510
                         T26 = T24 + T25;
511
                         T27 = T23 - T26;
512
                         T2a = T26 + T23;
513
                    }
514
                    {
515
                         E T1u, T1v, T1C, T1H;
516
                         T1u = T1g + T1j;
517
                         T1v = T1l + T1o;
518
                         T1w = T1u + T1v;
519
                         T28 = T1u - T1v;
520
                         T1C = T1y + T1B;
521
                         T1H = T1D + T1G;
522
                         T1I = T1C - T1H;
523
                         T29 = T1C + T1H;
524
                    }
525
                    ri[WS(rs, 10)] = T1t - T1w;
526
                    ii[WS(rs, 10)] = T2a - T29;
527
                    ri[WS(rs, 4)] = T1t + T1w;
528
                    ii[WS(rs, 4)] = T29 + T2a;
529
                    ri[WS(rs, 7)] = T1x - T1I;
530
                    ii[WS(rs, 7)] = T28 + T27;
531
                    ri[WS(rs, 1)] = T1x + T1I;
532
                    ii[WS(rs, 1)] = T27 - T28;
533
               }
534
               {
535
                    E T1f, T1J, T2d, T2f, T1q, T2g, T1M, T2e;
536
                    {
537
                         E T19, T1e, T2b, T2c;
538
                         T19 = T15 - T18;
539
                         T1e = T1a - T1d;
540
                         T1f = T19 + T1e;
541
                         T1J = T19 - T1e;
542
                         T2b = T25 - T24;
543
                         T2c = T22 - T21;
544
                         T2d = T2b + T2c;
545
                         T2f = T2c - T2b;
546
                    }
547
                    {
548
                         E T1k, T1p, T1K, T1L;
549
                         T1k = T1g - T1j;
550
                         T1p = T1l - T1o;
551
                         T1q = T1k + T1p;
552
                         T2g = T1k - T1p;
553
                         T1K = T1B - T1y;
554
                         T1L = T1G - T1D;
555
                         T1M = T1K - T1L;
556
                         T2e = T1K + T1L;
557
                    }
558
                    ri[WS(rs, 2)] = T1f - T1q;
559
                    ii[WS(rs, 2)] = T2d - T2e;
560
                    ri[WS(rs, 8)] = T1f + T1q;
561
                    ii[WS(rs, 8)] = T2e + T2d;
562
                    ri[WS(rs, 11)] = T1J - T1M;
563
                    ii[WS(rs, 11)] = T2g + T2f;
564
                    ri[WS(rs, 5)] = T1J + T1M;
565
                    ii[WS(rs, 5)] = T2f - T2g;
566
               }
567
          }
568
     }
569
}
570

    
571
static const tw_instr twinstr[] = {
572
     {TW_FULL, 0, 12},
573
     {TW_NEXT, 1, 0}
574
};
575

    
576
static const ct_desc desc = { 12, "t1_12", twinstr, &GENUS, {88, 30, 30, 0}, 0, 0, 0 };
577

    
578
void X(codelet_t1_12) (planner *p) {
579
     X(kdft_dit_register) (p, t1_12, &desc);
580
}
581
#endif