annotate src/fftw-3.3.8/rdft/simd/common/hc2cbdftv_12.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:08:11 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_c.native -fma -simd -compact -variables 4 -pipeline-latency 8 -trivial-stores -variables 32 -no-generate-bytw -n 12 -dif -sign 1 -name hc2cbdftv_12 -include rdft/simd/hc2cbv.h */
Chris@82 29
Chris@82 30 /*
Chris@82 31 * This function contains 71 FP additions, 51 FP multiplications,
Chris@82 32 * (or, 45 additions, 25 multiplications, 26 fused multiply/add),
Chris@82 33 * 56 stack variables, 2 constants, and 24 memory accesses
Chris@82 34 */
Chris@82 35 #include "rdft/simd/hc2cbv.h"
Chris@82 36
Chris@82 37 static void hc2cbdftv_12(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 DVK(KP866025403, +0.866025403784438646763723170752936183471402627);
Chris@82 40 DVK(KP500000000, +0.500000000000000000000000000000000000000000000);
Chris@82 41 {
Chris@82 42 INT m;
Chris@82 43 for (m = mb, W = W + ((mb - 1) * ((TWVL / VL) * 22)); m < me; m = m + VL, Rp = Rp + (VL * ms), Ip = Ip + (VL * ms), Rm = Rm - (VL * ms), Im = Im - (VL * ms), W = W + (TWVL * 22), MAKE_VOLATILE_STRIDE(48, rs)) {
Chris@82 44 V Tk, Tw, Td, TA, T11, T1f, TF, TP, Tt, TB, TY, T1e;
Chris@82 45 {
Chris@82 46 V T2, Tm, T7, T8, Tp, Tq, T5, Tu, Tg, Tr, Tj, Tn, Tb, Tv, T3;
Chris@82 47 V T4, Te, Tf, Th, Ti, T9, Ta, T6, Tc, TZ, T10, TD, TE, To, Ts;
Chris@82 48 V TW, TX;
Chris@82 49 T2 = LD(&(Rp[0]), ms, &(Rp[0]));
Chris@82 50 Tm = LD(&(Rp[WS(rs, 3)]), ms, &(Rp[WS(rs, 1)]));
Chris@82 51 T7 = LD(&(Rm[WS(rs, 5)]), -ms, &(Rm[WS(rs, 1)]));
Chris@82 52 T8 = VCONJ(T7);
Chris@82 53 Tp = LD(&(Rm[WS(rs, 2)]), -ms, &(Rm[0]));
Chris@82 54 Tq = VCONJ(Tp);
Chris@82 55 T3 = LD(&(Rp[WS(rs, 4)]), ms, &(Rp[0]));
Chris@82 56 T4 = LD(&(Rm[WS(rs, 3)]), -ms, &(Rm[WS(rs, 1)]));
Chris@82 57 T5 = VFMACONJ(T4, T3);
Chris@82 58 Tu = VFNMSCONJ(T4, T3);
Chris@82 59 Te = LD(&(Rp[WS(rs, 1)]), ms, &(Rp[WS(rs, 1)]));
Chris@82 60 Tf = LD(&(Rp[WS(rs, 5)]), ms, &(Rp[WS(rs, 1)]));
Chris@82 61 Tg = VSUB(Te, Tf);
Chris@82 62 Tr = VADD(Te, Tf);
Chris@82 63 Th = LD(&(Rm[0]), -ms, &(Rm[0]));
Chris@82 64 Ti = LD(&(Rm[WS(rs, 4)]), -ms, &(Rm[0]));
Chris@82 65 Tj = VSUB(Th, Ti);
Chris@82 66 Tn = VADD(Ti, Th);
Chris@82 67 T9 = LD(&(Rp[WS(rs, 2)]), ms, &(Rp[0]));
Chris@82 68 Ta = LD(&(Rm[WS(rs, 1)]), -ms, &(Rm[WS(rs, 1)]));
Chris@82 69 Tb = VFMACONJ(Ta, T9);
Chris@82 70 Tv = VFMSCONJ(Ta, T9);
Chris@82 71 Tk = VFMACONJ(Tj, Tg);
Chris@82 72 Tw = VSUB(Tu, Tv);
Chris@82 73 T6 = VFNMS(LDK(KP500000000), T5, T2);
Chris@82 74 Tc = VFNMS(LDK(KP500000000), Tb, T8);
Chris@82 75 Td = VSUB(T6, Tc);
Chris@82 76 TA = VADD(T6, Tc);
Chris@82 77 TZ = VFMACONJ(Tn, Tm);
Chris@82 78 T10 = VFMACONJ(Tp, Tr);
Chris@82 79 T11 = VSUB(TZ, T10);
Chris@82 80 T1f = VADD(TZ, T10);
Chris@82 81 TD = VFNMSCONJ(Tj, Tg);
Chris@82 82 TE = VADD(Tu, Tv);
Chris@82 83 TF = VMUL(LDK(KP866025403), VSUB(TD, TE));
Chris@82 84 TP = VMUL(LDK(KP866025403), VADD(TE, TD));
Chris@82 85 To = VFNMS(LDK(KP500000000), VCONJ(Tn), Tm);
Chris@82 86 Ts = VFNMS(LDK(KP500000000), Tr, Tq);
Chris@82 87 Tt = VSUB(To, Ts);
Chris@82 88 TB = VADD(To, Ts);
Chris@82 89 TW = VADD(T2, T5);
Chris@82 90 TX = VFMACONJ(T7, Tb);
Chris@82 91 TY = VSUB(TW, TX);
Chris@82 92 T1e = VADD(TW, TX);
Chris@82 93 }
Chris@82 94 {
Chris@82 95 V T1l, T12, TG, TU, Ty, T1k, TV, TC, Tz, TT, Tl, Tx, T1, T1j, TH;
Chris@82 96 V TI, T1n, T1m, T14, T13, T18, T1g, TQ, T16, TM, T1c, T17, T1d, TO, TN;
Chris@82 97 V T15, TK, TL, TJ, T1b, TR, TS, T1i, T1h, T1a, T19;
Chris@82 98 T1l = VADD(T1e, T1f);
Chris@82 99 TV = LDW(&(W[TWVL * 4]));
Chris@82 100 T12 = VZMULI(TV, VFNMSI(T11, TY));
Chris@82 101 TC = VSUB(TA, TB);
Chris@82 102 Tz = LDW(&(W[TWVL * 18]));
Chris@82 103 TG = VZMUL(Tz, VFNMSI(TF, TC));
Chris@82 104 TT = LDW(&(W[TWVL * 2]));
Chris@82 105 TU = VZMUL(TT, VFMAI(TF, TC));
Chris@82 106 Tl = VFMA(LDK(KP866025403), Tk, Td);
Chris@82 107 Tx = VFMA(LDK(KP866025403), Tw, Tt);
Chris@82 108 T1 = LDW(&(W[TWVL * 20]));
Chris@82 109 Ty = VZMULI(T1, VFNMSI(Tx, Tl));
Chris@82 110 T1j = LDW(&(W[0]));
Chris@82 111 T1k = VZMULI(T1j, VFMAI(Tx, Tl));
Chris@82 112 TH = VADD(Ty, TG);
Chris@82 113 ST(&(Rp[WS(rs, 5)]), TH, ms, &(Rp[WS(rs, 1)]));
Chris@82 114 TI = VCONJ(VSUB(TG, Ty));
Chris@82 115 ST(&(Rm[WS(rs, 5)]), TI, -ms, &(Rm[WS(rs, 1)]));
Chris@82 116 T1n = VCONJ(VSUB(T1l, T1k));
Chris@82 117 ST(&(Rm[0]), T1n, -ms, &(Rm[0]));
Chris@82 118 T1m = VADD(T1k, T1l);
Chris@82 119 ST(&(Rp[0]), T1m, ms, &(Rp[0]));
Chris@82 120 T14 = VADD(TU, T12);
Chris@82 121 ST(&(Rp[WS(rs, 1)]), T14, ms, &(Rp[WS(rs, 1)]));
Chris@82 122 T13 = VCONJ(VSUB(TU, T12));
Chris@82 123 ST(&(Rm[WS(rs, 1)]), T13, -ms, &(Rm[WS(rs, 1)]));
Chris@82 124 T17 = LDW(&(W[TWVL * 16]));
Chris@82 125 T18 = VZMULI(T17, VFMAI(T11, TY));
Chris@82 126 T1d = LDW(&(W[TWVL * 10]));
Chris@82 127 T1g = VZMUL(T1d, VSUB(T1e, T1f));
Chris@82 128 TO = VADD(TA, TB);
Chris@82 129 TN = LDW(&(W[TWVL * 6]));
Chris@82 130 TQ = VZMUL(TN, VFMAI(TP, TO));
Chris@82 131 T15 = LDW(&(W[TWVL * 14]));
Chris@82 132 T16 = VZMUL(T15, VFNMSI(TP, TO));
Chris@82 133 TK = VFNMS(LDK(KP866025403), Tk, Td);
Chris@82 134 TL = VFNMS(LDK(KP866025403), Tw, Tt);
Chris@82 135 TJ = LDW(&(W[TWVL * 8]));
Chris@82 136 TM = VZMULI(TJ, VFMAI(TL, TK));
Chris@82 137 T1b = LDW(&(W[TWVL * 12]));
Chris@82 138 T1c = VZMULI(T1b, VFNMSI(TL, TK));
Chris@82 139 TR = VADD(TM, TQ);
Chris@82 140 ST(&(Rp[WS(rs, 2)]), TR, ms, &(Rp[0]));
Chris@82 141 TS = VCONJ(VSUB(TQ, TM));
Chris@82 142 ST(&(Rm[WS(rs, 2)]), TS, -ms, &(Rm[0]));
Chris@82 143 T1i = VCONJ(VSUB(T1g, T1c));
Chris@82 144 ST(&(Rm[WS(rs, 3)]), T1i, -ms, &(Rm[WS(rs, 1)]));
Chris@82 145 T1h = VADD(T1c, T1g);
Chris@82 146 ST(&(Rp[WS(rs, 3)]), T1h, ms, &(Rp[WS(rs, 1)]));
Chris@82 147 T1a = VADD(T16, T18);
Chris@82 148 ST(&(Rp[WS(rs, 4)]), T1a, ms, &(Rp[0]));
Chris@82 149 T19 = VCONJ(VSUB(T16, T18));
Chris@82 150 ST(&(Rm[WS(rs, 4)]), T19, -ms, &(Rm[0]));
Chris@82 151 }
Chris@82 152 }
Chris@82 153 }
Chris@82 154 VLEAVE();
Chris@82 155 }
Chris@82 156
Chris@82 157 static const tw_instr twinstr[] = {
Chris@82 158 VTW(1, 1),
Chris@82 159 VTW(1, 2),
Chris@82 160 VTW(1, 3),
Chris@82 161 VTW(1, 4),
Chris@82 162 VTW(1, 5),
Chris@82 163 VTW(1, 6),
Chris@82 164 VTW(1, 7),
Chris@82 165 VTW(1, 8),
Chris@82 166 VTW(1, 9),
Chris@82 167 VTW(1, 10),
Chris@82 168 VTW(1, 11),
Chris@82 169 {TW_NEXT, VL, 0}
Chris@82 170 };
Chris@82 171
Chris@82 172 static const hc2c_desc desc = { 12, XSIMD_STRING("hc2cbdftv_12"), twinstr, &GENUS, {45, 25, 26, 0} };
Chris@82 173
Chris@82 174 void XSIMD(codelet_hc2cbdftv_12) (planner *p) {
Chris@82 175 X(khc2c_register) (p, hc2cbdftv_12, &desc, HC2C_VIA_DFT);
Chris@82 176 }
Chris@82 177 #else
Chris@82 178
Chris@82 179 /* Generated by: ../../../genfft/gen_hc2cdft_c.native -simd -compact -variables 4 -pipeline-latency 8 -trivial-stores -variables 32 -no-generate-bytw -n 12 -dif -sign 1 -name hc2cbdftv_12 -include rdft/simd/hc2cbv.h */
Chris@82 180
Chris@82 181 /*
Chris@82 182 * This function contains 71 FP additions, 30 FP multiplications,
Chris@82 183 * (or, 67 additions, 26 multiplications, 4 fused multiply/add),
Chris@82 184 * 90 stack variables, 2 constants, and 24 memory accesses
Chris@82 185 */
Chris@82 186 #include "rdft/simd/hc2cbv.h"
Chris@82 187
Chris@82 188 static void hc2cbdftv_12(R *Rp, R *Ip, R *Rm, R *Im, const R *W, stride rs, INT mb, INT me, INT ms)
Chris@82 189 {
Chris@82 190 DVK(KP866025403, +0.866025403784438646763723170752936183471402627);
Chris@82 191 DVK(KP500000000, +0.500000000000000000000000000000000000000000000);
Chris@82 192 {
Chris@82 193 INT m;
Chris@82 194 for (m = mb, W = W + ((mb - 1) * ((TWVL / VL) * 22)); m < me; m = m + VL, Rp = Rp + (VL * ms), Ip = Ip + (VL * ms), Rm = Rm - (VL * ms), Im = Im - (VL * ms), W = W + (TWVL * 22), MAKE_VOLATILE_STRIDE(48, rs)) {
Chris@82 195 V TY, TZ, Tf, TC, Tq, TG, Tm, TF, Ty, TD, T13, T1h, T2, T9, T3;
Chris@82 196 V T5, T6, Tc, Tb, Td, T8, T4, Ta, T7, Te, To, Tp, Tr, Tv, Ti;
Chris@82 197 V Ts, Tl, Tw, Tu, Tg, Th, Tj, Tk, Tt, Tx, T11, T12;
Chris@82 198 T2 = LD(&(Rp[0]), ms, &(Rp[0]));
Chris@82 199 T8 = LD(&(Rm[WS(rs, 5)]), -ms, &(Rm[WS(rs, 1)]));
Chris@82 200 T9 = VCONJ(T8);
Chris@82 201 T3 = LD(&(Rp[WS(rs, 4)]), ms, &(Rp[0]));
Chris@82 202 T4 = LD(&(Rm[WS(rs, 3)]), -ms, &(Rm[WS(rs, 1)]));
Chris@82 203 T5 = VCONJ(T4);
Chris@82 204 T6 = VADD(T3, T5);
Chris@82 205 Tc = LD(&(Rp[WS(rs, 2)]), ms, &(Rp[0]));
Chris@82 206 Ta = LD(&(Rm[WS(rs, 1)]), -ms, &(Rm[WS(rs, 1)]));
Chris@82 207 Tb = VCONJ(Ta);
Chris@82 208 Td = VADD(Tb, Tc);
Chris@82 209 TY = VADD(T2, T6);
Chris@82 210 TZ = VADD(T9, Td);
Chris@82 211 T7 = VFNMS(LDK(KP500000000), T6, T2);
Chris@82 212 Te = VFNMS(LDK(KP500000000), Td, T9);
Chris@82 213 Tf = VSUB(T7, Te);
Chris@82 214 TC = VADD(T7, Te);
Chris@82 215 To = VSUB(T3, T5);
Chris@82 216 Tp = VSUB(Tb, Tc);
Chris@82 217 Tq = VMUL(LDK(KP866025403), VSUB(To, Tp));
Chris@82 218 TG = VADD(To, Tp);
Chris@82 219 Tr = LD(&(Rp[WS(rs, 3)]), ms, &(Rp[WS(rs, 1)]));
Chris@82 220 Tu = LD(&(Rm[WS(rs, 2)]), -ms, &(Rm[0]));
Chris@82 221 Tv = VCONJ(Tu);
Chris@82 222 Tg = LD(&(Rm[WS(rs, 4)]), -ms, &(Rm[0]));
Chris@82 223 Th = LD(&(Rm[0]), -ms, &(Rm[0]));
Chris@82 224 Ti = VCONJ(VSUB(Tg, Th));
Chris@82 225 Ts = VCONJ(VADD(Tg, Th));
Chris@82 226 Tj = LD(&(Rp[WS(rs, 1)]), ms, &(Rp[WS(rs, 1)]));
Chris@82 227 Tk = LD(&(Rp[WS(rs, 5)]), ms, &(Rp[WS(rs, 1)]));
Chris@82 228 Tl = VSUB(Tj, Tk);
Chris@82 229 Tw = VADD(Tj, Tk);
Chris@82 230 Tm = VMUL(LDK(KP866025403), VSUB(Ti, Tl));
Chris@82 231 TF = VADD(Ti, Tl);
Chris@82 232 Tt = VFNMS(LDK(KP500000000), Ts, Tr);
Chris@82 233 Tx = VFNMS(LDK(KP500000000), Tw, Tv);
Chris@82 234 Ty = VSUB(Tt, Tx);
Chris@82 235 TD = VADD(Tt, Tx);
Chris@82 236 T11 = VADD(Tr, Ts);
Chris@82 237 T12 = VADD(Tv, Tw);
Chris@82 238 T13 = VBYI(VSUB(T11, T12));
Chris@82 239 T1h = VADD(T11, T12);
Chris@82 240 {
Chris@82 241 V T1n, T1i, T14, T1a, TA, T1m, TS, T18, TO, T1e, TI, TW, T1g, T1f, T10;
Chris@82 242 V TX, T19, Tn, Tz, T1, T1l, TQ, TR, TP, T17, TM, TN, TL, T1d, TE;
Chris@82 243 V TH, TB, TV, TJ, T1p, T1k, TT, T1o, TK, TU, T1j, T1b, T16, T1c, T15;
Chris@82 244 T1g = VADD(TY, TZ);
Chris@82 245 T1n = VADD(T1g, T1h);
Chris@82 246 T1f = LDW(&(W[TWVL * 10]));
Chris@82 247 T1i = VZMUL(T1f, VSUB(T1g, T1h));
Chris@82 248 T10 = VSUB(TY, TZ);
Chris@82 249 TX = LDW(&(W[TWVL * 4]));
Chris@82 250 T14 = VZMULI(TX, VSUB(T10, T13));
Chris@82 251 T19 = LDW(&(W[TWVL * 16]));
Chris@82 252 T1a = VZMULI(T19, VADD(T10, T13));
Chris@82 253 Tn = VSUB(Tf, Tm);
Chris@82 254 Tz = VBYI(VADD(Tq, Ty));
Chris@82 255 T1 = LDW(&(W[TWVL * 20]));
Chris@82 256 TA = VZMULI(T1, VSUB(Tn, Tz));
Chris@82 257 T1l = LDW(&(W[0]));
Chris@82 258 T1m = VZMULI(T1l, VADD(Tn, Tz));
Chris@82 259 TQ = VBYI(VMUL(LDK(KP866025403), VADD(TG, TF)));
Chris@82 260 TR = VADD(TC, TD);
Chris@82 261 TP = LDW(&(W[TWVL * 6]));
Chris@82 262 TS = VZMUL(TP, VADD(TQ, TR));
Chris@82 263 T17 = LDW(&(W[TWVL * 14]));
Chris@82 264 T18 = VZMUL(T17, VSUB(TR, TQ));
Chris@82 265 TM = VADD(Tf, Tm);
Chris@82 266 TN = VBYI(VSUB(Ty, Tq));
Chris@82 267 TL = LDW(&(W[TWVL * 8]));
Chris@82 268 TO = VZMULI(TL, VADD(TM, TN));
Chris@82 269 T1d = LDW(&(W[TWVL * 12]));
Chris@82 270 T1e = VZMULI(T1d, VSUB(TM, TN));
Chris@82 271 TE = VSUB(TC, TD);
Chris@82 272 TH = VBYI(VMUL(LDK(KP866025403), VSUB(TF, TG)));
Chris@82 273 TB = LDW(&(W[TWVL * 18]));
Chris@82 274 TI = VZMUL(TB, VSUB(TE, TH));
Chris@82 275 TV = LDW(&(W[TWVL * 2]));
Chris@82 276 TW = VZMUL(TV, VADD(TH, TE));
Chris@82 277 TJ = VADD(TA, TI);
Chris@82 278 ST(&(Rp[WS(rs, 5)]), TJ, ms, &(Rp[WS(rs, 1)]));
Chris@82 279 T1p = VCONJ(VSUB(T1n, T1m));
Chris@82 280 ST(&(Rm[0]), T1p, -ms, &(Rm[0]));
Chris@82 281 T1k = VCONJ(VSUB(T1i, T1e));
Chris@82 282 ST(&(Rm[WS(rs, 3)]), T1k, -ms, &(Rm[WS(rs, 1)]));
Chris@82 283 TT = VADD(TO, TS);
Chris@82 284 ST(&(Rp[WS(rs, 2)]), TT, ms, &(Rp[0]));
Chris@82 285 T1o = VADD(T1m, T1n);
Chris@82 286 ST(&(Rp[0]), T1o, ms, &(Rp[0]));
Chris@82 287 TK = VCONJ(VSUB(TI, TA));
Chris@82 288 ST(&(Rm[WS(rs, 5)]), TK, -ms, &(Rm[WS(rs, 1)]));
Chris@82 289 TU = VCONJ(VSUB(TS, TO));
Chris@82 290 ST(&(Rm[WS(rs, 2)]), TU, -ms, &(Rm[0]));
Chris@82 291 T1j = VADD(T1e, T1i);
Chris@82 292 ST(&(Rp[WS(rs, 3)]), T1j, ms, &(Rp[WS(rs, 1)]));
Chris@82 293 T1b = VCONJ(VSUB(T18, T1a));
Chris@82 294 ST(&(Rm[WS(rs, 4)]), T1b, -ms, &(Rm[0]));
Chris@82 295 T16 = VADD(TW, T14);
Chris@82 296 ST(&(Rp[WS(rs, 1)]), T16, ms, &(Rp[WS(rs, 1)]));
Chris@82 297 T1c = VADD(T18, T1a);
Chris@82 298 ST(&(Rp[WS(rs, 4)]), T1c, ms, &(Rp[0]));
Chris@82 299 T15 = VCONJ(VSUB(TW, T14));
Chris@82 300 ST(&(Rm[WS(rs, 1)]), T15, -ms, &(Rm[WS(rs, 1)]));
Chris@82 301 }
Chris@82 302 }
Chris@82 303 }
Chris@82 304 VLEAVE();
Chris@82 305 }
Chris@82 306
Chris@82 307 static const tw_instr twinstr[] = {
Chris@82 308 VTW(1, 1),
Chris@82 309 VTW(1, 2),
Chris@82 310 VTW(1, 3),
Chris@82 311 VTW(1, 4),
Chris@82 312 VTW(1, 5),
Chris@82 313 VTW(1, 6),
Chris@82 314 VTW(1, 7),
Chris@82 315 VTW(1, 8),
Chris@82 316 VTW(1, 9),
Chris@82 317 VTW(1, 10),
Chris@82 318 VTW(1, 11),
Chris@82 319 {TW_NEXT, VL, 0}
Chris@82 320 };
Chris@82 321
Chris@82 322 static const hc2c_desc desc = { 12, XSIMD_STRING("hc2cbdftv_12"), twinstr, &GENUS, {67, 26, 4, 0} };
Chris@82 323
Chris@82 324 void XSIMD(codelet_hc2cbdftv_12) (planner *p) {
Chris@82 325 X(khc2c_register) (p, hc2cbdftv_12, &desc, HC2C_VIA_DFT);
Chris@82 326 }
Chris@82 327 #endif