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

« back to all changes in this revision

Viewing changes to cell/spu/spu_n1fv_11.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 -n 11 -name X(spu_n2fv_11) */
21
 
 
22
 
/*
23
 
 * This function contains 70 FP additions, 60 FP multiplications,
24
 
 * (or, 15 additions, 5 multiplications, 55 fused multiply/add),
25
 
 * 80 stack variables, 11 constants, and 22 memory accesses
26
 
 */
27
 
#include "fftw-spu.h"
28
 
 
29
 
void X(spu_n2fv_11) (const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs) {
30
 
     DVK(KP959492973, +0.959492973614497389890368057066327699062454848);
31
 
     DVK(KP918985947, +0.918985947228994779780736114132655398124909697);
32
 
     DVK(KP989821441, +0.989821441880932732376092037776718787376519372);
33
 
     DVK(KP830830026, +0.830830026003772851058548298459246407048009821);
34
 
     DVK(KP876768831, +0.876768831002589333891339807079336796764054852);
35
 
     DVK(KP778434453, +0.778434453334651800608337670740821884709317477);
36
 
     DVK(KP372785597, +0.372785597771792209609773152906148328659002598);
37
 
     DVK(KP715370323, +0.715370323453429719112414662767260662417897278);
38
 
     DVK(KP521108558, +0.521108558113202722944698153526659300680427422);
39
 
     DVK(KP634356270, +0.634356270682424498893150776899916060542806975);
40
 
     DVK(KP342584725, +0.342584725681637509502641509861112333758894680);
41
 
     INT i;
42
 
     const R *xi;
43
 
     R *xo;
44
 
     xi = ri;
45
 
     xo = ro;
46
 
     for (i = v; i > 0; i = i - VL, xi = xi + (VL * ivs), xo = xo + (VL * ovs), MAKE_VOLATILE_STRIDE(is), MAKE_VOLATILE_STRIDE(os)) {
47
 
          V T1, T4, Tp, Tg, Tq, T7, Tn, Ta, Tm, Td, To, Ti, Tw, T12, Ts;
48
 
          V TX, TT, TK, TB, TO, TF, T2, T3, Te, Tf, T5, T6, T8, T9, Tb;
49
 
          V Tc, Th, Tv, T11, Tr, TW, TS, TJ, TA, TN, TE, Tk, Tu, Tj, Tt;
50
 
          V Tl, TZ, T14, TY, T13, T10, TQ, TV, TP, TU, TR, TH, TM, TG, TL;
51
 
          V TI, Ty, TD, Tx, TC, Tz;
52
 
          T1 = LD(&(xi[0]), ivs, &(xi[0]));
53
 
          T2 = LD(&(xi[WS(is, 1)]), ivs, &(xi[WS(is, 1)]));
54
 
          T3 = LD(&(xi[WS(is, 10)]), ivs, &(xi[0]));
55
 
          T4 = VADD(T2, T3);
56
 
          Tp = VSUB(T3, T2);
57
 
          Te = LD(&(xi[WS(is, 5)]), ivs, &(xi[WS(is, 1)]));
58
 
          Tf = LD(&(xi[WS(is, 6)]), ivs, &(xi[0]));
59
 
          Tg = VADD(Te, Tf);
60
 
          Tq = VSUB(Tf, Te);
61
 
          T5 = LD(&(xi[WS(is, 2)]), ivs, &(xi[0]));
62
 
          T6 = LD(&(xi[WS(is, 9)]), ivs, &(xi[WS(is, 1)]));
63
 
          T7 = VADD(T5, T6);
64
 
          Tn = VSUB(T6, T5);
65
 
          T8 = LD(&(xi[WS(is, 3)]), ivs, &(xi[WS(is, 1)]));
66
 
          T9 = LD(&(xi[WS(is, 8)]), ivs, &(xi[0]));
67
 
          Ta = VADD(T8, T9);
68
 
          Tm = VSUB(T9, T8);
69
 
          Tb = LD(&(xi[WS(is, 4)]), ivs, &(xi[0]));
70
 
          Tc = LD(&(xi[WS(is, 7)]), ivs, &(xi[WS(is, 1)]));
71
 
          Td = VADD(Tb, Tc);
72
 
          To = VSUB(Tc, Tb);
73
 
          Th = VFNMS(LDK(KP342584725), Ta, T7);
74
 
          Ti = VFNMS(LDK(KP634356270), Th, Td);
75
 
          Tv = VFNMS(LDK(KP342584725), Td, T4);
76
 
          Tw = VFNMS(LDK(KP634356270), Tv, T7);
77
 
          T11 = VFNMS(LDK(KP521108558), Tp, Tn);
78
 
          T12 = VFNMS(LDK(KP715370323), T11, Tm);
79
 
          Tr = VFMA(LDK(KP521108558), Tq, Tp);
80
 
          Ts = VFMA(LDK(KP715370323), Tr, To);
81
 
          TW = VFNMS(LDK(KP342584725), Tg, Td);
82
 
          TX = VFNMS(LDK(KP634356270), TW, Ta);
83
 
          TS = VFMA(LDK(KP715370323), Tm, Tp);
84
 
          TT = VFMA(LDK(KP372785597), To, TS);
85
 
          TJ = VFNMS(LDK(KP521108558), Tn, To);
86
 
          TK = VFMA(LDK(KP715370323), TJ, Tq);
87
 
          TA = VFMA(LDK(KP521108558), Tm, Tq);
88
 
          TB = VFNMS(LDK(KP715370323), TA, Tn);
89
 
          TN = VFNMS(LDK(KP342584725), T7, Tg);
90
 
          TO = VFNMS(LDK(KP634356270), TN, T4);
91
 
          TE = VFNMS(LDK(KP342584725), T4, Ta);
92
 
          TF = VFNMS(LDK(KP634356270), TE, Tg);
93
 
          ST(&(xo[0]), VADD(T1, VADD(T4, VADD(T7, VADD(Ta, VADD(Td, Tg))))), ovs, &(xo[0]));
94
 
          Tj = VFNMS(LDK(KP778434453), Ti, T4);
95
 
          Tk = VFNMS(LDK(KP876768831), Tj, Tg);
96
 
          Tt = VFMA(LDK(KP830830026), Ts, Tn);
97
 
          Tu = VMUL(LDK(KP989821441), VFMA(LDK(KP918985947), Tt, Tm));
98
 
          Tl = VFNMS(LDK(KP959492973), Tk, T1);
99
 
          ST(&(xo[20]), VFNMSI(Tu, Tl), ovs, &(xo[0]));
100
 
          ST(&(xo[2]), VFMAI(Tu, Tl), ovs, &(xo[2]));
101
 
          TY = VFNMS(LDK(KP778434453), TX, T7);
102
 
          TZ = VFNMS(LDK(KP876768831), TY, T4);
103
 
          T13 = VFNMS(LDK(KP830830026), T12, To);
104
 
          T14 = VMUL(LDK(KP989821441), VFNMS(LDK(KP918985947), T13, Tq));
105
 
          T10 = VFNMS(LDK(KP959492973), TZ, T1);
106
 
          ST(&(xo[12]), VFNMSI(T14, T10), ovs, &(xo[0]));
107
 
          ST(&(xo[10]), VFMAI(T14, T10), ovs, &(xo[2]));
108
 
          TP = VFNMS(LDK(KP778434453), TO, Ta);
109
 
          TQ = VFNMS(LDK(KP876768831), TP, Td);
110
 
          TU = VFNMS(LDK(KP830830026), TT, Tq);
111
 
          TV = VMUL(LDK(KP989821441), VFMA(LDK(KP918985947), TU, Tn));
112
 
          TR = VFNMS(LDK(KP959492973), TQ, T1);
113
 
          ST(&(xo[8]), VFNMSI(TV, TR), ovs, &(xo[0]));
114
 
          ST(&(xo[14]), VFMAI(TV, TR), ovs, &(xo[2]));
115
 
          TG = VFNMS(LDK(KP778434453), TF, Td);
116
 
          TH = VFNMS(LDK(KP876768831), TG, T7);
117
 
          TL = VFNMS(LDK(KP830830026), TK, Tm);
118
 
          TM = VMUL(LDK(KP989821441), VFNMS(LDK(KP918985947), TL, Tp));
119
 
          TI = VFNMS(LDK(KP959492973), TH, T1);
120
 
          ST(&(xo[16]), VFNMSI(TM, TI), ovs, &(xo[0]));
121
 
          ST(&(xo[6]), VFMAI(TM, TI), ovs, &(xo[2]));
122
 
          Tx = VFNMS(LDK(KP778434453), Tw, Tg);
123
 
          Ty = VFNMS(LDK(KP876768831), Tx, Ta);
124
 
          TC = VFMA(LDK(KP830830026), TB, Tp);
125
 
          TD = VMUL(LDK(KP989821441), VFNMS(LDK(KP918985947), TC, To));
126
 
          Tz = VFNMS(LDK(KP959492973), Ty, T1);
127
 
          ST(&(xo[4]), VFNMSI(TD, Tz), ovs, &(xo[0]));
128
 
          ST(&(xo[18]), VFMAI(TD, Tz), ovs, &(xo[2]));
129
 
     }
130
 
}