1 #ifndef INCLUDED_volk_32fc_deinterleave_real_64f_a_H
2 #define INCLUDED_volk_32fc_deinterleave_real_64f_a_H
15 static inline void volk_32fc_deinterleave_real_64f_a_sse2(
double* iBuffer,
const lv_32fc_t* complexVector,
unsigned int num_points){
16 unsigned int number = 0;
18 const float* complexVectorPtr = (
float*)complexVector;
19 double* iBufferPtr = iBuffer;
21 const unsigned int halfPoints = num_points / 2;
22 __m128 cplxValue, fVal;
24 for(;number < halfPoints; number++){
26 cplxValue = _mm_load_ps(complexVectorPtr);
27 complexVectorPtr += 4;
30 fVal = _mm_shuffle_ps(cplxValue, cplxValue, _MM_SHUFFLE(2,0,2,0));
31 dVal = _mm_cvtps_pd(fVal);
32 _mm_store_pd(iBufferPtr, dVal);
37 number = halfPoints * 2;
38 for(; number < num_points; number++){
39 *iBufferPtr++ = (double)*complexVectorPtr++;
45 #ifdef LV_HAVE_GENERIC
52 static inline void volk_32fc_deinterleave_real_64f_generic(
double* iBuffer,
const lv_32fc_t* complexVector,
unsigned int num_points){
53 unsigned int number = 0;
54 const float* complexVectorPtr = (
float*)complexVector;
55 double* iBufferPtr = iBuffer;
56 for(number = 0; number < num_points; number++){
57 *iBufferPtr++ = (double)*complexVectorPtr++;
float complex lv_32fc_t
Definition: volk_complex.h:56