comparison _peck_fft_guts.h @ 4:2d6c49fcafcb

neon2 and neon4 support
author Peter Meerwald <p.meerwald@bct-electronic.com>
date Fri, 16 Sep 2011 14:04:19 +0200
parents 723f588b82ac
children fee54f1878f7
comparison
equal deleted inserted replaced
3:3b31bd44a09f 4:2d6c49fcafcb
123 (res).r -= (a).r; (res).i -= (a).i; \ 123 (res).r -= (a).r; (res).i -= (a).i; \
124 }while(0) 124 }while(0)
125 125
126 126
127 #ifdef FIXED_POINT 127 #ifdef FIXED_POINT
128 # define PECK_FFT_COS(phase) floor(.5+SAMP_MAX * cos (phase)) 128 #define PECK_FFT_COS(phase) floorf(0.5f+SAMP_MAX * cosf(phase))
129 # define PECK_FFT_SIN(phase) floor(.5+SAMP_MAX * sin (phase)) 129 #define PECK_FFT_SIN(phase) floorf(0.5f+SAMP_MAX * sinf(phase))
130 # define HALF_OF(x) ((x)>>1) 130 #define HALF_OF(x) ((x)>>1)
131 #elif defined(USE_SIMD) 131 #elif USE_SIMD == SIMD_SSE2
132 # define PECK_FFT_COS(phase) _mm_set1_ps( cos(phase) ) 132 #define PECK_FFT_COS(phase) _mm_set1_ps(cosf(phase))
133 # define PECK_FFT_SIN(phase) _mm_set1_ps( sin(phase) ) 133 #define PECK_FFT_SIN(phase) _mm_set1_ps(sinf(phase))
134 # define HALF_OF(x) ((x)*_mm_set1_ps(.5)) 134 #define HALF_OF(x) ((x)*_mm_set1_ps(0.5f))
135 #elif USE_SIMD == SIMD_NEON4
136 #define PECK_FFT_COS(phase) vdupq_n_f32(cosf(phase))
137 #define PECK_FFT_SIN(phase) vdupq_n_f32(sinf(phase))
138 #define HALF_OF(x) ((x)*vdupq_n_f32(0.5f))
139 #elif USE_SIMD == SIMD_NEON2
140 #define PECK_FFT_COS(phase) vdup_n_f32(cosf(phase))
141 #define PECK_FFT_SIN(phase) vdup_n_f32(sinf(phase))
142 #define HALF_OF(x) ((x)*vdup_n_f32(0.5f))
135 #else 143 #else
136 # define PECK_FFT_COS(phase) (peck_fft_scalar) cos(phase) 144 #define PECK_FFT_COS(phase) (peck_fft_scalar) cosf(phase)
137 # define PECK_FFT_SIN(phase) (peck_fft_scalar) sin(phase) 145 #define PECK_FFT_SIN(phase) (peck_fft_scalar) sinf(phase)
138 # define HALF_OF(x) ((x)*.5) 146 #define HALF_OF(x) ((x)*0.5f)
139 #endif 147 #endif
140 148
141 #define kf_cexp(x,phase) \ 149 #define kf_cexp(x,phase) \
142 do{ \ 150 do{ \
143 (x)->r = PECK_FFT_COS(phase);\ 151 (x)->r = PECK_FFT_COS(phase);\

Repositories maintained by Peter Meerwald, pmeerw@pmeerw.net.