1 #ifndef INCLUDED_volk_32fc_deinterleave_real_32f_a_H
2 #define INCLUDED_volk_32fc_deinterleave_real_32f_a_H
15 static inline void volk_32fc_deinterleave_real_32f_a_sse(
float* iBuffer,
const lv_32fc_t* complexVector,
unsigned int num_points){
16 unsigned int number = 0;
17 const unsigned int quarterPoints = num_points / 4;
19 const float* complexVectorPtr = (
const float*)complexVector;
20 float* iBufferPtr = iBuffer;
22 __m128 cplxValue1, cplxValue2, iValue;
23 for(;number < quarterPoints; number++){
25 cplxValue1 = _mm_load_ps(complexVectorPtr);
26 complexVectorPtr += 4;
28 cplxValue2 = _mm_load_ps(complexVectorPtr);
29 complexVectorPtr += 4;
32 iValue = _mm_shuffle_ps(cplxValue1, cplxValue2, _MM_SHUFFLE(2,0,2,0));
34 _mm_store_ps(iBufferPtr, iValue);
39 number = quarterPoints * 4;
40 for(; number < num_points; number++){
41 *iBufferPtr++ = *complexVectorPtr++;
47 #ifdef LV_HAVE_GENERIC
54 static inline void volk_32fc_deinterleave_real_32f_generic(
float* iBuffer,
const lv_32fc_t* complexVector,
unsigned int num_points){
55 unsigned int number = 0;
56 const float* complexVectorPtr = (
float*)complexVector;
57 float* iBufferPtr = iBuffer;
58 for(number = 0; number < num_points; number++){
59 *iBufferPtr++ = *complexVectorPtr++;
float complex lv_32fc_t
Definition: volk_complex.h:56