diff options
author | Jukka Ojanen <jukka.ojanen@linkotec.net> | 2015-03-16 16:22:47 +0200 |
---|---|---|
committer | Jukka Ojanen <jukka.ojanen@linkotec.net> | 2015-03-16 16:22:47 +0200 |
commit | f869be2f8644d43d965a088850c28041b43a6eca (patch) | |
tree | af0b1acf10a2bf4a3b46cd977891907d58095b7e /src/ffts.c | |
parent | ee6ea4e982e6d4dd18cbe3703cfd24ae737e0ed1 (diff) | |
download | ffts-f869be2f8644d43d965a088850c28041b43a6eca.zip ffts-f869be2f8644d43d965a088850c28041b43a6eca.tar.gz |
Remove dead code
Diffstat (limited to 'src/ffts.c')
-rw-r--r-- | src/ffts.c | 145 |
1 files changed, 47 insertions, 98 deletions
@@ -56,22 +56,22 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #if defined(__arm__) && !defined(DYNAMIC_DISABLED) static const FFTS_ALIGN(64) float w_data[16] = { - 0.70710678118654757273731092936941f, - 0.70710678118654746171500846685376f, + 0.70710678118654757273731092936941f, + 0.70710678118654746171500846685376f, -0.70710678118654757273731092936941f, -0.70710678118654746171500846685376f, - 1.0f, - 0.70710678118654757273731092936941f, + 1.0f, + 0.70710678118654757273731092936941f, -0.0f, -0.70710678118654746171500846685376f, - 0.70710678118654757273731092936941f, - 0.70710678118654746171500846685376f, - 0.70710678118654757273731092936941f, - 0.70710678118654746171500846685376f, - 1.0f, - 0.70710678118654757273731092936941f, - 0.0f, - 0.70710678118654746171500846685376f + 0.70710678118654757273731092936941f, + 0.70710678118654746171500846685376f, + 0.70710678118654757273731092936941f, + 0.70710678118654746171500846685376f, + 1.0f, + 0.70710678118654757273731092936941f, + 0.0f, + 0.70710678118654746171500846685376f }; #endif @@ -199,15 +199,14 @@ void ffts_free_1d(ffts_plan_t *p) free(p); } -static int ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) +static int +ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) { V4SF MULI_SIGN; - int hardcoded; size_t lut_size; size_t n_luts; ffts_cpx_32f *w; - size_t i; - size_t n; + size_t i, n; if (sign < 0) { MULI_SIGN = V4SF_LIT4(-0.0f, 0.0f, -0.0f, 0.0f); @@ -217,13 +216,6 @@ static int ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) /* LUTS */ n_luts = ffts_ctzl(N / leaf_N); - if (N < 32) { - n_luts = ffts_ctzl(N / 4); - hardcoded = 1; - } else { - hardcoded = 0; - } - if (n_luts >= 32) { n_luts = 0; } @@ -231,20 +223,12 @@ static int ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) /* fprintf(stderr, "n_luts = %zu\n", n_luts); */ n = leaf_N * 2; - if (hardcoded) { - n = 8; - } lut_size = 0; - for (i = 0; i < n_luts; i++) { - if (!i || hardcoded) { + if (!i) { #if defined(__arm__) && !defined(DYNAMIC_DISABLED) - if (N <= 32) { - lut_size += n/4 * 2 * sizeof(ffts_cpx_32f); - } else { - lut_size += n/4 * sizeof(ffts_cpx_32f); - } + lut_size += n/4 * sizeof(ffts_cpx_32f); #else lut_size += n/4 * 2 * sizeof(ffts_cpx_32f); #endif @@ -259,8 +243,6 @@ static int ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) n *= 2; } - /* lut_size *= 16; */ - /* fprintf(stderr, "lut size = %zu\n", lut_size); */ if (n_luts) { @@ -276,11 +258,7 @@ static int ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) } w = p->ws; - n = leaf_N * 2; - if (hardcoded) { - n = 8; - } #ifdef HAVE_NEON V4SF neg = (sign < 0) ? V4SF_LIT4(0.0f, 0.0f, 0.0f, 0.0f) : V4SF_LIT4(-0.0f, -0.0f, -0.0f, -0.0f); @@ -290,61 +268,32 @@ static int ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) p->ws_is[i] = w - (ffts_cpx_32f*) p->ws; //fprintf(stderr, "LUT[%zu] = %d @ %08x - %zu\n", i, n, w, p->ws_is[i]); - if(!i || hardcoded) { + if (!i) { ffts_cpx_32f *w0 = FFTS_MALLOC(n/4 * sizeof(ffts_cpx_32f), 32); float *fw0 = (float*) w0; - float *fw = (float *)w; + float *fw = (float*) w; size_t j; for (j = 0; j < n/4; j++) { - w0[j][0] = W_re(n,j); - w0[j][1] = W_im(n,j); + w0[j][0] = W_re(n, j); + w0[j][1] = W_im(n, j); } #if defined(__arm__) && !defined(DYNAMIC_DISABLED) - if (N < 32) { - // w = FFTS_MALLOC(n/4 * 2 * sizeof(ffts_cpx_32f), 32); - float *fw = (float *)w; - V4SF temp0, temp1, temp2; - for (j=0; j<n/4; j+=2) { - // #ifdef HAVE_NEON - temp0 = V4SF_LD(fw0 + j*2); - V4SF re, im; - re = V4SF_DUPLICATE_RE(temp0); - im = V4SF_DUPLICATE_IM(temp0); -#ifdef HAVE_NEON - im = V4SF_XOR(im, MULI_SIGN); - //im = IMULI(sign>0, im); -#else - im = V4SF_MULI(sign>0, im); -#endif - V4SF_ST(fw + j*4 , re); - V4SF_ST(fw + j*4+4, im); - // #endif - } - w += n/4 * 2; - } else { - //w = FFTS_MALLOC(n/4 * sizeof(ffts_cpx_32f), 32); - float *fw = (float *)w; #ifdef HAVE_NEON - { - V4SF2 temp0, temp1, temp2; - for (j=0; j<n/4; j+=4) { - temp0 = V4SF2_LD(fw0 + j*2); - temp0.val[1] = V4SF_XOR(temp0.val[1], neg); - V4SF2_STORE_SPR(fw + j*2, temp0); - } - } + for (j = 0; j < n/4; j += 4) { + V4SF2 temp0 = V4SF2_LD(fw0 + j*2); + temp0.val[1] = V4SF_XOR(temp0.val[1], neg); + V4SF2_STORE_SPR(fw + j*2, temp0); + } #else - for (j=0; j<n/4; j+=1) { - fw[j*2] = fw0[j*2]; - fw[j*2+1] = (sign < 0) ? fw0[j*2+1] : -fw0[j*2+1]; - } -#endif - w += n/4; + for (j = 0; j < n/4; j++) { + fw[j*2+0] = fw0[j*2+0]; + fw[j*2+1] = (sign < 0) ? fw0[j*2+1] : -fw0[j*2+1]; } +#endif + w += n/4; #else - //w = FFTS_MALLOC(n/4 * 2 * sizeof(ffts_cpx_32f), 32); for (j = 0; j < n/4; j += 2) { V4SF re, im, temp0; temp0 = V4SF_LD(fw0 + j*2); @@ -369,7 +318,6 @@ static int ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) float *fw2 = (float*) w2; float *fw = (float *)w; - V4SF temp0, temp1, temp2, re, im; size_t j; for (j = 0; j < n/8; j++) { @@ -383,23 +331,24 @@ static int ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) #if defined(__arm__) && !defined(DYNAMIC_DISABLED) #ifdef HAVE_NEON - { - V4SF2 temp0, temp1, temp2; for (j = 0; j < n/8; j += 4) { + V4SF2 temp0, temp1, temp2; + temp0 = V4SF2_LD(fw0 + j*2); temp0.val[1] = V4SF_XOR(temp0.val[1], neg); V4SF2_STORE_SPR(fw + j*2*3, temp0); + temp1 = V4SF2_LD(fw1 + j*2); temp1.val[1] = V4SF_XOR(temp1.val[1], neg); V4SF2_STORE_SPR(fw + j*2*3 + 8, temp1); + temp2 = V4SF2_LD(fw2 + j*2); temp2.val[1] = V4SF_XOR(temp2.val[1], neg); V4SF2_STORE_SPR(fw + j*2*3 + 16, temp2); } - } #else - for (j = 0; j < n/8; j += 1) { - fw[j*6] = fw0[j*2]; + for (j = 0; j < n/8; j++) { + fw[j*6+0] = fw0[j*2+0]; fw[j*6+1] = (sign < 0) ? fw0[j*2+1] : -fw0[j*2+1]; fw[j*6+2] = fw1[j*2+0]; fw[j*6+3] = (sign < 0) ? fw1[j*2+1] : -fw1[j*2+1]; @@ -409,13 +358,14 @@ static int ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) #endif w += n/8 * 3; #else - //w = FFTS_MALLOC(n/8 * 3 * 2 * sizeof(ffts_cpx_32f), 32); for (j = 0; j < n/8; j += 2) { + V4SF temp0, temp1, temp2, re, im; + temp0 = V4SF_LD(fw0 + j*2); re = V4SF_DUPLICATE_RE(temp0); im = V4SF_DUPLICATE_IM(temp0); im = V4SF_XOR(im, MULI_SIGN); - V4SF_ST(fw + j*2*6 , re); + V4SF_ST(fw + j*2*6+0, re); V4SF_ST(fw + j*2*6+4, im); temp1 = V4SF_LD(fw1 + j*2); @@ -440,7 +390,6 @@ static int ffts_generate_luts(ffts_plan_t *p, size_t N, size_t leaf_N, int sign) FFTS_FREE(w1); FFTS_FREE(w2); } - ///p->ws[i] = w; n *= 2; } @@ -465,7 +414,8 @@ cleanup: return -1; } -ffts_plan_t *ffts_init_1d(size_t N, int sign) +ffts_plan_t* +ffts_init_1d(size_t N, int sign) { const size_t leaf_N = 8; ffts_plan_t *p; @@ -484,10 +434,10 @@ ffts_plan_t *ffts_init_1d(size_t N, int sign) p->N = N; if (N >= 32) { - /* generate lookup tables */ - if (ffts_generate_luts(p, N, leaf_N, sign)) { - goto cleanup; - } + /* generate lookup tables */ + if (ffts_generate_luts(p, N, leaf_N, sign)) { + goto cleanup; + } p->offsets = ffts_init_offsets(N, leaf_N); if (!p->offsets) { @@ -518,7 +468,7 @@ ffts_plan_t *ffts_init_1d(size_t N, int sign) } #else /* determinate transform size */ -#if defined(__arm__) && !defined(DYNAMIC_DISABLED) +#if defined(__arm__) if (N < 8192) { p->transform_size = 8192; } else { @@ -538,7 +488,6 @@ ffts_plan_t *ffts_init_1d(size_t N, int sign) goto cleanup; } - /* generate code */ p->transform = ffts_generate_func_code(p, N, leaf_N, sign); if (!p->transform) { |