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

📄 q1bv_8.c

📁 快速fft变换
💻 C
📖 第 1 页 / 共 3 页
字号:
			      T2F = BYTW(&(W[TWVL * 6]), VSUB(T2D, T2E));			      {				   V T14, Tb, Tg, T28, T3U, T3Z;				   T28 = BYTW(&(W[TWVL * 6]), VSUB(T26, T27));				   ST(&(x[WS(vs, 4) + WS(rs, 5)]), T3c, ms, &(x[WS(vs, 4) + WS(rs, 1)]));				   ST(&(x[WS(vs, 4) + WS(rs, 7)]), T4g, ms, &(x[WS(vs, 4) + WS(rs, 1)]));				   T14 = BYTW(&(W[TWVL * 6]), VSUB(T12, T13));				   Tj = VFMA(LDK(KP707106781), Ta, T3);				   Tb = VFNMS(LDK(KP707106781), Ta, T3);				   ST(&(x[WS(vs, 4) + WS(rs, 6)]), T3J, ms, &(x[WS(vs, 4)]));				   Tk = VFMA(LDK(KP707106781), Tf, Te);				   Tg = VFNMS(LDK(KP707106781), Tf, Te);				   ST(&(x[WS(vs, 4) + WS(rs, 4)]), T2F, ms, &(x[WS(vs, 4)]));				   ST(&(x[WS(vs, 4) + WS(rs, 3)]), T28, ms, &(x[WS(vs, 4) + WS(rs, 1)]));				   T3U = VFNMS(LDK(KP707106781), T3T, T3M);				   T42 = VFMA(LDK(KP707106781), T3T, T3M);				   T43 = VFMA(LDK(KP707106781), T3Y, T3X);				   T3Z = VFNMS(LDK(KP707106781), T3Y, T3X);				   ST(&(x[WS(vs, 4) + WS(rs, 1)]), T14, ms, &(x[WS(vs, 4) + WS(rs, 1)]));				   T2r = VFMA(LDK(KP707106781), T2i, T2b);				   T2j = VFNMS(LDK(KP707106781), T2i, T2b);				   T2o = VFNMS(LDK(KP707106781), T2n, T2m);				   T2s = VFMA(LDK(KP707106781), T2n, T2m);				   Ti = BYTW(&(W[TWVL * 8]), VFMAI(Tg, Tb));				   Th = BYTW(&(W[TWVL * 4]), VFNMSI(Tg, Tb));				   T1U = VFMA(LDK(KP707106781), T1L, T1E);				   T1M = VFNMS(LDK(KP707106781), T1L, T1E);				   T1R = VFNMS(LDK(KP707106781), T1Q, T1P);				   T1V = VFMA(LDK(KP707106781), T1Q, T1P);				   T41 = BYTW(&(W[TWVL * 8]), VFMAI(T3Z, T3U));				   T40 = BYTW(&(W[TWVL * 4]), VFNMSI(T3Z, T3U));			      }			 }			 {			      V TQ, TR, T1n, T1o, T3v, T3w;			      {				   V TI, TN, T1f, T1k, T3n, T3s;				   {					V T1T, T1S, T2q, T2p;					TQ = VFMA(LDK(KP707106781), TH, TA);					TI = VFNMS(LDK(KP707106781), TH, TA);					T2q = BYTW(&(W[TWVL * 8]), VFMAI(T2o, T2j));					T2p = BYTW(&(W[TWVL * 4]), VFNMSI(T2o, T2j));					ST(&(x[WS(vs, 5)]), Ti, ms, &(x[WS(vs, 5)]));					ST(&(x[WS(vs, 3)]), Th, ms, &(x[WS(vs, 3)]));					T1T = BYTW(&(W[TWVL * 8]), VFMAI(T1R, T1M));					T1S = BYTW(&(W[TWVL * 4]), VFNMSI(T1R, T1M));					ST(&(x[WS(vs, 5) + WS(rs, 7)]), T41, ms, &(x[WS(vs, 5) + WS(rs, 1)]));					ST(&(x[WS(vs, 3) + WS(rs, 7)]), T40, ms, &(x[WS(vs, 3) + WS(rs, 1)]));					ST(&(x[WS(vs, 5) + WS(rs, 4)]), T2q, ms, &(x[WS(vs, 5)]));					ST(&(x[WS(vs, 3) + WS(rs, 4)]), T2p, ms, &(x[WS(vs, 3)]));					TN = VFNMS(LDK(KP707106781), TM, TL);					TR = VFMA(LDK(KP707106781), TM, TL);					T1n = VFMA(LDK(KP707106781), T1e, T17);					T1f = VFNMS(LDK(KP707106781), T1e, T17);					ST(&(x[WS(vs, 5) + WS(rs, 3)]), T1T, ms, &(x[WS(vs, 5) + WS(rs, 1)]));					ST(&(x[WS(vs, 3) + WS(rs, 3)]), T1S, ms, &(x[WS(vs, 3) + WS(rs, 1)]));					T1k = VFNMS(LDK(KP707106781), T1j, T1i);					T1o = VFMA(LDK(KP707106781), T1j, T1i);					T3v = VFMA(LDK(KP707106781), T3m, T3f);					T3n = VFNMS(LDK(KP707106781), T3m, T3f);					T3s = VFNMS(LDK(KP707106781), T3r, T3q);					T3w = VFMA(LDK(KP707106781), T3r, T3q);				   }				   {					V T2Q, TP, TO, T2V, T2X, T2W;					T2Y = VFMA(LDK(KP707106781), T2P, T2I);					T2Q = VFNMS(LDK(KP707106781), T2P, T2I);					TP = BYTW(&(W[TWVL * 8]), VFMAI(TN, TI));					TO = BYTW(&(W[TWVL * 4]), VFNMSI(TN, TI));					T2V = VFNMS(LDK(KP707106781), T2U, T2T);					T2Z = VFMA(LDK(KP707106781), T2U, T2T);					{					     V T1m, T1l, T3u, T3t;					     T1m = BYTW(&(W[TWVL * 8]), VFMAI(T1k, T1f));					     T1l = BYTW(&(W[TWVL * 4]), VFNMSI(T1k, T1f));					     T3u = BYTW(&(W[TWVL * 8]), VFMAI(T3s, T3n));					     T3t = BYTW(&(W[TWVL * 4]), VFNMSI(T3s, T3n));					     ST(&(x[WS(vs, 5) + WS(rs, 1)]), TP, ms, &(x[WS(vs, 5) + WS(rs, 1)]));					     ST(&(x[WS(vs, 3) + WS(rs, 1)]), TO, ms, &(x[WS(vs, 3) + WS(rs, 1)]));					     T2X = BYTW(&(W[TWVL * 8]), VFMAI(T2V, T2Q));					     T2W = BYTW(&(W[TWVL * 4]), VFNMSI(T2V, T2Q));					     ST(&(x[WS(vs, 5) + WS(rs, 2)]), T1m, ms, &(x[WS(vs, 5)]));					     ST(&(x[WS(vs, 3) + WS(rs, 2)]), T1l, ms, &(x[WS(vs, 3)]));					     ST(&(x[WS(vs, 5) + WS(rs, 6)]), T3u, ms, &(x[WS(vs, 5)]));					     ST(&(x[WS(vs, 3) + WS(rs, 6)]), T3t, ms, &(x[WS(vs, 3)]));					}					ST(&(x[WS(vs, 5) + WS(rs, 5)]), T2X, ms, &(x[WS(vs, 5) + WS(rs, 1)]));					ST(&(x[WS(vs, 3) + WS(rs, 5)]), T2W, ms, &(x[WS(vs, 3) + WS(rs, 1)]));				   }			      }			      {				   V T3y, T3x, T1q, T1p;				   T1q = BYTW(&(W[TWVL * 12]), VFNMSI(T1o, T1n));				   T1p = BYTW(&(W[0]), VFMAI(T1o, T1n));				   {					V Tm, Tl, T2u, T2t;					Tm = BYTW(&(W[TWVL * 12]), VFNMSI(Tk, Tj));					Tl = BYTW(&(W[0]), VFMAI(Tk, Tj));					T2u = BYTW(&(W[TWVL * 12]), VFNMSI(T2s, T2r));					T2t = BYTW(&(W[0]), VFMAI(T2s, T2r));					ST(&(x[WS(vs, 7) + WS(rs, 2)]), T1q, ms, &(x[WS(vs, 7)]));					ST(&(x[WS(vs, 1) + WS(rs, 2)]), T1p, ms, &(x[WS(vs, 1)]));					T3y = BYTW(&(W[TWVL * 12]), VFNMSI(T3w, T3v));					T3x = BYTW(&(W[0]), VFMAI(T3w, T3v));					ST(&(x[WS(vs, 7)]), Tm, ms, &(x[WS(vs, 7)]));					ST(&(x[WS(vs, 1)]), Tl, ms, &(x[WS(vs, 1)]));					ST(&(x[WS(vs, 7) + WS(rs, 4)]), T2u, ms, &(x[WS(vs, 7)]));					ST(&(x[WS(vs, 1) + WS(rs, 4)]), T2t, ms, &(x[WS(vs, 1)]));				   }				   ST(&(x[WS(vs, 7) + WS(rs, 6)]), T3y, ms, &(x[WS(vs, 7)]));				   ST(&(x[WS(vs, 1) + WS(rs, 6)]), T3x, ms, &(x[WS(vs, 1)]));				   TT = BYTW(&(W[TWVL * 12]), VFNMSI(TR, TQ));				   TS = BYTW(&(W[0]), VFMAI(TR, TQ));			      }			 }		    }	       }	  }	  {	       V T1X, T1W, T31, T30;	       T1X = BYTW(&(W[TWVL * 12]), VFNMSI(T1V, T1U));	       T1W = BYTW(&(W[0]), VFMAI(T1V, T1U));	       T31 = BYTW(&(W[TWVL * 12]), VFNMSI(T2Z, T2Y));	       T30 = BYTW(&(W[0]), VFMAI(T2Z, T2Y));	       ST(&(x[WS(vs, 7) + WS(rs, 1)]), TT, ms, &(x[WS(vs, 7) + WS(rs, 1)]));	       ST(&(x[WS(vs, 1) + WS(rs, 1)]), TS, ms, &(x[WS(vs, 1) + WS(rs, 1)]));	       T45 = BYTW(&(W[TWVL * 12]), VFNMSI(T43, T42));	       T44 = BYTW(&(W[0]), VFMAI(T43, T42));	       ST(&(x[WS(vs, 7) + WS(rs, 3)]), T1X, ms, &(x[WS(vs, 7) + WS(rs, 1)]));	       ST(&(x[WS(vs, 1) + WS(rs, 3)]), T1W, ms, &(x[WS(vs, 1) + WS(rs, 1)]));	       ST(&(x[WS(vs, 7) + WS(rs, 5)]), T31, ms, &(x[WS(vs, 7) + WS(rs, 1)]));	       ST(&(x[WS(vs, 1) + WS(rs, 5)]), T30, ms, &(x[WS(vs, 1) + WS(rs, 1)]));	  }	  ST(&(x[WS(vs, 7) + WS(rs, 7)]), T45, ms, &(x[WS(vs, 7) + WS(rs, 1)]));	  ST(&(x[WS(vs, 1) + WS(rs, 7)]), T44, ms, &(x[WS(vs, 1) + 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, "q1bv_8", twinstr, &GENUS, {184, 112, 80, 0}, 0, 0, 0 };void X(codelet_q1bv_8) (planner *p) {     X(kdft_difsq_register) (p, q1bv_8, &desc);}#else				/* HAVE_FMA *//* Generated by: ../../../genfft/gen_twidsq_c -simd -compact -variables 4 -pipeline-latency 8 -n 8 -dif -name q1bv_8 -include q1b.h -sign 1 *//* * 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 "q1b.h"static void q1bv_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 = ii;     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 Ta, Tv, Te, Tp, T1L, T26, T1P, T20, T2i, T2D, T2m, T2x, T3T, T4e, T3X;	  V T48, TH, T12, TL, TW, T1e, T1z, T1i, T1t, T2P, T3a, T2T, T34, T3m, T3H;	  V T3q, T3B, T7, Tw, Tf, Ts, T1I, T27, T1Q, T23, T2f, T2E, T2n, T2A, T3Q;	  V T4f, T3Y, T4b, TE, T13, TM, TZ, T1b, T1A, T1j, T1w, T2M, T3b, T2U, T37;	  V T3j, T3I, T3r, T3E, T28, T14;	  {	       V T8, T9, To, Tc, Td, Tn;	       T8 = LD(&(x[WS(rs, 2)]), ms, &(x[0]));	       T9 = LD(&(x[WS(rs, 6)]), ms, &(x[0]));	       To = VADD(T8, T9);	       Tc = LD(&(x[0]), ms, &(x[0]));	       Td = LD(&(x[WS(rs, 4)]), ms, &(x[0]));	       Tn = VADD(Tc, Td);	       Ta = VSUB(T8, T9);	       Tv = VADD(Tn, To);	       Te = VSUB(Tc, Td);	       Tp = VSUB(Tn, To);	  }	  {	       V T1J, T1K, T1Z, T1N, T1O, T1Y;	       T1J = LD(&(x[WS(vs, 3) + WS(rs, 2)]), ms, &(x[WS(vs, 3)]));	       T1K = LD(&(x[WS(vs, 3) + WS(rs, 6)]), ms, &(x[WS(vs, 3)]));	       T1Z = VADD(T1J, T1K);	       T1N = LD(&(x[WS(vs, 3)]), ms, &(x[WS(vs, 3)]));	       T1O = LD(&(x[WS(vs, 3) + WS(rs, 4)]), ms, &(x[WS(vs, 3)]));	       T1Y = VADD(T1N, T1O);	       T1L = VSUB(T1J, T1K);	       T26 = VADD(T1Y, T1Z);	       T1P = VSUB(T1N, T1O);	       T20 = VSUB(T1Y, T1Z);	  }	  {	       V T2g, T2h, T2w, T2k, T2l, T2v;	       T2g = LD(&(x[WS(vs, 4) + WS(rs, 2)]), ms, &(x[WS(vs, 4)]));	       T2h = LD(&(x[WS(vs, 4) + WS(rs, 6)]), ms, &(x[WS(vs, 4)]));	       T2w = VADD(T2g, T2h);	       T2k = LD(&(x[WS(vs, 4)]), ms, &(x[WS(vs, 4)]));	       T2l = LD(&(x[WS(vs, 4) + WS(rs, 4)]), ms, &(x[WS(vs, 4)]));	       T2v = VADD(T2k, T2l);	       T2i = VSUB(T2g, T2h);	       T2D = VADD(T2v, T2w);	       T2m = VSUB(T2k, T2l);	       T2x = VSUB(T2v, T2w);	  }	  {	       V T3R, T3S, T47, T3V, T3W, T46;	       T3R = LD(&(x[WS(vs, 7) + WS(rs, 2)]), ms, &(x[WS(vs, 7)]));	       T3S = LD(&(x[WS(vs, 7) + WS(rs, 6)]), ms, &(x[WS(vs, 7)]));	       T47 = VADD(T3R, T3S);	       T3V = LD(&(x[WS(vs, 7)]), ms, &(x[WS(vs, 7)]));	       T3W = LD(&(x[WS(vs, 7) + WS(rs, 4)]), ms, &(x[WS(vs, 7)]));	       T46 = VADD(T3V, T3W);	       T3T = VSUB(T3R, T3S);	       T4e = VADD(T46, T47);	       T3X = VSUB(T3V, T3W);	       T48 = VSUB(T46, T47);	  }	  {	       V TF, TG, TV, TJ, TK, TU;	       TF = LD(&(x[WS(vs, 1) + WS(rs, 2)]), ms, &(x[WS(vs, 1)]));	       TG = LD(&(x[WS(vs, 1) + WS(rs, 6)]), ms, &(x[WS(vs, 1)]));	       TV = VADD(TF, TG);	       TJ = LD(&(x[WS(vs, 1)]), ms, &(x[WS(vs, 1)]));	       TK = LD(&(x[WS(vs, 1) + WS(rs, 4)]), ms, &(x[WS(vs, 1)]));	       TU = VADD(TJ, TK);	       TH = VSUB(TF, TG);	       T12 = VADD(TU, TV);	       TL = VSUB(TJ, TK);	       TW = VSUB(TU, TV);	  }	  {	       V T1c, T1d, T1s, T1g, T1h, T1r;	       T1c = LD(&(x[WS(vs, 2) + WS(rs, 2)]), ms, &(x[WS(vs, 2)]));	       T1d = LD(&(x[WS(vs, 2) + WS(rs, 6)]), ms, &(x[WS(vs, 2)]));	       T1s = VADD(T1c, T1d);	       T1g = LD(&(x[WS(vs, 2)]), ms, &(x[WS(vs, 2)]));	       T1h = LD(&(x[WS(vs, 2) + WS(rs, 4)]), ms, &(x[WS(vs, 2)]));	       T1r = VADD(T1g, T1h);	       T1e = VSUB(T1c, T1d);	       T1z = VADD(T1r, T1s);	       T1i = VSUB(T1g, T1h);	       T1t = VSUB(T1r, T1s);	  }	  {	       V T2N, T2O, T33, T2R, T2S, T32;	       T2N = LD(&(x[WS(vs, 5) + WS(rs, 2)]), ms, &(x[WS(vs, 5)]));	       T2O = LD(&(x[WS(vs, 5) + WS(rs, 6)]), ms, &(x[WS(vs, 5)]));	       T33 = VADD(T2N, T2O);	       T2R = LD(&(x[WS(vs, 5)]), ms, &(x[WS(vs, 5)]));	       T2S = LD(&(x[WS(vs, 5) + WS(rs, 4)]), ms, &(x[WS(vs, 5)]));	       T32 = VADD(T2R, T2S);	       T2P = VSUB(T2N, T2O);	       T3a = VADD(T32, T33);	       T2T = VSUB(T2R, T2S);	       T34 = VSUB(T32, T33);	  }	  {	       V T3k, T3l, T3A, T3o, T3p, T3z;	       T3k = LD(&(x[WS(vs, 6) + WS(rs, 2)]), ms, &(x[WS(vs, 6)]));	       T3l = LD(&(x[WS(vs, 6) + WS(rs, 6)]), ms, &(x[WS(vs, 6)]));	       T3A = VADD(T3k, T3l);	       T3o = LD(&(x[WS(vs, 6)]), ms, &(x[WS(vs, 6)]));	       T3p = LD(&(x[WS(vs, 6) + WS(rs, 4)]), ms, &(x[WS(vs, 6)]));	       T3z = VADD(T3o, T3p);	       T3m = VSUB(T3k, T3l);	       T3H = VADD(T3z, T3A);	       T3q = VSUB(T3o, T3p);	       T3B = VSUB(T3z, T3A);	  }	  {	       V T3, Tq, T6, Tr;	       {		    V T1, T2, T4, T5;		    T1 = LD(&(x[WS(rs, 1)]), ms, &(x[WS(rs, 1)]));		    T2 = LD(&(x[WS(rs, 5)]), ms, &(x[WS(rs, 1)]));		    T3 = VSUB(T1, T2);		    Tq = VADD(T1, T2);		    T4 = LD(&(x[WS(rs, 7)]), ms, &(x[WS(rs, 1)]));		    T5 = LD(&(x[WS(rs, 3)]), ms, &(x[WS(rs, 1)]));		    T6 = VSUB(T4, T5);		    Tr = VADD(T4, T5);	       }	       T7 = VMUL(LDK(KP707106781), VSUB(T3, T6));	       Tw = VADD(Tq, Tr);	       Tf = VMUL(LDK(KP707106781), VADD(T3, T6));	       Ts = VBYI(VSUB(Tq, Tr));	  }	  {	       V T1E, T21, T1H, T22;	       {		    V T1C, T1D, T1F, T1G;		    T1C = LD(&(x[WS(vs, 3) + WS(rs, 1)]), ms, &(x[WS(vs, 3) + WS(rs, 1)]));		    T1D = LD(&(x[WS(vs, 3) + WS(rs, 5)]), ms, &(x[WS(vs, 3) + WS(rs, 1)]));		    T1E = VSUB(T1C, T1D);		    T21 = VADD(T1C, T1D);		    T1F = LD(&(x[WS(vs, 3) + WS(rs, 7)]), ms, &(x[WS(vs, 3) + WS(rs, 1)]));		    T1G = LD(&(x[WS(vs, 3) + WS(rs, 3)]), ms, &(x[WS(vs, 3) + WS(rs, 1)]));		    T1H = VSUB(T1F, T1G);		    T22 = VADD(T1F, T1G);	       }	       T1I = VMUL(LDK(KP707106781), VSUB(T1E, T1H));	       T27 = VADD(T21, T22);	       T1Q = VMUL(LDK(KP707106781), VADD(T1E, T1H));	       T23 = VBYI(VSUB(T21, T22));	  }	  {	       V T2b, T2y, T2e, T2z;	       {		    V T29, T2a, T2c, T2d;		    T29 = LD(&(x[WS(vs, 4) + WS(rs, 1)]), ms, &(x[WS(vs, 4) + WS(rs, 1)]));		    T2a = LD(&(x[WS(vs, 4) + WS(rs, 5)]), ms, &(x[WS(vs, 4) + WS(rs, 1)]));		    T2b = VSUB(T29, T2a);		    T2y = VADD(T29, T2a);		    T2c = LD(&(x[WS(vs, 4) + WS(rs, 7)]), ms, &(x[WS(vs, 4) + WS(rs, 1)]));		    T2d = LD(&(x[WS(vs, 4) + WS(rs, 3)]), ms, &(x[WS(vs, 4) + WS(rs, 1)]));		    T2e = VSUB(T2c, T2d);		    T2z = VADD(T2c, T2d);

⌨️ 快捷键说明

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