⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 q1fv_8.c

📁 快速fft变换
💻 C
📖 第 1 页 / 共 3 页
字号:
			      T3J = BYTWJ(&(W[TWVL * 2]), VFMAI(T3H, T3G));			      T2F = BYTWJ(&(W[TWVL * 2]), VFMAI(T2D, T2C));			      {				   V T14, Tb, Tg, T28, T3U, T3Z;				   T28 = BYTWJ(&(W[TWVL * 2]), VFMAI(T26, T25));				   ST(&(x[WS(vs, 2) + WS(rs, 5)]), T3c, ms, &(x[WS(vs, 2) + WS(rs, 1)]));				   ST(&(x[WS(vs, 2) + WS(rs, 7)]), T4g, ms, &(x[WS(vs, 2) + WS(rs, 1)]));				   T14 = BYTWJ(&(W[TWVL * 2]), VFMAI(T12, T11));				   Tj = VFNMS(LDK(KP707106781), Ta, T3);				   Tb = VFMA(LDK(KP707106781), Ta, T3);				   Tg = VFNMS(LDK(KP707106781), Tf, Te);				   Tk = VFMA(LDK(KP707106781), Tf, Te);				   ST(&(x[WS(vs, 2) + WS(rs, 6)]), T3J, ms, &(x[WS(vs, 2)]));				   ST(&(x[WS(vs, 2) + WS(rs, 4)]), T2F, ms, &(x[WS(vs, 2)]));				   ST(&(x[WS(vs, 2) + WS(rs, 3)]), T28, ms, &(x[WS(vs, 2) + WS(rs, 1)]));				   T3U = VFMA(LDK(KP707106781), T3T, T3M);				   T42 = VFNMS(LDK(KP707106781), T3T, T3M);				   T43 = VFMA(LDK(KP707106781), T3Y, T3X);				   T3Z = VFNMS(LDK(KP707106781), T3Y, T3X);				   ST(&(x[WS(vs, 2) + WS(rs, 1)]), T14, ms, &(x[WS(vs, 2) + WS(rs, 1)]));				   T2r = VFNMS(LDK(KP707106781), T2i, T2b);				   T2j = VFMA(LDK(KP707106781), T2i, T2b);				   Ti = BYTWJ(&(W[TWVL * 12]), VFMAI(Tg, Tb));				   Th = BYTWJ(&(W[0]), VFNMSI(Tg, Tb));				   T2o = VFNMS(LDK(KP707106781), T2n, T2m);				   T2s = VFMA(LDK(KP707106781), T2n, T2m);				   T1U = VFNMS(LDK(KP707106781), T1L, T1E);				   T1M = VFMA(LDK(KP707106781), T1L, T1E);				   T1R = VFNMS(LDK(KP707106781), T1Q, T1P);				   T1V = VFMA(LDK(KP707106781), T1Q, T1P);				   T41 = BYTWJ(&(W[TWVL * 12]), VFMAI(T3Z, T3U));				   T40 = BYTWJ(&(W[0]), VFNMSI(T3Z, T3U));			      }			 }			 {			      V TQ, TR, T1n, T1o, T3v, T3w;			      {				   V T1f, T1k, T3n, TP, TO, T3s, T2Q, T2V;				   {					V TI, T2q, T2p, T1T, T1S, TN;					TQ = VFNMS(LDK(KP707106781), TH, TA);					TI = VFMA(LDK(KP707106781), TH, TA);					ST(&(x[WS(vs, 7)]), Ti, ms, &(x[WS(vs, 7)]));					ST(&(x[WS(vs, 1)]), Th, ms, &(x[WS(vs, 1)]));					T2q = BYTWJ(&(W[TWVL * 12]), VFMAI(T2o, T2j));					T2p = BYTWJ(&(W[0]), VFNMSI(T2o, T2j));					T1T = BYTWJ(&(W[TWVL * 12]), VFMAI(T1R, T1M));					T1S = BYTWJ(&(W[0]), VFNMSI(T1R, T1M));					ST(&(x[WS(vs, 7) + WS(rs, 7)]), T41, ms, &(x[WS(vs, 7) + WS(rs, 1)]));					ST(&(x[WS(vs, 1) + WS(rs, 7)]), T40, ms, &(x[WS(vs, 1) + WS(rs, 1)]));					TN = VFNMS(LDK(KP707106781), TM, TL);					TR = VFMA(LDK(KP707106781), TM, TL);					T1n = VFNMS(LDK(KP707106781), T1e, T17);					T1f = VFMA(LDK(KP707106781), T1e, T17);					ST(&(x[WS(vs, 7) + WS(rs, 4)]), T2q, ms, &(x[WS(vs, 7)]));					ST(&(x[WS(vs, 1) + WS(rs, 4)]), T2p, ms, &(x[WS(vs, 1)]));					ST(&(x[WS(vs, 7) + WS(rs, 3)]), T1T, ms, &(x[WS(vs, 7) + WS(rs, 1)]));					ST(&(x[WS(vs, 1) + WS(rs, 3)]), T1S, ms, &(x[WS(vs, 1) + WS(rs, 1)]));					T1k = VFNMS(LDK(KP707106781), T1j, T1i);					T1o = VFMA(LDK(KP707106781), T1j, T1i);					T3v = VFNMS(LDK(KP707106781), T3m, T3f);					T3n = VFMA(LDK(KP707106781), T3m, T3f);					TP = BYTWJ(&(W[TWVL * 12]), VFMAI(TN, TI));					TO = BYTWJ(&(W[0]), VFNMSI(TN, TI));					T3s = VFNMS(LDK(KP707106781), T3r, T3q);					T3w = VFMA(LDK(KP707106781), T3r, T3q);				   }				   T2Y = VFNMS(LDK(KP707106781), T2P, T2I);				   T2Q = VFMA(LDK(KP707106781), T2P, T2I);				   T2V = VFNMS(LDK(KP707106781), T2U, T2T);				   T2Z = VFMA(LDK(KP707106781), T2U, T2T);				   {					V T3u, T3t, T2X, T2W, T1m, T1l;					T1m = BYTWJ(&(W[TWVL * 12]), VFMAI(T1k, T1f));					T1l = BYTWJ(&(W[0]), VFNMSI(T1k, T1f));					ST(&(x[WS(vs, 7) + WS(rs, 1)]), TP, ms, &(x[WS(vs, 7) + WS(rs, 1)]));					ST(&(x[WS(vs, 1) + WS(rs, 1)]), TO, ms, &(x[WS(vs, 1) + WS(rs, 1)]));					T3u = BYTWJ(&(W[TWVL * 12]), VFMAI(T3s, T3n));					T3t = BYTWJ(&(W[0]), VFNMSI(T3s, T3n));					T2X = BYTWJ(&(W[TWVL * 12]), VFMAI(T2V, T2Q));					T2W = BYTWJ(&(W[0]), VFNMSI(T2V, T2Q));					ST(&(x[WS(vs, 7) + WS(rs, 2)]), T1m, ms, &(x[WS(vs, 7)]));					ST(&(x[WS(vs, 1) + WS(rs, 2)]), T1l, ms, &(x[WS(vs, 1)]));					ST(&(x[WS(vs, 7) + WS(rs, 6)]), T3u, ms, &(x[WS(vs, 7)]));					ST(&(x[WS(vs, 1) + WS(rs, 6)]), T3t, ms, &(x[WS(vs, 1)]));					ST(&(x[WS(vs, 7) + WS(rs, 5)]), T2X, ms, &(x[WS(vs, 7) + WS(rs, 1)]));					ST(&(x[WS(vs, 1) + WS(rs, 5)]), T2W, ms, &(x[WS(vs, 1) + WS(rs, 1)]));				   }			      }			      {				   V T2u, T2t, T3y, T3x;				   {					V T1q, T1p, Tm, Tl;					T1q = BYTWJ(&(W[TWVL * 4]), VFMAI(T1o, T1n));					T1p = BYTWJ(&(W[TWVL * 8]), VFNMSI(T1o, T1n));					Tm = BYTWJ(&(W[TWVL * 4]), VFMAI(Tk, Tj));					Tl = BYTWJ(&(W[TWVL * 8]), VFNMSI(Tk, Tj));					ST(&(x[WS(vs, 3) + WS(rs, 2)]), T1q, ms, &(x[WS(vs, 3)]));					ST(&(x[WS(vs, 5) + WS(rs, 2)]), T1p, ms, &(x[WS(vs, 5)]));					T2u = BYTWJ(&(W[TWVL * 4]), VFMAI(T2s, T2r));					T2t = BYTWJ(&(W[TWVL * 8]), VFNMSI(T2s, T2r));					T3y = BYTWJ(&(W[TWVL * 4]), VFMAI(T3w, T3v));					T3x = BYTWJ(&(W[TWVL * 8]), VFNMSI(T3w, T3v));					ST(&(x[WS(vs, 3)]), Tm, ms, &(x[WS(vs, 3)]));					ST(&(x[WS(vs, 5)]), Tl, ms, &(x[WS(vs, 5)]));				   }				   ST(&(x[WS(vs, 3) + WS(rs, 4)]), T2u, ms, &(x[WS(vs, 3)]));				   ST(&(x[WS(vs, 5) + WS(rs, 4)]), T2t, ms, &(x[WS(vs, 5)]));				   ST(&(x[WS(vs, 3) + WS(rs, 6)]), T3y, ms, &(x[WS(vs, 3)]));				   ST(&(x[WS(vs, 5) + WS(rs, 6)]), T3x, ms, &(x[WS(vs, 5)]));				   TT = BYTWJ(&(W[TWVL * 4]), VFMAI(TR, TQ));				   TS = BYTWJ(&(W[TWVL * 8]), VFNMSI(TR, TQ));			      }			 }		    }	       }	  }	  {	       V T31, T30, T45, T44, T1X, T1W;	       T1X = BYTWJ(&(W[TWVL * 4]), VFMAI(T1V, T1U));	       T1W = BYTWJ(&(W[TWVL * 8]), VFNMSI(T1V, T1U));	       ST(&(x[WS(vs, 3) + WS(rs, 1)]), TT, ms, &(x[WS(vs, 3) + WS(rs, 1)]));	       ST(&(x[WS(vs, 5) + WS(rs, 1)]), TS, ms, &(x[WS(vs, 5) + WS(rs, 1)]));	       T31 = BYTWJ(&(W[TWVL * 4]), VFMAI(T2Z, T2Y));	       T30 = BYTWJ(&(W[TWVL * 8]), VFNMSI(T2Z, T2Y));	       T45 = BYTWJ(&(W[TWVL * 4]), VFMAI(T43, T42));	       T44 = BYTWJ(&(W[TWVL * 8]), VFNMSI(T43, T42));	       ST(&(x[WS(vs, 3) + WS(rs, 3)]), T1X, ms, &(x[WS(vs, 3) + WS(rs, 1)]));	       ST(&(x[WS(vs, 5) + WS(rs, 3)]), T1W, ms, &(x[WS(vs, 5) + WS(rs, 1)]));	       ST(&(x[WS(vs, 3) + WS(rs, 5)]), T31, ms, &(x[WS(vs, 3) + WS(rs, 1)]));	       ST(&(x[WS(vs, 5) + WS(rs, 5)]), T30, ms, &(x[WS(vs, 5) + WS(rs, 1)]));	       ST(&(x[WS(vs, 3) + WS(rs, 7)]), T45, ms, &(x[WS(vs, 3) + WS(rs, 1)]));	       ST(&(x[WS(vs, 5) + WS(rs, 7)]), T44, ms, &(x[WS(vs, 5) + WS(rs, 1)]));	  }     }}static const tw_instr twinstr[] = {     VTW(0, 1),     VTW(0, 2),     VTW(0, 3),     VTW(0, 4),     VTW(0, 5),     VTW(0, 6),     VTW(0, 7),     {TW_NEXT, VL, 0}};static const ct_desc desc = { 8, "q1fv_8", twinstr, &GENUS, {184, 112, 80, 0}, 0, 0, 0 };void X(codelet_q1fv_8) (planner *p) {     X(kdft_difsq_register) (p, q1fv_8, &desc);}#else				/* HAVE_FMA *//* Generated by: ../../../genfft/gen_twidsq_c -simd -compact -variables 4 -pipeline-latency 8 -n 8 -dif -name q1fv_8 -include q1f.h *//* * This function contains 264 FP additions, 128 FP multiplications, * (or, 264 additions, 128 multiplications, 0 fused multiply/add), * 77 stack variables, 1 constants, and 128 memory accesses */#include "q1f.h"static void q1fv_8(R *ri, R *ii, const R *W, stride rs, stride vs, INT mb, INT me, INT ms){     DVK(KP707106781, +0.707106781186547524400844362104849039284835938);     INT m;     R *x;     x = ri;     for (m = mb, W = W + (mb * ((TWVL / VL) * 14)); m < me; m = m + VL, x = x + (VL * ms), W = W + (TWVL * 14), MAKE_VOLATILE_STRIDE(rs), MAKE_VOLATILE_STRIDE(vs)) {	  V T3, Tu, Tf, Tp, T1E, T25, T1Q, T20, T2b, T2C, T2n, T2x, T3M, T4d, T3Y;	  V T48, TA, T11, TM, TW, T17, T1y, T1j, T1t, T2I, T39, T2U, T34, T3f, T3G;	  V T3r, T3B, Ta, Tv, Tc, Ts, T1L, T26, T1N, T23, T2i, T2D, T2k, T2A, T3T;	  V T4e, T3V, T4b, TH, T12, TJ, TZ, T1e, T1z, T1g, T1w, T2P, T3a, T2R, T37;	  V T3m, T3H, T3o, T3E, T28, T14;	  {	       V T1, T2, Tn, Td, Te, To;	       T1 = LD(&(x[0]), ms, &(x[0]));	       T2 = LD(&(x[WS(rs, 4)]), ms, &(x[0]));	       Tn = VADD(T1, T2);	       Td = LD(&(x[WS(rs, 2)]), ms, &(x[0]));	       Te = LD(&(x[WS(rs, 6)]), ms, &(x[0]));	       To = VADD(Td, Te);	       T3 = VSUB(T1, T2);	       Tu = VSUB(Tn, To);	       Tf = VSUB(Td, Te);	       Tp = VADD(Tn, To);	  }	  {	       V T1C, T1D, T1Y, T1O, T1P, T1Z;	       T1C = LD(&(x[WS(vs, 3)]), ms, &(x[WS(vs, 3)]));	       T1D = LD(&(x[WS(vs, 3) + WS(rs, 4)]), ms, &(x[WS(vs, 3)]));	       T1Y = VADD(T1C, T1D);	       T1O = LD(&(x[WS(vs, 3) + WS(rs, 2)]), ms, &(x[WS(vs, 3)]));	       T1P = LD(&(x[WS(vs, 3) + WS(rs, 6)]), ms, &(x[WS(vs, 3)]));	       T1Z = VADD(T1O, T1P);	       T1E = VSUB(T1C, T1D);	       T25 = VSUB(T1Y, T1Z);	       T1Q = VSUB(T1O, T1P);	       T20 = VADD(T1Y, T1Z);	  }	  {	       V T29, T2a, T2v, T2l, T2m, T2w;	       T29 = LD(&(x[WS(vs, 4)]), ms, &(x[WS(vs, 4)]));	       T2a = LD(&(x[WS(vs, 4) + WS(rs, 4)]), ms, &(x[WS(vs, 4)]));	       T2v = VADD(T29, T2a);	       T2l = LD(&(x[WS(vs, 4) + WS(rs, 2)]), ms, &(x[WS(vs, 4)]));	       T2m = LD(&(x[WS(vs, 4) + WS(rs, 6)]), ms, &(x[WS(vs, 4)]));	       T2w = VADD(T2l, T2m);	       T2b = VSUB(T29, T2a);	       T2C = VSUB(T2v, T2w);	       T2n = VSUB(T2l, T2m);	       T2x = VADD(T2v, T2w);	  }	  {	       V T3K, T3L, T46, T3W, T3X, T47;	       T3K = LD(&(x[WS(vs, 7)]), ms, &(x[WS(vs, 7)]));	       T3L = LD(&(x[WS(vs, 7) + WS(rs, 4)]), ms, &(x[WS(vs, 7)]));	       T46 = VADD(T3K, T3L);	       T3W = LD(&(x[WS(vs, 7) + WS(rs, 2)]), ms, &(x[WS(vs, 7)]));	       T3X = LD(&(x[WS(vs, 7) + WS(rs, 6)]), ms, &(x[WS(vs, 7)]));	       T47 = VADD(T3W, T3X);	       T3M = VSUB(T3K, T3L);	       T4d = VSUB(T46, T47);	       T3Y = VSUB(T3W, T3X);	       T48 = VADD(T46, T47);	  }	  {	       V Ty, Tz, TU, TK, TL, TV;	       Ty = LD(&(x[WS(vs, 1)]), ms, &(x[WS(vs, 1)]));	       Tz = LD(&(x[WS(vs, 1) + WS(rs, 4)]), ms, &(x[WS(vs, 1)]));	       TU = VADD(Ty, Tz);	       TK = LD(&(x[WS(vs, 1) + WS(rs, 2)]), ms, &(x[WS(vs, 1)]));	       TL = LD(&(x[WS(vs, 1) + WS(rs, 6)]), ms, &(x[WS(vs, 1)]));	       TV = VADD(TK, TL);	       TA = VSUB(Ty, Tz);	       T11 = VSUB(TU, TV);	       TM = VSUB(TK, TL);	       TW = VADD(TU, TV);	  }	  {	       V T15, T16, T1r, T1h, T1i, T1s;	       T15 = LD(&(x[WS(vs, 2)]), ms, &(x[WS(vs, 2)]));	       T16 = LD(&(x[WS(vs, 2) + WS(rs, 4)]), ms, &(x[WS(vs, 2)]));	       T1r = VADD(T15, T16);	       T1h = LD(&(x[WS(vs, 2) + WS(rs, 2)]), ms, &(x[WS(vs, 2)]));	       T1i = LD(&(x[WS(vs, 2) + WS(rs, 6)]), ms, &(x[WS(vs, 2)]));	       T1s = VADD(T1h, T1i);	       T17 = VSUB(T15, T16);	       T1y = VSUB(T1r, T1s);	       T1j = VSUB(T1h, T1i);	       T1t = VADD(T1r, T1s);	  }	  {	       V T2G, T2H, T32, T2S, T2T, T33;	       T2G = LD(&(x[WS(vs, 5)]), ms, &(x[WS(vs, 5)]));	       T2H = LD(&(x[WS(vs, 5) + WS(rs, 4)]), ms, &(x[WS(vs, 5)]));	       T32 = VADD(T2G, T2H);	       T2S = LD(&(x[WS(vs, 5) + WS(rs, 2)]), ms, &(x[WS(vs, 5)]));	       T2T = LD(&(x[WS(vs, 5) + WS(rs, 6)]), ms, &(x[WS(vs, 5)]));	       T33 = VADD(T2S, T2T);	       T2I = VSUB(T2G, T2H);	       T39 = VSUB(T32, T33);	       T2U = VSUB(T2S, T2T);	       T34 = VADD(T32, T33);	  }	  {	       V T3d, T3e, T3z, T3p, T3q, T3A;	       T3d = LD(&(x[WS(vs, 6)]), ms, &(x[WS(vs, 6)]));	       T3e = LD(&(x[WS(vs, 6) + WS(rs, 4)]), ms, &(x[WS(vs, 6)]));	       T3z = VADD(T3d, T3e);	       T3p = LD(&(x[WS(vs, 6) + WS(rs, 2)]), ms, &(x[WS(vs, 6)]));	       T3q = LD(&(x[WS(vs, 6) + WS(rs, 6)]), ms, &(x[WS(vs, 6)]));	       T3A = VADD(T3p, T3q);	       T3f = VSUB(T3d, T3e);	       T3G = VSUB(T3z, T3A);	       T3r = VSUB(T3p, T3q);	       T3B = VADD(T3z, T3A);	  }	  {	       V T6, Tq, T9, Tr;	       {		    V T4, T5, T7, T8;		    T4 = LD(&(x[WS(rs, 1)]), ms, &(x[WS(rs, 1)]));		    T5 = LD(&(x[WS(rs, 5)]), ms, &(x[WS(rs, 1)]));		    T6 = VSUB(T4, T5);		    Tq = VADD(T4, T5);		    T7 = LD(&(x[WS(rs, 7)]), ms, &(x[WS(rs, 1)]));		    T8 = LD(&(x[WS(rs, 3)]), ms, &(x[WS(rs, 1)]));		    T9 = VSUB(T7, T8);		    Tr = VADD(T7, T8);	       }	       Ta = VMUL(LDK(KP707106781), VADD(T6, T9));	       Tv = VBYI(VSUB(Tr, Tq));	       Tc = VMUL(LDK(KP707106781), VSUB(T9, T6));	       Ts = VADD(Tq, Tr);	  }	  {	       V T1H, T21, T1K, T22;	       {		    V T1F, T1G, T1I, T1J;		    T1F = LD(&(x[WS(vs, 3) + WS(rs, 1)]), ms, &(x[WS(vs, 3) + WS(rs, 1)]));		    T1G = LD(&(x[WS(vs, 3) + WS(rs, 5)]), ms, &(x[WS(vs, 3) + WS(rs, 1)]));		    T1H = VSUB(T1F, T1G);		    T21 = VADD(T1F, T1G);		    T1I = LD(&(x[WS(vs, 3) + WS(rs, 7)]), ms, &(x[WS(vs, 3) + WS(rs, 1)]));		    T1J = LD(&(x[WS(vs, 3) + WS(rs, 3)]), ms, &(x[WS(vs, 3) + WS(rs, 1)]));		    T1K = VSUB(T1I, T1J);		    T22 = VADD(T1I, T1J);	       }	       T1L = VMUL(LDK(KP707106781), VADD(T1H, T1K));	       T26 = VBYI(VSUB(T22, T21));	       T1N = VMUL(LDK(KP707106781), VSUB(T1K, T1H));	       T23 = VADD(T21, T22);	  }	  {	       V T2e, T2y, T2h, T2z;	       {		    V T2c, T2d, T2f, T2g;		    T2c = LD(&(x[WS(vs, 4) + WS(rs, 1)]), ms, &(x[WS(vs, 4) + WS(rs, 1)]));		    T2d = LD(&(x[WS(vs, 4) + WS(rs, 5)]), ms, &(x[WS(vs, 4) + WS(rs, 1)]));		    T2e = VSUB(T2c, T2d);		    T2y = VADD(T2c, T2d);		    T2f = LD(&(x[WS(vs, 4) + WS(rs, 7)]), ms, &(x[WS(vs, 4) + WS(rs, 1)]));		    T2g = LD(&(x[WS(vs, 4) + WS(rs, 3)]), ms, &(x[WS(vs, 4) + WS(rs, 1)]));		    T2h = VSUB(T2f, T2g);		    T2z = VADD(T2f, T2g);	       }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -