annotate src/fftw-3.3.5/rdft/scalar/r2cf/hc2cfdft2_8.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 2cd0e3b3e1fd
children
rev   line source
Chris@42 1 /*
Chris@42 2 * Copyright (c) 2003, 2007-14 Matteo Frigo
Chris@42 3 * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
Chris@42 4 *
Chris@42 5 * This program is free software; you can redistribute it and/or modify
Chris@42 6 * it under the terms of the GNU General Public License as published by
Chris@42 7 * the Free Software Foundation; either version 2 of the License, or
Chris@42 8 * (at your option) any later version.
Chris@42 9 *
Chris@42 10 * This program is distributed in the hope that it will be useful,
Chris@42 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@42 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@42 13 * GNU General Public License for more details.
Chris@42 14 *
Chris@42 15 * You should have received a copy of the GNU General Public License
Chris@42 16 * along with this program; if not, write to the Free Software
Chris@42 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Chris@42 18 *
Chris@42 19 */
Chris@42 20
Chris@42 21 /* This file was automatically generated --- DO NOT EDIT */
Chris@42 22 /* Generated on Sat Jul 30 16:48:57 EDT 2016 */
Chris@42 23
Chris@42 24 #include "codelet-rdft.h"
Chris@42 25
Chris@42 26 #ifdef HAVE_FMA
Chris@42 27
Chris@42 28 /* Generated by: ../../../genfft/gen_hc2cdft.native -fma -reorder-insns -schedule-for-pipeline -compact -variables 4 -pipeline-latency 4 -twiddle-log3 -precompute-twiddles -n 8 -dit -name hc2cfdft2_8 -include hc2cf.h */
Chris@42 29
Chris@42 30 /*
Chris@42 31 * This function contains 90 FP additions, 66 FP multiplications,
Chris@42 32 * (or, 60 additions, 36 multiplications, 30 fused multiply/add),
Chris@42 33 * 68 stack variables, 2 constants, and 32 memory accesses
Chris@42 34 */
Chris@42 35 #include "hc2cf.h"
Chris@42 36
Chris@42 37 static void hc2cfdft2_8(R *Rp, R *Ip, R *Rm, R *Im, const R *W, stride rs, INT mb, INT me, INT ms)
Chris@42 38 {
Chris@42 39 DK(KP707106781, +0.707106781186547524400844362104849039284835938);
Chris@42 40 DK(KP500000000, +0.500000000000000000000000000000000000000000000);
Chris@42 41 {
Chris@42 42 INT m;
Chris@42 43 for (m = mb, W = W + ((mb - 1) * 6); m < me; m = m + 1, Rp = Rp + ms, Ip = Ip + ms, Rm = Rm - ms, Im = Im - ms, W = W + 6, MAKE_VOLATILE_STRIDE(32, rs)) {
Chris@42 44 E T1G, T1F, T1C, T1D, T1N, T1B, T1R, T1L;
Chris@42 45 {
Chris@42 46 E T1, T2, Th, Tj, T4, T3, Ti, Tp, T5;
Chris@42 47 T1 = W[0];
Chris@42 48 T2 = W[2];
Chris@42 49 Th = W[4];
Chris@42 50 Tj = W[5];
Chris@42 51 T4 = W[1];
Chris@42 52 T3 = T1 * T2;
Chris@42 53 Ti = T1 * Th;
Chris@42 54 Tp = T1 * Tj;
Chris@42 55 T5 = W[3];
Chris@42 56 {
Chris@42 57 E Tk, Tq, TI, T1a, T1u, TY, TF, TS, T1s, T1c, Tr, T1n, Tg, T16, Tn;
Chris@42 58 E T13, T1f, Ts, To, T1o;
Chris@42 59 {
Chris@42 60 E T6, Tw, Tc, TB, TQ, TM, TC, TR, Tz, TD, TA;
Chris@42 61 {
Chris@42 62 E TX, TV, TT, TU;
Chris@42 63 {
Chris@42 64 E TG, Tb, TH, TP, TL;
Chris@42 65 TG = Ip[0];
Chris@42 66 Tk = FMA(T4, Tj, Ti);
Chris@42 67 Tq = FNMS(T4, Th, Tp);
Chris@42 68 T6 = FMA(T4, T5, T3);
Chris@42 69 Tw = FNMS(T4, T5, T3);
Chris@42 70 Tb = T1 * T5;
Chris@42 71 TH = Im[0];
Chris@42 72 TT = Rm[0];
Chris@42 73 TP = T6 * Tj;
Chris@42 74 TL = T6 * Th;
Chris@42 75 Tc = FNMS(T4, T2, Tb);
Chris@42 76 TB = FMA(T4, T2, Tb);
Chris@42 77 TX = TG + TH;
Chris@42 78 TI = TG - TH;
Chris@42 79 TU = Rp[0];
Chris@42 80 TQ = FNMS(Tc, Th, TP);
Chris@42 81 TM = FMA(Tc, Tj, TL);
Chris@42 82 }
Chris@42 83 T1a = TU + TT;
Chris@42 84 TV = TT - TU;
Chris@42 85 {
Chris@42 86 E Tx, Ty, T1t, TW;
Chris@42 87 Tx = Ip[WS(rs, 2)];
Chris@42 88 Ty = Im[WS(rs, 2)];
Chris@42 89 T1t = T4 * TV;
Chris@42 90 TW = T1 * TV;
Chris@42 91 TC = Rp[WS(rs, 2)];
Chris@42 92 TR = Tx + Ty;
Chris@42 93 Tz = Tx - Ty;
Chris@42 94 T1u = FMA(T1, TX, T1t);
Chris@42 95 TY = FNMS(T4, TX, TW);
Chris@42 96 TD = Rm[WS(rs, 2)];
Chris@42 97 }
Chris@42 98 TA = Tw * Tz;
Chris@42 99 }
Chris@42 100 {
Chris@42 101 E Td, T9, T12, Te, Ta, T1m;
Chris@42 102 {
Chris@42 103 E T7, T8, TN, TE, TO, T1r, T1b;
Chris@42 104 T7 = Ip[WS(rs, 1)];
Chris@42 105 T8 = Im[WS(rs, 1)];
Chris@42 106 TN = TD - TC;
Chris@42 107 TE = TC + TD;
Chris@42 108 Td = Rp[WS(rs, 1)];
Chris@42 109 T9 = T7 - T8;
Chris@42 110 T12 = T7 + T8;
Chris@42 111 TO = TM * TN;
Chris@42 112 T1r = TQ * TN;
Chris@42 113 T1b = Tw * TE;
Chris@42 114 TF = FNMS(TB, TE, TA);
Chris@42 115 TS = FNMS(TQ, TR, TO);
Chris@42 116 T1s = FMA(TM, TR, T1r);
Chris@42 117 T1c = FMA(TB, Tz, T1b);
Chris@42 118 Te = Rm[WS(rs, 1)];
Chris@42 119 }
Chris@42 120 Ta = T6 * T9;
Chris@42 121 T1m = T2 * T12;
Chris@42 122 {
Chris@42 123 E Tl, T10, Tf, Tm, T11, T1e;
Chris@42 124 Tl = Ip[WS(rs, 3)];
Chris@42 125 T10 = Td - Te;
Chris@42 126 Tf = Td + Te;
Chris@42 127 Tm = Im[WS(rs, 3)];
Chris@42 128 Tr = Rp[WS(rs, 3)];
Chris@42 129 T11 = T2 * T10;
Chris@42 130 T1n = FNMS(T5, T10, T1m);
Chris@42 131 T1e = T6 * Tf;
Chris@42 132 Tg = FNMS(Tc, Tf, Ta);
Chris@42 133 T16 = Tl + Tm;
Chris@42 134 Tn = Tl - Tm;
Chris@42 135 T13 = FMA(T5, T12, T11);
Chris@42 136 T1f = FMA(Tc, T9, T1e);
Chris@42 137 Ts = Rm[WS(rs, 3)];
Chris@42 138 }
Chris@42 139 To = Tk * Tn;
Chris@42 140 T1o = Th * T16;
Chris@42 141 }
Chris@42 142 }
Chris@42 143 {
Chris@42 144 E T1z, T1K, T1y, T1k, T1J, T1A, T1x, T1j;
Chris@42 145 {
Chris@42 146 E T1w, TK, T1l, T19, T1d, T1i;
Chris@42 147 {
Chris@42 148 E TJ, T14, Tt, T1v, T1h;
Chris@42 149 T1z = TI - TF;
Chris@42 150 TJ = TF + TI;
Chris@42 151 T14 = Tr - Ts;
Chris@42 152 Tt = Tr + Ts;
Chris@42 153 T1v = T1s + T1u;
Chris@42 154 T1G = T1u - T1s;
Chris@42 155 {
Chris@42 156 E TZ, T1q, Tv, T18, T15;
Chris@42 157 T1F = TY - TS;
Chris@42 158 TZ = TS + TY;
Chris@42 159 T15 = Th * T14;
Chris@42 160 {
Chris@42 161 E T1p, T1g, Tu, T17;
Chris@42 162 T1p = FNMS(Tj, T14, T1o);
Chris@42 163 T1g = Tk * Tt;
Chris@42 164 Tu = FNMS(Tq, Tt, To);
Chris@42 165 T17 = FMA(Tj, T16, T15);
Chris@42 166 T1C = T1p - T1n;
Chris@42 167 T1q = T1n + T1p;
Chris@42 168 T1h = FMA(Tq, Tn, T1g);
Chris@42 169 T1K = Tg - Tu;
Chris@42 170 Tv = Tg + Tu;
Chris@42 171 T18 = T13 + T17;
Chris@42 172 T1D = T13 - T17;
Chris@42 173 }
Chris@42 174 T1w = T1q - T1v;
Chris@42 175 T1y = T1q + T1v;
Chris@42 176 TK = Tv + TJ;
Chris@42 177 T1l = TJ - Tv;
Chris@42 178 T1k = T18 + TZ;
Chris@42 179 T19 = TZ - T18;
Chris@42 180 }
Chris@42 181 T1J = T1a - T1c;
Chris@42 182 T1d = T1a + T1c;
Chris@42 183 T1i = T1f + T1h;
Chris@42 184 T1A = T1f - T1h;
Chris@42 185 }
Chris@42 186 Ip[0] = KP500000000 * (TK + T19);
Chris@42 187 Im[WS(rs, 3)] = KP500000000 * (T19 - TK);
Chris@42 188 Im[WS(rs, 1)] = KP500000000 * (T1w - T1l);
Chris@42 189 T1x = T1d + T1i;
Chris@42 190 T1j = T1d - T1i;
Chris@42 191 Ip[WS(rs, 2)] = KP500000000 * (T1l + T1w);
Chris@42 192 }
Chris@42 193 Rm[WS(rs, 3)] = KP500000000 * (T1x - T1y);
Chris@42 194 Rp[0] = KP500000000 * (T1x + T1y);
Chris@42 195 Rp[WS(rs, 2)] = KP500000000 * (T1j + T1k);
Chris@42 196 Rm[WS(rs, 1)] = KP500000000 * (T1j - T1k);
Chris@42 197 T1N = T1A + T1z;
Chris@42 198 T1B = T1z - T1A;
Chris@42 199 T1R = T1J + T1K;
Chris@42 200 T1L = T1J - T1K;
Chris@42 201 }
Chris@42 202 }
Chris@42 203 }
Chris@42 204 {
Chris@42 205 E T1E, T1O, T1H, T1P;
Chris@42 206 T1E = T1C + T1D;
Chris@42 207 T1O = T1C - T1D;
Chris@42 208 T1H = T1F - T1G;
Chris@42 209 T1P = T1F + T1G;
Chris@42 210 {
Chris@42 211 E T1S, T1Q, T1I, T1M;
Chris@42 212 T1S = T1O + T1P;
Chris@42 213 T1Q = T1O - T1P;
Chris@42 214 T1I = T1E + T1H;
Chris@42 215 T1M = T1H - T1E;
Chris@42 216 Im[0] = -(KP500000000 * (FNMS(KP707106781, T1Q, T1N)));
Chris@42 217 Ip[WS(rs, 3)] = KP500000000 * (FMA(KP707106781, T1Q, T1N));
Chris@42 218 Rp[WS(rs, 1)] = KP500000000 * (FMA(KP707106781, T1S, T1R));
Chris@42 219 Rm[WS(rs, 2)] = KP500000000 * (FNMS(KP707106781, T1S, T1R));
Chris@42 220 Rp[WS(rs, 3)] = KP500000000 * (FMA(KP707106781, T1M, T1L));
Chris@42 221 Rm[0] = KP500000000 * (FNMS(KP707106781, T1M, T1L));
Chris@42 222 Im[WS(rs, 2)] = -(KP500000000 * (FNMS(KP707106781, T1I, T1B)));
Chris@42 223 Ip[WS(rs, 1)] = KP500000000 * (FMA(KP707106781, T1I, T1B));
Chris@42 224 }
Chris@42 225 }
Chris@42 226 }
Chris@42 227 }
Chris@42 228 }
Chris@42 229
Chris@42 230 static const tw_instr twinstr[] = {
Chris@42 231 {TW_CEXP, 1, 1},
Chris@42 232 {TW_CEXP, 1, 3},
Chris@42 233 {TW_CEXP, 1, 7},
Chris@42 234 {TW_NEXT, 1, 0}
Chris@42 235 };
Chris@42 236
Chris@42 237 static const hc2c_desc desc = { 8, "hc2cfdft2_8", twinstr, &GENUS, {60, 36, 30, 0} };
Chris@42 238
Chris@42 239 void X(codelet_hc2cfdft2_8) (planner *p) {
Chris@42 240 X(khc2c_register) (p, hc2cfdft2_8, &desc, HC2C_VIA_DFT);
Chris@42 241 }
Chris@42 242 #else /* HAVE_FMA */
Chris@42 243
Chris@42 244 /* Generated by: ../../../genfft/gen_hc2cdft.native -compact -variables 4 -pipeline-latency 4 -twiddle-log3 -precompute-twiddles -n 8 -dit -name hc2cfdft2_8 -include hc2cf.h */
Chris@42 245
Chris@42 246 /*
Chris@42 247 * This function contains 90 FP additions, 56 FP multiplications,
Chris@42 248 * (or, 72 additions, 38 multiplications, 18 fused multiply/add),
Chris@42 249 * 51 stack variables, 2 constants, and 32 memory accesses
Chris@42 250 */
Chris@42 251 #include "hc2cf.h"
Chris@42 252
Chris@42 253 static void hc2cfdft2_8(R *Rp, R *Ip, R *Rm, R *Im, const R *W, stride rs, INT mb, INT me, INT ms)
Chris@42 254 {
Chris@42 255 DK(KP353553390, +0.353553390593273762200422181052424519642417969);
Chris@42 256 DK(KP500000000, +0.500000000000000000000000000000000000000000000);
Chris@42 257 {
Chris@42 258 INT m;
Chris@42 259 for (m = mb, W = W + ((mb - 1) * 6); m < me; m = m + 1, Rp = Rp + ms, Ip = Ip + ms, Rm = Rm - ms, Im = Im - ms, W = W + 6, MAKE_VOLATILE_STRIDE(32, rs)) {
Chris@42 260 E T1, T4, T2, T5, Tu, Ty, T7, Td, Ti, Tj, Tk, TP, To, TN;
Chris@42 261 {
Chris@42 262 E T3, Tc, T6, Tb;
Chris@42 263 T1 = W[0];
Chris@42 264 T4 = W[1];
Chris@42 265 T2 = W[2];
Chris@42 266 T5 = W[3];
Chris@42 267 T3 = T1 * T2;
Chris@42 268 Tc = T4 * T2;
Chris@42 269 T6 = T4 * T5;
Chris@42 270 Tb = T1 * T5;
Chris@42 271 Tu = T3 - T6;
Chris@42 272 Ty = Tb + Tc;
Chris@42 273 T7 = T3 + T6;
Chris@42 274 Td = Tb - Tc;
Chris@42 275 Ti = W[4];
Chris@42 276 Tj = W[5];
Chris@42 277 Tk = FMA(T1, Ti, T4 * Tj);
Chris@42 278 TP = FNMS(Td, Ti, T7 * Tj);
Chris@42 279 To = FNMS(T4, Ti, T1 * Tj);
Chris@42 280 TN = FMA(T7, Ti, Td * Tj);
Chris@42 281 }
Chris@42 282 {
Chris@42 283 E TF, T11, TC, T12, T1d, T1e, T1q, TM, TR, T1p, Th, Ts, T15, T14, T1a;
Chris@42 284 E T1b, T1m, TV, TY, T1n;
Chris@42 285 {
Chris@42 286 E TD, TE, TL, TI, TJ, TK, Tx, TQ, TB, TO;
Chris@42 287 TD = Ip[0];
Chris@42 288 TE = Im[0];
Chris@42 289 TL = TD + TE;
Chris@42 290 TI = Rm[0];
Chris@42 291 TJ = Rp[0];
Chris@42 292 TK = TI - TJ;
Chris@42 293 {
Chris@42 294 E Tv, Tw, Tz, TA;
Chris@42 295 Tv = Ip[WS(rs, 2)];
Chris@42 296 Tw = Im[WS(rs, 2)];
Chris@42 297 Tx = Tv - Tw;
Chris@42 298 TQ = Tv + Tw;
Chris@42 299 Tz = Rp[WS(rs, 2)];
Chris@42 300 TA = Rm[WS(rs, 2)];
Chris@42 301 TB = Tz + TA;
Chris@42 302 TO = Tz - TA;
Chris@42 303 }
Chris@42 304 TF = TD - TE;
Chris@42 305 T11 = TJ + TI;
Chris@42 306 TC = FNMS(Ty, TB, Tu * Tx);
Chris@42 307 T12 = FMA(Tu, TB, Ty * Tx);
Chris@42 308 T1d = FNMS(TP, TO, TN * TQ);
Chris@42 309 T1e = FMA(T4, TK, T1 * TL);
Chris@42 310 T1q = T1e - T1d;
Chris@42 311 TM = FNMS(T4, TL, T1 * TK);
Chris@42 312 TR = FMA(TN, TO, TP * TQ);
Chris@42 313 T1p = TR + TM;
Chris@42 314 }
Chris@42 315 {
Chris@42 316 E Ta, TU, Tg, TT, Tn, TX, Tr, TW;
Chris@42 317 {
Chris@42 318 E T8, T9, Te, Tf;
Chris@42 319 T8 = Ip[WS(rs, 1)];
Chris@42 320 T9 = Im[WS(rs, 1)];
Chris@42 321 Ta = T8 - T9;
Chris@42 322 TU = T8 + T9;
Chris@42 323 Te = Rp[WS(rs, 1)];
Chris@42 324 Tf = Rm[WS(rs, 1)];
Chris@42 325 Tg = Te + Tf;
Chris@42 326 TT = Te - Tf;
Chris@42 327 }
Chris@42 328 {
Chris@42 329 E Tl, Tm, Tp, Tq;
Chris@42 330 Tl = Ip[WS(rs, 3)];
Chris@42 331 Tm = Im[WS(rs, 3)];
Chris@42 332 Tn = Tl - Tm;
Chris@42 333 TX = Tl + Tm;
Chris@42 334 Tp = Rp[WS(rs, 3)];
Chris@42 335 Tq = Rm[WS(rs, 3)];
Chris@42 336 Tr = Tp + Tq;
Chris@42 337 TW = Tp - Tq;
Chris@42 338 }
Chris@42 339 Th = FNMS(Td, Tg, T7 * Ta);
Chris@42 340 Ts = FNMS(To, Tr, Tk * Tn);
Chris@42 341 T15 = FMA(Tk, Tr, To * Tn);
Chris@42 342 T14 = FMA(T7, Tg, Td * Ta);
Chris@42 343 T1a = FNMS(T5, TT, T2 * TU);
Chris@42 344 T1b = FNMS(Tj, TW, Ti * TX);
Chris@42 345 T1m = T1b - T1a;
Chris@42 346 TV = FMA(T2, TT, T5 * TU);
Chris@42 347 TY = FMA(Ti, TW, Tj * TX);
Chris@42 348 T1n = TV - TY;
Chris@42 349 }
Chris@42 350 {
Chris@42 351 E T1l, T1x, T1A, T1C, T1s, T1w, T1v, T1B;
Chris@42 352 {
Chris@42 353 E T1j, T1k, T1y, T1z;
Chris@42 354 T1j = TF - TC;
Chris@42 355 T1k = T14 - T15;
Chris@42 356 T1l = KP500000000 * (T1j - T1k);
Chris@42 357 T1x = KP500000000 * (T1k + T1j);
Chris@42 358 T1y = T1m - T1n;
Chris@42 359 T1z = T1p + T1q;
Chris@42 360 T1A = KP353553390 * (T1y - T1z);
Chris@42 361 T1C = KP353553390 * (T1y + T1z);
Chris@42 362 }
Chris@42 363 {
Chris@42 364 E T1o, T1r, T1t, T1u;
Chris@42 365 T1o = T1m + T1n;
Chris@42 366 T1r = T1p - T1q;
Chris@42 367 T1s = KP353553390 * (T1o + T1r);
Chris@42 368 T1w = KP353553390 * (T1r - T1o);
Chris@42 369 T1t = T11 - T12;
Chris@42 370 T1u = Th - Ts;
Chris@42 371 T1v = KP500000000 * (T1t - T1u);
Chris@42 372 T1B = KP500000000 * (T1t + T1u);
Chris@42 373 }
Chris@42 374 Ip[WS(rs, 1)] = T1l + T1s;
Chris@42 375 Rp[WS(rs, 1)] = T1B + T1C;
Chris@42 376 Im[WS(rs, 2)] = T1s - T1l;
Chris@42 377 Rm[WS(rs, 2)] = T1B - T1C;
Chris@42 378 Rm[0] = T1v - T1w;
Chris@42 379 Im[0] = T1A - T1x;
Chris@42 380 Rp[WS(rs, 3)] = T1v + T1w;
Chris@42 381 Ip[WS(rs, 3)] = T1x + T1A;
Chris@42 382 }
Chris@42 383 {
Chris@42 384 E TH, T19, T1g, T1i, T10, T18, T17, T1h;
Chris@42 385 {
Chris@42 386 E Tt, TG, T1c, T1f;
Chris@42 387 Tt = Th + Ts;
Chris@42 388 TG = TC + TF;
Chris@42 389 TH = Tt + TG;
Chris@42 390 T19 = TG - Tt;
Chris@42 391 T1c = T1a + T1b;
Chris@42 392 T1f = T1d + T1e;
Chris@42 393 T1g = T1c - T1f;
Chris@42 394 T1i = T1c + T1f;
Chris@42 395 }
Chris@42 396 {
Chris@42 397 E TS, TZ, T13, T16;
Chris@42 398 TS = TM - TR;
Chris@42 399 TZ = TV + TY;
Chris@42 400 T10 = TS - TZ;
Chris@42 401 T18 = TZ + TS;
Chris@42 402 T13 = T11 + T12;
Chris@42 403 T16 = T14 + T15;
Chris@42 404 T17 = T13 - T16;
Chris@42 405 T1h = T13 + T16;
Chris@42 406 }
Chris@42 407 Ip[0] = KP500000000 * (TH + T10);
Chris@42 408 Rp[0] = KP500000000 * (T1h + T1i);
Chris@42 409 Im[WS(rs, 3)] = KP500000000 * (T10 - TH);
Chris@42 410 Rm[WS(rs, 3)] = KP500000000 * (T1h - T1i);
Chris@42 411 Rm[WS(rs, 1)] = KP500000000 * (T17 - T18);
Chris@42 412 Im[WS(rs, 1)] = KP500000000 * (T1g - T19);
Chris@42 413 Rp[WS(rs, 2)] = KP500000000 * (T17 + T18);
Chris@42 414 Ip[WS(rs, 2)] = KP500000000 * (T19 + T1g);
Chris@42 415 }
Chris@42 416 }
Chris@42 417 }
Chris@42 418 }
Chris@42 419 }
Chris@42 420
Chris@42 421 static const tw_instr twinstr[] = {
Chris@42 422 {TW_CEXP, 1, 1},
Chris@42 423 {TW_CEXP, 1, 3},
Chris@42 424 {TW_CEXP, 1, 7},
Chris@42 425 {TW_NEXT, 1, 0}
Chris@42 426 };
Chris@42 427
Chris@42 428 static const hc2c_desc desc = { 8, "hc2cfdft2_8", twinstr, &GENUS, {72, 38, 18, 0} };
Chris@42 429
Chris@42 430 void X(codelet_hc2cfdft2_8) (planner *p) {
Chris@42 431 X(khc2c_register) (p, hc2cfdft2_8, &desc, HC2C_VIA_DFT);
Chris@42 432 }
Chris@42 433 #endif /* HAVE_FMA */