~ubuntu-branches/ubuntu/maverick/blender/maverick

« back to all changes in this revision

Viewing changes to extern/fftw/rdft/codelets/hc2r/hb_7.c

  • Committer: Bazaar Package Importer
  • Author(s): Khashayar Naderehvandi, Khashayar Naderehvandi, Alessio Treglia
  • Date: 2009-01-22 16:53:59 UTC
  • mfrom: (14.1.1 experimental)
  • Revision ID: james.westby@ubuntu.com-20090122165359-v0996tn7fbit64ni
Tags: 2.48a+dfsg-1ubuntu1
[ Khashayar Naderehvandi ]
* Merge from debian experimental (LP: #320045), Ubuntu remaining changes:
  - Add patch correcting header file locations.
  - Add libvorbis-dev and libgsm1-dev to Build-Depends.
  - Use avcodec_decode_audio2() in source/blender/src/hddaudio.c

[ Alessio Treglia ]
* Add missing previous changelog entries.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2003, 2006 Matteo Frigo
 
3
 * Copyright (c) 2003, 2006 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
18
 *
 
19
 */
 
20
 
 
21
/* This file was automatically generated --- DO NOT EDIT */
 
22
/* Generated on Sun Jul  2 16:31:02 EDT 2006 */
 
23
 
 
24
#include "codelet-rdft.h"
 
25
 
 
26
#ifdef HAVE_FMA
 
27
 
 
28
/* Generated by: ../../../genfft/gen_hc2hc -fma -reorder-insns -schedule-for-pipeline -compact -variables 4 -pipeline-latency 4 -sign 1 -n 7 -dif -name hb_7 -include hb.h */
 
29
 
 
30
/*
 
31
 * This function contains 72 FP additions, 66 FP multiplications,
 
32
 * (or, 18 additions, 12 multiplications, 54 fused multiply/add),
 
33
 * 66 stack variables, and 28 memory accesses
 
34
 */
 
35
/*
 
36
 * Generator Id's : 
 
37
 * $Id: algsimp.ml,v 1.9 2006-02-12 23:34:12 athena Exp $
 
38
 * $Id: fft.ml,v 1.4 2006-01-05 03:04:27 stevenj Exp $
 
39
 * $Id: gen_hc2hc.ml,v 1.16 2006-02-12 23:34:12 athena Exp $
 
40
 */
 
41
 
 
42
#include "hb.h"
 
43
 
 
44
static const R *hb_7(R *rio, R *iio, const R *W, stride ios, INT m, INT dist)
 
45
{
 
46
     DK(KP974927912, +0.974927912181823607018131682993931217232785801);
 
47
     DK(KP900968867, +0.900968867902419126236102319507445051165919162);
 
48
     DK(KP801937735, +0.801937735804838252472204639014890102331838324);
 
49
     DK(KP692021471, +0.692021471630095869627814897002069140197260599);
 
50
     DK(KP356895867, +0.356895867892209443894399510021300583399127187);
 
51
     DK(KP554958132, +0.554958132087371191422194871006410481067288862);
 
52
     INT i;
 
53
     for (i = m - 2; i > 0; i = i - 2, rio = rio + dist, iio = iio - dist, W = W + 12, MAKE_VOLATILE_STRIDE(ios)) {
 
54
          E T14, T13, T17, T15, T16, T18;
 
55
          {
 
56
               E T1, Tt, TB, T4, TC, Ta, TD, TA, T7, Tl, T1l, TZ, T1b, Th, Tw;
 
57
               E Td, TP, Tm, Ti, Tj, T5, T6;
 
58
               T1 = rio[0];
 
59
               Tt = iio[0];
 
60
               {
 
61
                    E T2, T3, T8, T9;
 
62
                    T2 = rio[WS(ios, 1)];
 
63
                    T3 = iio[-WS(ios, 6)];
 
64
                    T8 = rio[WS(ios, 3)];
 
65
                    T9 = iio[-WS(ios, 4)];
 
66
                    T5 = rio[WS(ios, 2)];
 
67
                    TB = T2 - T3;
 
68
                    T4 = T2 + T3;
 
69
                    TC = T8 - T9;
 
70
                    Ta = T8 + T9;
 
71
                    T6 = iio[-WS(ios, 5)];
 
72
               }
 
73
               {
 
74
                    E Tf, T1a, Tg, Tc, TO;
 
75
                    Tf = iio[-WS(ios, 2)];
 
76
                    TD = FMA(KP554958132, TC, TB);
 
77
                    T1a = FNMS(KP356895867, T4, Ta);
 
78
                    TA = T5 - T6;
 
79
                    T7 = T5 + T6;
 
80
                    Tg = rio[WS(ios, 5)];
 
81
                    Tl = iio[-WS(ios, 3)];
 
82
                    T1l = FMA(KP554958132, TA, TC);
 
83
                    TZ = FNMS(KP554958132, TB, TA);
 
84
                    Tc = FNMS(KP356895867, T7, T4);
 
85
                    TO = FNMS(KP356895867, Ta, T7);
 
86
                    T1b = FNMS(KP692021471, T1a, T7);
 
87
                    Th = Tf + Tg;
 
88
                    Tw = Tf - Tg;
 
89
                    Td = FNMS(KP692021471, Tc, Ta);
 
90
                    TP = FNMS(KP692021471, TO, T4);
 
91
                    Tm = rio[WS(ios, 4)];
 
92
                    Ti = iio[-WS(ios, 1)];
 
93
                    Tj = rio[WS(ios, 6)];
 
94
               }
 
95
               {
 
96
                    E Tu, Tv, TX, T1e, T1j, TS, TL, TH, TK, TJ, TM, Tn;
 
97
                    rio[0] = T1 + T4 + T7 + Ta;
 
98
                    Tn = Tl + Tm;
 
99
                    Tu = Tl - Tm;
 
100
                    {
 
101
                         E Tk, TW, T1d, T1i;
 
102
                         Tk = Ti + Tj;
 
103
                         Tv = Ti - Tj;
 
104
                         TW = FNMS(KP356895867, Tu, Tw);
 
105
                         T1d = FMA(KP554958132, Th, Tn);
 
106
                         T1i = FNMS(KP356895867, Tv, Tu);
 
107
                         {
 
108
                              E Tx, TR, To, Ty;
 
109
                              Tx = FNMS(KP356895867, Tw, Tv);
 
110
                              TR = FNMS(KP554958132, Tk, Th);
 
111
                              To = FMA(KP554958132, Tn, Tk);
 
112
                              TX = FNMS(KP692021471, TW, Tv);
 
113
                              T1e = FNMS(KP801937735, T1d, Tk);
 
114
                              T1j = FNMS(KP692021471, T1i, Tw);
 
115
                              Ty = FNMS(KP692021471, Tx, Tu);
 
116
                              TS = FNMS(KP801937735, TR, Tn);
 
117
                              {
 
118
                                   E Tp, Te, Tz, TE;
 
119
                                   Tp = FMA(KP801937735, To, Th);
 
120
                                   Te = FNMS(KP900968867, Td, T1);
 
121
                                   Tz = FNMS(KP900968867, Ty, Tt);
 
122
                                   TE = FMA(KP801937735, TD, TA);
 
123
                                   {
 
124
                                        E Tb, Tq, TI, TF, Ts, Tr, TG;
 
125
                                        Tb = W[0];
 
126
                                        Tq = FNMS(KP974927912, Tp, Te);
 
127
                                        TI = FMA(KP974927912, Tp, Te);
 
128
                                        TF = FMA(KP974927912, TE, Tz);
 
129
                                        TL = FNMS(KP974927912, TE, Tz);
 
130
                                        Ts = W[1];
 
131
                                        Tr = Tb * Tq;
 
132
                                        TH = W[10];
 
133
                                        TK = W[11];
 
134
                                        TG = Ts * Tq;
 
135
                                        rio[WS(ios, 1)] = FNMS(Ts, TF, Tr);
 
136
                                        TJ = TH * TI;
 
137
                                        TM = TK * TI;
 
138
                                        iio[-WS(ios, 5)] = FMA(Tb, TF, TG);
 
139
                                   }
 
140
                              }
 
141
                         }
 
142
                    }
 
143
                    iio[-WS(ios, 6)] = Tt + Tu + Tv + Tw;
 
144
                    rio[WS(ios, 6)] = FNMS(TK, TL, TJ);
 
145
                    iio[0] = FMA(TH, TL, TM);
 
146
                    {
 
147
                         E T1t, T1p, T1s, T1r, T1u, T1c, T1k, T1m;
 
148
                         T1c = FNMS(KP900968867, T1b, T1);
 
149
                         T1k = FNMS(KP900968867, T1j, Tt);
 
150
                         T1m = FNMS(KP801937735, T1l, TB);
 
151
                         {
 
152
                              E T19, T1f, T1q, T1n, T1h, T1g, T1o;
 
153
                              T19 = W[2];
 
154
                              T1f = FNMS(KP974927912, T1e, T1c);
 
155
                              T1q = FMA(KP974927912, T1e, T1c);
 
156
                              T1n = FMA(KP974927912, T1m, T1k);
 
157
                              T1t = FNMS(KP974927912, T1m, T1k);
 
158
                              T1h = W[3];
 
159
                              T1g = T19 * T1f;
 
160
                              T1p = W[8];
 
161
                              T1s = W[9];
 
162
                              T1o = T1h * T1f;
 
163
                              rio[WS(ios, 2)] = FNMS(T1h, T1n, T1g);
 
164
                              T1r = T1p * T1q;
 
165
                              T1u = T1s * T1q;
 
166
                              iio[-WS(ios, 4)] = FMA(T19, T1n, T1o);
 
167
                         }
 
168
                         {
 
169
                              E TY, TT, T10, TQ;
 
170
                              TQ = FNMS(KP900968867, TP, T1);
 
171
                              rio[WS(ios, 5)] = FNMS(T1s, T1t, T1r);
 
172
                              iio[-WS(ios, 1)] = FMA(T1p, T1t, T1u);
 
173
                              TY = FNMS(KP900968867, TX, Tt);
 
174
                              T14 = FMA(KP974927912, TS, TQ);
 
175
                              TT = FNMS(KP974927912, TS, TQ);
 
176
                              T10 = FNMS(KP801937735, TZ, TC);
 
177
                              {
 
178
                                   E TN, TV, T11, TU, T12;
 
179
                                   TN = W[4];
 
180
                                   TV = W[5];
 
181
                                   T13 = W[6];
 
182
                                   T17 = FNMS(KP974927912, T10, TY);
 
183
                                   T11 = FMA(KP974927912, T10, TY);
 
184
                                   TU = TN * TT;
 
185
                                   T12 = TV * TT;
 
186
                                   T15 = T13 * T14;
 
187
                                   T16 = W[7];
 
188
                                   rio[WS(ios, 3)] = FNMS(TV, T11, TU);
 
189
                                   iio[-WS(ios, 3)] = FMA(TN, T11, T12);
 
190
                              }
 
191
                         }
 
192
                    }
 
193
               }
 
194
          }
 
195
          rio[WS(ios, 4)] = FNMS(T16, T17, T15);
 
196
          T18 = T16 * T14;
 
197
          iio[-WS(ios, 2)] = FMA(T13, T17, T18);
 
198
     }
 
199
     return W;
 
200
}
 
201
 
 
202
static const tw_instr twinstr[] = {
 
203
     {TW_FULL, 0, 7},
 
204
     {TW_NEXT, 1, 0}
 
205
};
 
206
 
 
207
static const hc2hc_desc desc = { 7, "hb_7", twinstr, &GENUS, {18, 12, 54, 0}, 0, 0, 0 };
 
208
 
 
209
void X(codelet_hb_7) (planner *p) {
 
210
     X(khc2hc_register) (p, hb_7, &desc);
 
211
}
 
212
#else                           /* HAVE_FMA */
 
213
 
 
214
/* Generated by: ../../../genfft/gen_hc2hc -compact -variables 4 -pipeline-latency 4 -sign 1 -n 7 -dif -name hb_7 -include hb.h */
 
215
 
 
216
/*
 
217
 * This function contains 72 FP additions, 60 FP multiplications,
 
218
 * (or, 36 additions, 24 multiplications, 36 fused multiply/add),
 
219
 * 36 stack variables, and 28 memory accesses
 
220
 */
 
221
/*
 
222
 * Generator Id's : 
 
223
 * $Id: algsimp.ml,v 1.9 2006-02-12 23:34:12 athena Exp $
 
224
 * $Id: fft.ml,v 1.4 2006-01-05 03:04:27 stevenj Exp $
 
225
 * $Id: gen_hc2hc.ml,v 1.16 2006-02-12 23:34:12 athena Exp $
 
226
 */
 
227
 
 
228
#include "hb.h"
 
229
 
 
230
static const R *hb_7(R *rio, R *iio, const R *W, stride ios, INT m, INT dist)
 
231
{
 
232
     DK(KP222520933, +0.222520933956314404288902564496794759466355569);
 
233
     DK(KP900968867, +0.900968867902419126236102319507445051165919162);
 
234
     DK(KP623489801, +0.623489801858733530525004884004239810632274731);
 
235
     DK(KP781831482, +0.781831482468029808708444526674057750232334519);
 
236
     DK(KP974927912, +0.974927912181823607018131682993931217232785801);
 
237
     DK(KP433883739, +0.433883739117558120475768332848358754609990728);
 
238
     INT i;
 
239
     for (i = m - 2; i > 0; i = i - 2, rio = rio + dist, iio = iio - dist, W = W + 12, MAKE_VOLATILE_STRIDE(ios)) {
 
240
          E T1, Ta, T4, T7, Tq, TI, TR, TU, TE, Tt, Tb, Tk, Te, Th, Tx;
 
241
          E TF, TV, TQ, TJ, Tm;
 
242
          {
 
243
               E To, Tn, Tp, T8, T9;
 
244
               T1 = rio[0];
 
245
               T8 = rio[WS(ios, 3)];
 
246
               T9 = iio[-WS(ios, 4)];
 
247
               Ta = T8 + T9;
 
248
               To = T8 - T9;
 
249
               {
 
250
                    E T2, T3, T5, T6;
 
251
                    T2 = rio[WS(ios, 1)];
 
252
                    T3 = iio[-WS(ios, 6)];
 
253
                    T4 = T2 + T3;
 
254
                    Tn = T2 - T3;
 
255
                    T5 = rio[WS(ios, 2)];
 
256
                    T6 = iio[-WS(ios, 5)];
 
257
                    T7 = T5 + T6;
 
258
                    Tp = T5 - T6;
 
259
               }
 
260
               Tq = FMA(KP433883739, Tn, KP974927912 * To) - (KP781831482 * Tp);
 
261
               TI = FMA(KP781831482, Tn, KP974927912 * Tp) + (KP433883739 * To);
 
262
               TR = FNMS(KP781831482, To, KP974927912 * Tn) - (KP433883739 * Tp);
 
263
               TU = FMA(KP623489801, Ta, T1) + FNMA(KP900968867, T7, KP222520933 * T4);
 
264
               TE = FMA(KP623489801, T4, T1) + FNMA(KP900968867, Ta, KP222520933 * T7);
 
265
               Tt = FMA(KP623489801, T7, T1) + FNMA(KP222520933, Ta, KP900968867 * T4);
 
266
          }
 
267
          {
 
268
               E Tv, Tw, Tu, Ti, Tj;
 
269
               Tb = iio[0];
 
270
               Ti = rio[WS(ios, 4)];
 
271
               Tj = iio[-WS(ios, 3)];
 
272
               Tk = Ti - Tj;
 
273
               Tv = Ti + Tj;
 
274
               {
 
275
                    E Tc, Td, Tf, Tg;
 
276
                    Tc = iio[-WS(ios, 1)];
 
277
                    Td = rio[WS(ios, 6)];
 
278
                    Te = Tc - Td;
 
279
                    Tw = Tc + Td;
 
280
                    Tf = rio[WS(ios, 5)];
 
281
                    Tg = iio[-WS(ios, 2)];
 
282
                    Th = Tf - Tg;
 
283
                    Tu = Tf + Tg;
 
284
               }
 
285
               Tx = FNMS(KP974927912, Tv, KP781831482 * Tu) - (KP433883739 * Tw);
 
286
               TF = FMA(KP781831482, Tw, KP974927912 * Tu) + (KP433883739 * Tv);
 
287
               TV = FMA(KP433883739, Tu, KP781831482 * Tv) - (KP974927912 * Tw);
 
288
               TQ = FMA(KP900968867, Th, Tb) + FNMA(KP623489801, Tk, KP222520933 * Te);
 
289
               TJ = FMA(KP623489801, Te, Tb) + FMA(KP222520933, Th, KP900968867 * Tk);
 
290
               Tm = FMA(KP222520933, Tk, Tb) + FNMA(KP623489801, Th, KP900968867 * Te);
 
291
          }
 
292
          rio[0] = T1 + T4 + T7 + Ta;
 
293
          iio[-WS(ios, 6)] = Tb + Te - (Th + Tk);
 
294
          {
 
295
               E TM, TO, TL, TN;
 
296
               TM = TJ - TI;
 
297
               TO = TE + TF;
 
298
               TL = W[10];
 
299
               TN = W[11];
 
300
               iio[0] = FMA(TL, TM, TN * TO);
 
301
               rio[WS(ios, 6)] = FNMS(TN, TM, TL * TO);
 
302
          }
 
303
          {
 
304
               E TY, T10, TX, TZ;
 
305
               TY = TU + TV;
 
306
               T10 = TR + TQ;
 
307
               TX = W[2];
 
308
               TZ = W[3];
 
309
               rio[WS(ios, 2)] = FNMS(TZ, T10, TX * TY);
 
310
               iio[-WS(ios, 4)] = FMA(TX, T10, TZ * TY);
 
311
          }
 
312
          {
 
313
               E Tr, Ty, Tl, Ts;
 
314
               Tr = Tm - Tq;
 
315
               Ty = Tt - Tx;
 
316
               Tl = W[6];
 
317
               Ts = W[7];
 
318
               iio[-WS(ios, 2)] = FMA(Tl, Tr, Ts * Ty);
 
319
               rio[WS(ios, 4)] = FNMS(Ts, Tr, Tl * Ty);
 
320
          }
 
321
          {
 
322
               E TA, TC, Tz, TB;
 
323
               TA = Tt + Tx;
 
324
               TC = Tq + Tm;
 
325
               Tz = W[4];
 
326
               TB = W[5];
 
327
               rio[WS(ios, 3)] = FNMS(TB, TC, Tz * TA);
 
328
               iio[-WS(ios, 3)] = FMA(Tz, TC, TB * TA);
 
329
          }
 
330
          {
 
331
               E TS, TW, TP, TT;
 
332
               TS = TQ - TR;
 
333
               TW = TU - TV;
 
334
               TP = W[8];
 
335
               TT = W[9];
 
336
               iio[-WS(ios, 1)] = FMA(TP, TS, TT * TW);
 
337
               rio[WS(ios, 5)] = FNMS(TT, TS, TP * TW);
 
338
          }
 
339
          {
 
340
               E TG, TK, TD, TH;
 
341
               TG = TE - TF;
 
342
               TK = TI + TJ;
 
343
               TD = W[0];
 
344
               TH = W[1];
 
345
               rio[WS(ios, 1)] = FNMS(TH, TK, TD * TG);
 
346
               iio[-WS(ios, 5)] = FMA(TD, TK, TH * TG);
 
347
          }
 
348
     }
 
349
     return W;
 
350
}
 
351
 
 
352
static const tw_instr twinstr[] = {
 
353
     {TW_FULL, 0, 7},
 
354
     {TW_NEXT, 1, 0}
 
355
};
 
356
 
 
357
static const hc2hc_desc desc = { 7, "hb_7", twinstr, &GENUS, {36, 24, 36, 0}, 0, 0, 0 };
 
358
 
 
359
void X(codelet_hb_7) (planner *p) {
 
360
     X(khc2hc_register) (p, hb_7, &desc);
 
361
}
 
362
#endif                          /* HAVE_FMA */