annotate src/fftw-3.3.8/dft/simd/common/n2fv_16.c @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents d0c2a83c1364
children
rev   line source
Chris@82 1 /*
Chris@82 2 * Copyright (c) 2003, 2007-14 Matteo Frigo
Chris@82 3 * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
Chris@82 4 *
Chris@82 5 * This program is free software; you can redistribute it and/or modify
Chris@82 6 * it under the terms of the GNU General Public License as published by
Chris@82 7 * the Free Software Foundation; either version 2 of the License, or
Chris@82 8 * (at your option) any later version.
Chris@82 9 *
Chris@82 10 * This program is distributed in the hope that it will be useful,
Chris@82 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@82 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@82 13 * GNU General Public License for more details.
Chris@82 14 *
Chris@82 15 * You should have received a copy of the GNU General Public License
Chris@82 16 * along with this program; if not, write to the Free Software
Chris@82 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Chris@82 18 *
Chris@82 19 */
Chris@82 20
Chris@82 21 /* This file was automatically generated --- DO NOT EDIT */
Chris@82 22 /* Generated on Thu May 24 08:05:08 EDT 2018 */
Chris@82 23
Chris@82 24 #include "dft/codelet-dft.h"
Chris@82 25
Chris@82 26 #if defined(ARCH_PREFERS_FMA) || defined(ISA_EXTENSION_PREFERS_FMA)
Chris@82 27
Chris@82 28 /* Generated by: ../../../genfft/gen_notw_c.native -fma -simd -compact -variables 4 -pipeline-latency 8 -n 16 -name n2fv_16 -with-ostride 2 -include dft/simd/n2f.h -store-multiple 2 */
Chris@82 29
Chris@82 30 /*
Chris@82 31 * This function contains 72 FP additions, 34 FP multiplications,
Chris@82 32 * (or, 38 additions, 0 multiplications, 34 fused multiply/add),
Chris@82 33 * 38 stack variables, 3 constants, and 40 memory accesses
Chris@82 34 */
Chris@82 35 #include "dft/simd/n2f.h"
Chris@82 36
Chris@82 37 static void n2fv_16(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
Chris@82 38 {
Chris@82 39 DVK(KP923879532, +0.923879532511286756128183189396788286822416626);
Chris@82 40 DVK(KP707106781, +0.707106781186547524400844362104849039284835938);
Chris@82 41 DVK(KP414213562, +0.414213562373095048801688724209698078569671875);
Chris@82 42 {
Chris@82 43 INT i;
Chris@82 44 const R *xi;
Chris@82 45 R *xo;
Chris@82 46 xi = ri;
Chris@82 47 xo = ro;
Chris@82 48 for (i = v; i > 0; i = i - VL, xi = xi + (VL * ivs), xo = xo + (VL * ovs), MAKE_VOLATILE_STRIDE(32, is), MAKE_VOLATILE_STRIDE(32, os)) {
Chris@82 49 V T7, TU, Tz, TH, Tu, TV, TA, TK, Te, TX, TC, TO, Tl, TY, TD;
Chris@82 50 V TR;
Chris@82 51 {
Chris@82 52 V T1, T2, T3, T4, T5, T6;
Chris@82 53 T1 = LD(&(xi[0]), ivs, &(xi[0]));
Chris@82 54 T2 = LD(&(xi[WS(is, 8)]), ivs, &(xi[0]));
Chris@82 55 T3 = VADD(T1, T2);
Chris@82 56 T4 = LD(&(xi[WS(is, 4)]), ivs, &(xi[0]));
Chris@82 57 T5 = LD(&(xi[WS(is, 12)]), ivs, &(xi[0]));
Chris@82 58 T6 = VADD(T4, T5);
Chris@82 59 T7 = VSUB(T3, T6);
Chris@82 60 TU = VSUB(T4, T5);
Chris@82 61 Tz = VADD(T3, T6);
Chris@82 62 TH = VSUB(T1, T2);
Chris@82 63 }
Chris@82 64 {
Chris@82 65 V Tq, TJ, Tt, TI;
Chris@82 66 {
Chris@82 67 V To, Tp, Tr, Ts;
Chris@82 68 To = LD(&(xi[WS(is, 14)]), ivs, &(xi[0]));
Chris@82 69 Tp = LD(&(xi[WS(is, 6)]), ivs, &(xi[0]));
Chris@82 70 Tq = VADD(To, Tp);
Chris@82 71 TJ = VSUB(To, Tp);
Chris@82 72 Tr = LD(&(xi[WS(is, 2)]), ivs, &(xi[0]));
Chris@82 73 Ts = LD(&(xi[WS(is, 10)]), ivs, &(xi[0]));
Chris@82 74 Tt = VADD(Tr, Ts);
Chris@82 75 TI = VSUB(Tr, Ts);
Chris@82 76 }
Chris@82 77 Tu = VSUB(Tq, Tt);
Chris@82 78 TV = VSUB(TJ, TI);
Chris@82 79 TA = VADD(Tt, Tq);
Chris@82 80 TK = VADD(TI, TJ);
Chris@82 81 }
Chris@82 82 {
Chris@82 83 V Ta, TM, Td, TN;
Chris@82 84 {
Chris@82 85 V T8, T9, Tb, Tc;
Chris@82 86 T8 = LD(&(xi[WS(is, 1)]), ivs, &(xi[WS(is, 1)]));
Chris@82 87 T9 = LD(&(xi[WS(is, 9)]), ivs, &(xi[WS(is, 1)]));
Chris@82 88 Ta = VADD(T8, T9);
Chris@82 89 TM = VSUB(T8, T9);
Chris@82 90 Tb = LD(&(xi[WS(is, 5)]), ivs, &(xi[WS(is, 1)]));
Chris@82 91 Tc = LD(&(xi[WS(is, 13)]), ivs, &(xi[WS(is, 1)]));
Chris@82 92 Td = VADD(Tb, Tc);
Chris@82 93 TN = VSUB(Tb, Tc);
Chris@82 94 }
Chris@82 95 Te = VSUB(Ta, Td);
Chris@82 96 TX = VFMA(LDK(KP414213562), TM, TN);
Chris@82 97 TC = VADD(Ta, Td);
Chris@82 98 TO = VFNMS(LDK(KP414213562), TN, TM);
Chris@82 99 }
Chris@82 100 {
Chris@82 101 V Th, TP, Tk, TQ;
Chris@82 102 {
Chris@82 103 V Tf, Tg, Ti, Tj;
Chris@82 104 Tf = LD(&(xi[WS(is, 15)]), ivs, &(xi[WS(is, 1)]));
Chris@82 105 Tg = LD(&(xi[WS(is, 7)]), ivs, &(xi[WS(is, 1)]));
Chris@82 106 Th = VADD(Tf, Tg);
Chris@82 107 TP = VSUB(Tf, Tg);
Chris@82 108 Ti = LD(&(xi[WS(is, 3)]), ivs, &(xi[WS(is, 1)]));
Chris@82 109 Tj = LD(&(xi[WS(is, 11)]), ivs, &(xi[WS(is, 1)]));
Chris@82 110 Tk = VADD(Ti, Tj);
Chris@82 111 TQ = VSUB(Tj, Ti);
Chris@82 112 }
Chris@82 113 Tl = VSUB(Th, Tk);
Chris@82 114 TY = VFMA(LDK(KP414213562), TP, TQ);
Chris@82 115 TD = VADD(Th, Tk);
Chris@82 116 TR = VFNMS(LDK(KP414213562), TQ, TP);
Chris@82 117 }
Chris@82 118 {
Chris@82 119 V T1b, T1c, T1d, T1e;
Chris@82 120 {
Chris@82 121 V TB, TE, TF, TG;
Chris@82 122 TB = VADD(Tz, TA);
Chris@82 123 TE = VADD(TC, TD);
Chris@82 124 T1b = VSUB(TB, TE);
Chris@82 125 STM2(&(xo[16]), T1b, ovs, &(xo[0]));
Chris@82 126 T1c = VADD(TB, TE);
Chris@82 127 STM2(&(xo[0]), T1c, ovs, &(xo[0]));
Chris@82 128 TF = VSUB(Tz, TA);
Chris@82 129 TG = VSUB(TD, TC);
Chris@82 130 T1d = VFNMSI(TG, TF);
Chris@82 131 STM2(&(xo[24]), T1d, ovs, &(xo[0]));
Chris@82 132 T1e = VFMAI(TG, TF);
Chris@82 133 STM2(&(xo[8]), T1e, ovs, &(xo[0]));
Chris@82 134 }
Chris@82 135 {
Chris@82 136 V T1f, T1g, T1h, T1i;
Chris@82 137 {
Chris@82 138 V Tn, Tx, Tw, Ty, Tm, Tv;
Chris@82 139 Tm = VADD(Te, Tl);
Chris@82 140 Tn = VFNMS(LDK(KP707106781), Tm, T7);
Chris@82 141 Tx = VFMA(LDK(KP707106781), Tm, T7);
Chris@82 142 Tv = VSUB(Tl, Te);
Chris@82 143 Tw = VFNMS(LDK(KP707106781), Tv, Tu);
Chris@82 144 Ty = VFMA(LDK(KP707106781), Tv, Tu);
Chris@82 145 T1f = VFNMSI(Tw, Tn);
Chris@82 146 STM2(&(xo[12]), T1f, ovs, &(xo[0]));
Chris@82 147 T1g = VFMAI(Ty, Tx);
Chris@82 148 STM2(&(xo[4]), T1g, ovs, &(xo[0]));
Chris@82 149 T1h = VFMAI(Tw, Tn);
Chris@82 150 STM2(&(xo[20]), T1h, ovs, &(xo[0]));
Chris@82 151 T1i = VFNMSI(Ty, Tx);
Chris@82 152 STM2(&(xo[28]), T1i, ovs, &(xo[0]));
Chris@82 153 }
Chris@82 154 {
Chris@82 155 V TT, T11, T10, T12;
Chris@82 156 {
Chris@82 157 V TL, TS, TW, TZ;
Chris@82 158 TL = VFMA(LDK(KP707106781), TK, TH);
Chris@82 159 TS = VADD(TO, TR);
Chris@82 160 TT = VFNMS(LDK(KP923879532), TS, TL);
Chris@82 161 T11 = VFMA(LDK(KP923879532), TS, TL);
Chris@82 162 TW = VFNMS(LDK(KP707106781), TV, TU);
Chris@82 163 TZ = VSUB(TX, TY);
Chris@82 164 T10 = VFNMS(LDK(KP923879532), TZ, TW);
Chris@82 165 T12 = VFMA(LDK(KP923879532), TZ, TW);
Chris@82 166 }
Chris@82 167 {
Chris@82 168 V T1j, T1k, T1l, T1m;
Chris@82 169 T1j = VFNMSI(T10, TT);
Chris@82 170 STM2(&(xo[18]), T1j, ovs, &(xo[2]));
Chris@82 171 STN2(&(xo[16]), T1b, T1j, ovs);
Chris@82 172 T1k = VFMAI(T12, T11);
Chris@82 173 STM2(&(xo[30]), T1k, ovs, &(xo[2]));
Chris@82 174 STN2(&(xo[28]), T1i, T1k, ovs);
Chris@82 175 T1l = VFMAI(T10, TT);
Chris@82 176 STM2(&(xo[14]), T1l, ovs, &(xo[2]));
Chris@82 177 STN2(&(xo[12]), T1f, T1l, ovs);
Chris@82 178 T1m = VFNMSI(T12, T11);
Chris@82 179 STM2(&(xo[2]), T1m, ovs, &(xo[2]));
Chris@82 180 STN2(&(xo[0]), T1c, T1m, ovs);
Chris@82 181 }
Chris@82 182 }
Chris@82 183 {
Chris@82 184 V T15, T19, T18, T1a;
Chris@82 185 {
Chris@82 186 V T13, T14, T16, T17;
Chris@82 187 T13 = VFNMS(LDK(KP707106781), TK, TH);
Chris@82 188 T14 = VADD(TX, TY);
Chris@82 189 T15 = VFNMS(LDK(KP923879532), T14, T13);
Chris@82 190 T19 = VFMA(LDK(KP923879532), T14, T13);
Chris@82 191 T16 = VFMA(LDK(KP707106781), TV, TU);
Chris@82 192 T17 = VSUB(TR, TO);
Chris@82 193 T18 = VFNMS(LDK(KP923879532), T17, T16);
Chris@82 194 T1a = VFMA(LDK(KP923879532), T17, T16);
Chris@82 195 }
Chris@82 196 {
Chris@82 197 V T1n, T1o, T1p, T1q;
Chris@82 198 T1n = VFNMSI(T18, T15);
Chris@82 199 STM2(&(xo[10]), T1n, ovs, &(xo[2]));
Chris@82 200 STN2(&(xo[8]), T1e, T1n, ovs);
Chris@82 201 T1o = VFNMSI(T1a, T19);
Chris@82 202 STM2(&(xo[26]), T1o, ovs, &(xo[2]));
Chris@82 203 STN2(&(xo[24]), T1d, T1o, ovs);
Chris@82 204 T1p = VFMAI(T18, T15);
Chris@82 205 STM2(&(xo[22]), T1p, ovs, &(xo[2]));
Chris@82 206 STN2(&(xo[20]), T1h, T1p, ovs);
Chris@82 207 T1q = VFMAI(T1a, T19);
Chris@82 208 STM2(&(xo[6]), T1q, ovs, &(xo[2]));
Chris@82 209 STN2(&(xo[4]), T1g, T1q, ovs);
Chris@82 210 }
Chris@82 211 }
Chris@82 212 }
Chris@82 213 }
Chris@82 214 }
Chris@82 215 }
Chris@82 216 VLEAVE();
Chris@82 217 }
Chris@82 218
Chris@82 219 static const kdft_desc desc = { 16, XSIMD_STRING("n2fv_16"), {38, 0, 34, 0}, &GENUS, 0, 2, 0, 0 };
Chris@82 220
Chris@82 221 void XSIMD(codelet_n2fv_16) (planner *p) {
Chris@82 222 X(kdft_register) (p, n2fv_16, &desc);
Chris@82 223 }
Chris@82 224
Chris@82 225 #else
Chris@82 226
Chris@82 227 /* Generated by: ../../../genfft/gen_notw_c.native -simd -compact -variables 4 -pipeline-latency 8 -n 16 -name n2fv_16 -with-ostride 2 -include dft/simd/n2f.h -store-multiple 2 */
Chris@82 228
Chris@82 229 /*
Chris@82 230 * This function contains 72 FP additions, 12 FP multiplications,
Chris@82 231 * (or, 68 additions, 8 multiplications, 4 fused multiply/add),
Chris@82 232 * 38 stack variables, 3 constants, and 40 memory accesses
Chris@82 233 */
Chris@82 234 #include "dft/simd/n2f.h"
Chris@82 235
Chris@82 236 static void n2fv_16(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
Chris@82 237 {
Chris@82 238 DVK(KP923879532, +0.923879532511286756128183189396788286822416626);
Chris@82 239 DVK(KP382683432, +0.382683432365089771728459984030398866761344562);
Chris@82 240 DVK(KP707106781, +0.707106781186547524400844362104849039284835938);
Chris@82 241 {
Chris@82 242 INT i;
Chris@82 243 const R *xi;
Chris@82 244 R *xo;
Chris@82 245 xi = ri;
Chris@82 246 xo = ro;
Chris@82 247 for (i = v; i > 0; i = i - VL, xi = xi + (VL * ivs), xo = xo + (VL * ovs), MAKE_VOLATILE_STRIDE(32, is), MAKE_VOLATILE_STRIDE(32, os)) {
Chris@82 248 V Tp, T13, Tu, TN, Tm, T14, Tv, TY, T7, T17, Ty, TT, Te, T16, Tx;
Chris@82 249 V TQ;
Chris@82 250 {
Chris@82 251 V Tn, To, TM, Ts, Tt, TL;
Chris@82 252 Tn = LD(&(xi[WS(is, 4)]), ivs, &(xi[0]));
Chris@82 253 To = LD(&(xi[WS(is, 12)]), ivs, &(xi[0]));
Chris@82 254 TM = VADD(Tn, To);
Chris@82 255 Ts = LD(&(xi[0]), ivs, &(xi[0]));
Chris@82 256 Tt = LD(&(xi[WS(is, 8)]), ivs, &(xi[0]));
Chris@82 257 TL = VADD(Ts, Tt);
Chris@82 258 Tp = VSUB(Tn, To);
Chris@82 259 T13 = VADD(TL, TM);
Chris@82 260 Tu = VSUB(Ts, Tt);
Chris@82 261 TN = VSUB(TL, TM);
Chris@82 262 }
Chris@82 263 {
Chris@82 264 V Ti, TW, Tl, TX;
Chris@82 265 {
Chris@82 266 V Tg, Th, Tj, Tk;
Chris@82 267 Tg = LD(&(xi[WS(is, 14)]), ivs, &(xi[0]));
Chris@82 268 Th = LD(&(xi[WS(is, 6)]), ivs, &(xi[0]));
Chris@82 269 Ti = VSUB(Tg, Th);
Chris@82 270 TW = VADD(Tg, Th);
Chris@82 271 Tj = LD(&(xi[WS(is, 2)]), ivs, &(xi[0]));
Chris@82 272 Tk = LD(&(xi[WS(is, 10)]), ivs, &(xi[0]));
Chris@82 273 Tl = VSUB(Tj, Tk);
Chris@82 274 TX = VADD(Tj, Tk);
Chris@82 275 }
Chris@82 276 Tm = VMUL(LDK(KP707106781), VSUB(Ti, Tl));
Chris@82 277 T14 = VADD(TX, TW);
Chris@82 278 Tv = VMUL(LDK(KP707106781), VADD(Tl, Ti));
Chris@82 279 TY = VSUB(TW, TX);
Chris@82 280 }
Chris@82 281 {
Chris@82 282 V T3, TR, T6, TS;
Chris@82 283 {
Chris@82 284 V T1, T2, T4, T5;
Chris@82 285 T1 = LD(&(xi[WS(is, 15)]), ivs, &(xi[WS(is, 1)]));
Chris@82 286 T2 = LD(&(xi[WS(is, 7)]), ivs, &(xi[WS(is, 1)]));
Chris@82 287 T3 = VSUB(T1, T2);
Chris@82 288 TR = VADD(T1, T2);
Chris@82 289 T4 = LD(&(xi[WS(is, 3)]), ivs, &(xi[WS(is, 1)]));
Chris@82 290 T5 = LD(&(xi[WS(is, 11)]), ivs, &(xi[WS(is, 1)]));
Chris@82 291 T6 = VSUB(T4, T5);
Chris@82 292 TS = VADD(T4, T5);
Chris@82 293 }
Chris@82 294 T7 = VFNMS(LDK(KP923879532), T6, VMUL(LDK(KP382683432), T3));
Chris@82 295 T17 = VADD(TR, TS);
Chris@82 296 Ty = VFMA(LDK(KP923879532), T3, VMUL(LDK(KP382683432), T6));
Chris@82 297 TT = VSUB(TR, TS);
Chris@82 298 }
Chris@82 299 {
Chris@82 300 V Ta, TO, Td, TP;
Chris@82 301 {
Chris@82 302 V T8, T9, Tb, Tc;
Chris@82 303 T8 = LD(&(xi[WS(is, 1)]), ivs, &(xi[WS(is, 1)]));
Chris@82 304 T9 = LD(&(xi[WS(is, 9)]), ivs, &(xi[WS(is, 1)]));
Chris@82 305 Ta = VSUB(T8, T9);
Chris@82 306 TO = VADD(T8, T9);
Chris@82 307 Tb = LD(&(xi[WS(is, 5)]), ivs, &(xi[WS(is, 1)]));
Chris@82 308 Tc = LD(&(xi[WS(is, 13)]), ivs, &(xi[WS(is, 1)]));
Chris@82 309 Td = VSUB(Tb, Tc);
Chris@82 310 TP = VADD(Tb, Tc);
Chris@82 311 }
Chris@82 312 Te = VFMA(LDK(KP382683432), Ta, VMUL(LDK(KP923879532), Td));
Chris@82 313 T16 = VADD(TO, TP);
Chris@82 314 Tx = VFNMS(LDK(KP382683432), Td, VMUL(LDK(KP923879532), Ta));
Chris@82 315 TQ = VSUB(TO, TP);
Chris@82 316 }
Chris@82 317 {
Chris@82 318 V T1b, T1c, T1d, T1e;
Chris@82 319 {
Chris@82 320 V T15, T18, T19, T1a;
Chris@82 321 T15 = VADD(T13, T14);
Chris@82 322 T18 = VADD(T16, T17);
Chris@82 323 T1b = VSUB(T15, T18);
Chris@82 324 STM2(&(xo[16]), T1b, ovs, &(xo[0]));
Chris@82 325 T1c = VADD(T15, T18);
Chris@82 326 STM2(&(xo[0]), T1c, ovs, &(xo[0]));
Chris@82 327 T19 = VSUB(T13, T14);
Chris@82 328 T1a = VBYI(VSUB(T17, T16));
Chris@82 329 T1d = VSUB(T19, T1a);
Chris@82 330 STM2(&(xo[24]), T1d, ovs, &(xo[0]));
Chris@82 331 T1e = VADD(T19, T1a);
Chris@82 332 STM2(&(xo[8]), T1e, ovs, &(xo[0]));
Chris@82 333 }
Chris@82 334 {
Chris@82 335 V T1f, T1g, T1h, T1i;
Chris@82 336 {
Chris@82 337 V TV, T11, T10, T12, TU, TZ;
Chris@82 338 TU = VMUL(LDK(KP707106781), VADD(TQ, TT));
Chris@82 339 TV = VADD(TN, TU);
Chris@82 340 T11 = VSUB(TN, TU);
Chris@82 341 TZ = VMUL(LDK(KP707106781), VSUB(TT, TQ));
Chris@82 342 T10 = VBYI(VADD(TY, TZ));
Chris@82 343 T12 = VBYI(VSUB(TZ, TY));
Chris@82 344 T1f = VSUB(TV, T10);
Chris@82 345 STM2(&(xo[28]), T1f, ovs, &(xo[0]));
Chris@82 346 T1g = VADD(T11, T12);
Chris@82 347 STM2(&(xo[12]), T1g, ovs, &(xo[0]));
Chris@82 348 T1h = VADD(TV, T10);
Chris@82 349 STM2(&(xo[4]), T1h, ovs, &(xo[0]));
Chris@82 350 T1i = VSUB(T11, T12);
Chris@82 351 STM2(&(xo[20]), T1i, ovs, &(xo[0]));
Chris@82 352 }
Chris@82 353 {
Chris@82 354 V Tr, TB, TA, TC;
Chris@82 355 {
Chris@82 356 V Tf, Tq, Tw, Tz;
Chris@82 357 Tf = VSUB(T7, Te);
Chris@82 358 Tq = VSUB(Tm, Tp);
Chris@82 359 Tr = VBYI(VSUB(Tf, Tq));
Chris@82 360 TB = VBYI(VADD(Tq, Tf));
Chris@82 361 Tw = VADD(Tu, Tv);
Chris@82 362 Tz = VADD(Tx, Ty);
Chris@82 363 TA = VSUB(Tw, Tz);
Chris@82 364 TC = VADD(Tw, Tz);
Chris@82 365 }
Chris@82 366 {
Chris@82 367 V T1j, T1k, T1l, T1m;
Chris@82 368 T1j = VADD(Tr, TA);
Chris@82 369 STM2(&(xo[14]), T1j, ovs, &(xo[2]));
Chris@82 370 STN2(&(xo[12]), T1g, T1j, ovs);
Chris@82 371 T1k = VSUB(TC, TB);
Chris@82 372 STM2(&(xo[30]), T1k, ovs, &(xo[2]));
Chris@82 373 STN2(&(xo[28]), T1f, T1k, ovs);
Chris@82 374 T1l = VSUB(TA, Tr);
Chris@82 375 STM2(&(xo[18]), T1l, ovs, &(xo[2]));
Chris@82 376 STN2(&(xo[16]), T1b, T1l, ovs);
Chris@82 377 T1m = VADD(TB, TC);
Chris@82 378 STM2(&(xo[2]), T1m, ovs, &(xo[2]));
Chris@82 379 STN2(&(xo[0]), T1c, T1m, ovs);
Chris@82 380 }
Chris@82 381 }
Chris@82 382 {
Chris@82 383 V TF, TJ, TI, TK;
Chris@82 384 {
Chris@82 385 V TD, TE, TG, TH;
Chris@82 386 TD = VSUB(Tu, Tv);
Chris@82 387 TE = VADD(Te, T7);
Chris@82 388 TF = VADD(TD, TE);
Chris@82 389 TJ = VSUB(TD, TE);
Chris@82 390 TG = VADD(Tp, Tm);
Chris@82 391 TH = VSUB(Ty, Tx);
Chris@82 392 TI = VBYI(VADD(TG, TH));
Chris@82 393 TK = VBYI(VSUB(TH, TG));
Chris@82 394 }
Chris@82 395 {
Chris@82 396 V T1n, T1o, T1p, T1q;
Chris@82 397 T1n = VSUB(TF, TI);
Chris@82 398 STM2(&(xo[26]), T1n, ovs, &(xo[2]));
Chris@82 399 STN2(&(xo[24]), T1d, T1n, ovs);
Chris@82 400 T1o = VADD(TJ, TK);
Chris@82 401 STM2(&(xo[10]), T1o, ovs, &(xo[2]));
Chris@82 402 STN2(&(xo[8]), T1e, T1o, ovs);
Chris@82 403 T1p = VADD(TF, TI);
Chris@82 404 STM2(&(xo[6]), T1p, ovs, &(xo[2]));
Chris@82 405 STN2(&(xo[4]), T1h, T1p, ovs);
Chris@82 406 T1q = VSUB(TJ, TK);
Chris@82 407 STM2(&(xo[22]), T1q, ovs, &(xo[2]));
Chris@82 408 STN2(&(xo[20]), T1i, T1q, ovs);
Chris@82 409 }
Chris@82 410 }
Chris@82 411 }
Chris@82 412 }
Chris@82 413 }
Chris@82 414 }
Chris@82 415 VLEAVE();
Chris@82 416 }
Chris@82 417
Chris@82 418 static const kdft_desc desc = { 16, XSIMD_STRING("n2fv_16"), {68, 8, 4, 0}, &GENUS, 0, 2, 0, 0 };
Chris@82 419
Chris@82 420 void XSIMD(codelet_n2fv_16) (planner *p) {
Chris@82 421 X(kdft_register) (p, n2fv_16, &desc);
Chris@82 422 }
Chris@82 423
Chris@82 424 #endif