📄 q1bv_8.c
字号:
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 + -