23 #ifndef INCLUDED_volk_32i_s32f_convert_32f_u_H
24 #define INCLUDED_volk_32i_s32f_convert_32f_u_H
30 #include <emmintrin.h>
40 static inline void volk_32i_s32f_convert_32f_u_sse2(
float* outputVector,
const int32_t* inputVector,
const float scalar,
unsigned int num_points){
41 unsigned int number = 0;
42 const unsigned int quarterPoints = num_points / 4;
44 float* outputVectorPtr = outputVector;
45 const float iScalar = 1.0 / scalar;
46 __m128 invScalar = _mm_set_ps1(iScalar);
51 for(;number < quarterPoints; number++){
54 inputVal = _mm_loadu_si128((__m128i*)inputPtr);
56 ret = _mm_cvtepi32_ps(inputVal);
57 ret = _mm_mul_ps(ret, invScalar);
59 _mm_storeu_ps(outputVectorPtr, ret);
65 number = quarterPoints * 4;
66 for(; number < num_points; number++){
67 outputVector[number] =((float)(inputVector[number])) * iScalar;
73 #ifdef LV_HAVE_GENERIC
82 static inline void volk_32i_s32f_convert_32f_generic(
float* outputVector,
const int32_t* inputVector,
const float scalar,
unsigned int num_points){
83 float* outputVectorPtr = outputVector;
84 const int32_t* inputVectorPtr = inputVector;
85 unsigned int number = 0;
86 const float iScalar = 1.0 / scalar;
88 for(number = 0; number < num_points; number++){
89 *outputVectorPtr++ = ((float)(*inputVectorPtr++)) * iScalar;
98 #ifndef INCLUDED_volk_32i_s32f_convert_32f_a_H
99 #define INCLUDED_volk_32i_s32f_convert_32f_a_H
105 #include <emmintrin.h>
114 static inline void volk_32i_s32f_convert_32f_a_sse2(
float* outputVector,
const int32_t* inputVector,
const float scalar,
unsigned int num_points){
115 unsigned int number = 0;
116 const unsigned int quarterPoints = num_points / 4;
118 float* outputVectorPtr = outputVector;
119 const float iScalar = 1.0 / scalar;
120 __m128 invScalar = _mm_set_ps1(iScalar);
125 for(;number < quarterPoints; number++){
128 inputVal = _mm_load_si128((__m128i*)inputPtr);
130 ret = _mm_cvtepi32_ps(inputVal);
131 ret = _mm_mul_ps(ret, invScalar);
133 _mm_store_ps(outputVectorPtr, ret);
135 outputVectorPtr += 4;
139 number = quarterPoints * 4;
140 for(; number < num_points; number++){
141 outputVector[number] =((float)(inputVector[number])) * iScalar;
147 #ifdef LV_HAVE_GENERIC
155 static inline void volk_32i_s32f_convert_32f_a_generic(
float* outputVector,
const int32_t* inputVector,
const float scalar,
unsigned int num_points){
156 float* outputVectorPtr = outputVector;
157 const int32_t* inputVectorPtr = inputVector;
158 unsigned int number = 0;
159 const float iScalar = 1.0 / scalar;
161 for(number = 0; number < num_points; number++){
162 *outputVectorPtr++ = ((float)(*inputVectorPtr++)) * iScalar;
signed int int32_t
Definition: stdint.h:77