~ubuntu-branches/ubuntu/utopic/fftw3/utopic

« back to all changes in this revision

Viewing changes to cell/spu/spu_n2fv_14.spuc

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2011-12-14 13:21:22 UTC
  • mfrom: (3.1.5 sid)
  • Revision ID: package-import@ubuntu.com-20111214132122-l4avyl2kkr7vq5aj
Tags: 3.3-1ubuntu1
* Merge with Debian; remaining changes:
  - Revert the ARM workaround.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (c) 2003, 2007-8 Matteo Frigo
3
 
 * Copyright (c) 2003, 2007-8 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
 
/* Generated by: ../../genfft/gen_notw_c -standalone -fma -reorder-insns -simd -compact -variables 100000 -with-ostride 2 -include fftw-spu.h -store-multiple 2 -n 14 -name X(spu_n2fv_14) */
21
 
 
22
 
/*
23
 
 * This function contains 74 FP additions, 48 FP multiplications,
24
 
 * (or, 32 additions, 6 multiplications, 42 fused multiply/add),
25
 
 * 93 stack variables, 6 constants, and 35 memory accesses
26
 
 */
27
 
#include "fftw-spu.h"
28
 
 
29
 
void X(spu_n2fv_14) (const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs) {
30
 
     DVK(KP801937735, +0.801937735804838252472204639014890102331838324);
31
 
     DVK(KP974927912, +0.974927912181823607018131682993931217232785801);
32
 
     DVK(KP554958132, +0.554958132087371191422194871006410481067288862);
33
 
     DVK(KP900968867, +0.900968867902419126236102319507445051165919162);
34
 
     DVK(KP692021471, +0.692021471630095869627814897002069140197260599);
35
 
     DVK(KP356895867, +0.356895867892209443894399510021300583399127187);
36
 
     INT i;
37
 
     const R *xi;
38
 
     R *xo;
39
 
     xi = ri;
40
 
     xo = ro;
41
 
     for (i = v; i > 0; i = i - VL, xi = xi + (VL * ivs), xo = xo + (VL * ovs), MAKE_VOLATILE_STRIDE(is), MAKE_VOLATILE_STRIDE(os)) {
42
 
          V TH, T3, Ta, Ts, TV, TN, TK, TW, Tt, To, Th, Tu, TU, TQ, Tp;
43
 
          V TC, Tx, TR, T14, TZ, T1, T2, TI, T6, TJ, T9, TP, Tn, TO, Tk;
44
 
          V TM, Tg, TL, Td, T4, T5, T7, T8, Tl, Tm, Ti, Tj, Te, Tf, Tb;
45
 
          V Tc, T1a, T1b, T19, T1c, Tr, Tw, Tq, Tv, T16, T18, T15, T17, T1d, T1e;
46
 
          V T1f, T1i, Tz, TB, Ty, TA, T1g, TT, TY, TS, TX, T1h, T1j, T11, T13;
47
 
          V T10, T12, T1k, TE, TG, TD, TF, T1l, T1m;
48
 
          T1 = LD(&(xi[0]), ivs, &(xi[0]));
49
 
          T2 = LD(&(xi[WS(is, 7)]), ivs, &(xi[WS(is, 1)]));
50
 
          TH = VADD(T1, T2);
51
 
          T3 = VSUB(T1, T2);
52
 
          T4 = LD(&(xi[WS(is, 2)]), ivs, &(xi[0]));
53
 
          T5 = LD(&(xi[WS(is, 9)]), ivs, &(xi[WS(is, 1)]));
54
 
          TI = VADD(T4, T5);
55
 
          T6 = VSUB(T4, T5);
56
 
          T7 = LD(&(xi[WS(is, 12)]), ivs, &(xi[0]));
57
 
          T8 = LD(&(xi[WS(is, 5)]), ivs, &(xi[WS(is, 1)]));
58
 
          TJ = VADD(T7, T8);
59
 
          T9 = VSUB(T7, T8);
60
 
          Tl = LD(&(xi[WS(is, 8)]), ivs, &(xi[0]));
61
 
          Tm = LD(&(xi[WS(is, 1)]), ivs, &(xi[WS(is, 1)]));
62
 
          TP = VADD(Tl, Tm);
63
 
          Tn = VSUB(Tl, Tm);
64
 
          Ti = LD(&(xi[WS(is, 6)]), ivs, &(xi[0]));
65
 
          Tj = LD(&(xi[WS(is, 13)]), ivs, &(xi[WS(is, 1)]));
66
 
          TO = VADD(Ti, Tj);
67
 
          Tk = VSUB(Ti, Tj);
68
 
          Te = LD(&(xi[WS(is, 10)]), ivs, &(xi[0]));
69
 
          Tf = LD(&(xi[WS(is, 3)]), ivs, &(xi[WS(is, 1)]));
70
 
          TM = VADD(Te, Tf);
71
 
          Tg = VSUB(Te, Tf);
72
 
          Tb = LD(&(xi[WS(is, 4)]), ivs, &(xi[0]));
73
 
          Tc = LD(&(xi[WS(is, 11)]), ivs, &(xi[WS(is, 1)]));
74
 
          TL = VADD(Tb, Tc);
75
 
          Td = VSUB(Tb, Tc);
76
 
          Ta = VADD(T6, T9);
77
 
          Ts = VSUB(T9, T6);
78
 
          TV = VSUB(TL, TM);
79
 
          TN = VADD(TL, TM);
80
 
          TK = VADD(TI, TJ);
81
 
          TW = VSUB(TJ, TI);
82
 
          Tt = VSUB(Tn, Tk);
83
 
          To = VADD(Tk, Tn);
84
 
          Th = VADD(Td, Tg);
85
 
          Tu = VSUB(Tg, Td);
86
 
          TU = VSUB(TO, TP);
87
 
          TQ = VADD(TO, TP);
88
 
          Tp = VFNMS(LDK(KP356895867), Ta, To);
89
 
          TC = VFNMS(LDK(KP356895867), To, Th);
90
 
          Tx = VFNMS(LDK(KP356895867), Th, Ta);
91
 
          TR = VFNMS(LDK(KP356895867), TQ, TN);
92
 
          T14 = VFNMS(LDK(KP356895867), TN, TK);
93
 
          TZ = VFNMS(LDK(KP356895867), TK, TQ);
94
 
          T19 = VADD(T3, VADD(Ta, VADD(Th, To)));
95
 
          STM2(&(xo[14]), T19, ovs, &(xo[2]));
96
 
          T1a = VADD(TH, VADD(TK, VADD(TN, TQ)));
97
 
          STM2(&(xo[0]), T1a, ovs, &(xo[0]));
98
 
          Tq = VFNMS(LDK(KP692021471), Tp, Th);
99
 
          Tr = VFNMS(LDK(KP900968867), Tq, T3);
100
 
          Tv = VFMA(LDK(KP554958132), Tu, Tt);
101
 
          Tw = VMUL(LDK(KP974927912), VFNMS(LDK(KP801937735), Tv, Ts));
102
 
          T1b = VFNMSI(Tw, Tr);
103
 
          STM2(&(xo[10]), T1b, ovs, &(xo[2]));
104
 
          T1c = VFMAI(Tw, Tr);
105
 
          STM2(&(xo[18]), T1c, ovs, &(xo[2]));
106
 
          T15 = VFNMS(LDK(KP692021471), T14, TQ);
107
 
          T16 = VFNMS(LDK(KP900968867), T15, TH);
108
 
          T17 = VFNMS(LDK(KP554958132), TU, TW);
109
 
          T18 = VMUL(LDK(KP974927912), VFNMS(LDK(KP801937735), T17, TV));
110
 
          T1d = VFMAI(T18, T16);
111
 
          STM2(&(xo[12]), T1d, ovs, &(xo[0]));
112
 
          STN2(&(xo[12]), T1d, T19, ovs);
113
 
          T1e = VFNMSI(T18, T16);
114
 
          STM2(&(xo[16]), T1e, ovs, &(xo[0]));
115
 
          STN2(&(xo[16]), T1e, T1c, ovs);
116
 
          Ty = VFNMS(LDK(KP692021471), Tx, To);
117
 
          Tz = VFNMS(LDK(KP900968867), Ty, T3);
118
 
          TA = VFMA(LDK(KP554958132), Tt, Ts);
119
 
          TB = VMUL(LDK(KP974927912), VFMA(LDK(KP801937735), TA, Tu));
120
 
          T1f = VFNMSI(TB, Tz);
121
 
          STM2(&(xo[26]), T1f, ovs, &(xo[2]));
122
 
          T1g = VFMAI(TB, Tz);
123
 
          STM2(&(xo[2]), T1g, ovs, &(xo[2]));
124
 
          STN2(&(xo[0]), T1a, T1g, ovs);
125
 
          TS = VFNMS(LDK(KP692021471), TR, TK);
126
 
          TT = VFNMS(LDK(KP900968867), TS, TH);
127
 
          TX = VFMA(LDK(KP554958132), TW, TV);
128
 
          TY = VMUL(LDK(KP974927912), VFNMS(LDK(KP801937735), TX, TU));
129
 
          T1h = VFMAI(TY, TT);
130
 
          STM2(&(xo[8]), T1h, ovs, &(xo[0]));
131
 
          STN2(&(xo[8]), T1h, T1b, ovs);
132
 
          T1i = VFNMSI(TY, TT);
133
 
          STM2(&(xo[20]), T1i, ovs, &(xo[0]));
134
 
          T10 = VFNMS(LDK(KP692021471), TZ, TN);
135
 
          T11 = VFNMS(LDK(KP900968867), T10, TH);
136
 
          T12 = VFMA(LDK(KP554958132), TV, TU);
137
 
          T13 = VMUL(LDK(KP974927912), VFMA(LDK(KP801937735), T12, TW));
138
 
          T1j = VFMAI(T13, T11);
139
 
          STM2(&(xo[4]), T1j, ovs, &(xo[0]));
140
 
          T1k = VFNMSI(T13, T11);
141
 
          STM2(&(xo[24]), T1k, ovs, &(xo[0]));
142
 
          STN2(&(xo[24]), T1k, T1f, ovs);
143
 
          TD = VFNMS(LDK(KP692021471), TC, Ta);
144
 
          TE = VFNMS(LDK(KP900968867), TD, T3);
145
 
          TF = VFNMS(LDK(KP554958132), Ts, Tu);
146
 
          TG = VMUL(LDK(KP974927912), VFNMS(LDK(KP801937735), TF, Tt));
147
 
          T1l = VFNMSI(TG, TE);
148
 
          STM2(&(xo[22]), T1l, ovs, &(xo[2]));
149
 
          STN2(&(xo[20]), T1i, T1l, ovs);
150
 
          T1m = VFMAI(TG, TE);
151
 
          STM2(&(xo[6]), T1m, ovs, &(xo[2]));
152
 
          STN2(&(xo[4]), T1j, T1m, ovs);
153
 
     }
154
 
}