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