64#ifndef INCLUDED_volk_32i_s32f_convert_32f_u_H
65#define INCLUDED_volk_32i_s32f_convert_32f_u_H
73static inline void volk_32i_s32f_convert_32f_u_avx512f(
float* outputVector,
74 const int32_t* inputVector,
76 unsigned int num_points)
78 unsigned int number = 0;
79 const unsigned int onesixteenthPoints = num_points / 16;
81 float* outputVectorPtr = outputVector;
82 const float iScalar = 1.0 / scalar;
83 __m512 invScalar = _mm512_set1_ps(iScalar);
84 int32_t* inputPtr = (int32_t*)inputVector;
88 for (; number < onesixteenthPoints; number++) {
90 inputVal = _mm512_loadu_si512((__m512i*)inputPtr);
92 ret = _mm512_cvtepi32_ps(inputVal);
93 ret = _mm512_mul_ps(ret, invScalar);
95 _mm512_storeu_ps(outputVectorPtr, ret);
97 outputVectorPtr += 16;
101 number = onesixteenthPoints * 16;
102 for (; number < num_points; number++) {
103 outputVector[number] = ((float)(inputVector[number])) * iScalar;
110#include <immintrin.h>
112static inline void volk_32i_s32f_convert_32f_u_avx2(
float* outputVector,
113 const int32_t* inputVector,
115 unsigned int num_points)
117 unsigned int number = 0;
118 const unsigned int oneEightPoints = num_points / 8;
120 float* outputVectorPtr = outputVector;
121 const float iScalar = 1.0 / scalar;
122 __m256 invScalar = _mm256_set1_ps(iScalar);
123 int32_t* inputPtr = (int32_t*)inputVector;
127 for (; number < oneEightPoints; number++) {
129 inputVal = _mm256_loadu_si256((__m256i*)inputPtr);
131 ret = _mm256_cvtepi32_ps(inputVal);
132 ret = _mm256_mul_ps(ret, invScalar);
134 _mm256_storeu_ps(outputVectorPtr, ret);
136 outputVectorPtr += 8;
140 number = oneEightPoints * 8;
141 for (; number < num_points; number++) {
142 outputVector[number] = ((float)(inputVector[number])) * iScalar;
149#include <emmintrin.h>
152 const int32_t* inputVector,
154 unsigned int num_points)
156 unsigned int number = 0;
157 const unsigned int quarterPoints = num_points / 4;
159 float* outputVectorPtr = outputVector;
160 const float iScalar = 1.0 / scalar;
161 __m128 invScalar = _mm_set_ps1(iScalar);
162 int32_t* inputPtr = (int32_t*)inputVector;
166 for (; number < quarterPoints; number++) {
168 inputVal = _mm_loadu_si128((__m128i*)inputPtr);
170 ret = _mm_cvtepi32_ps(inputVal);
171 ret = _mm_mul_ps(ret, invScalar);
173 _mm_storeu_ps(outputVectorPtr, ret);
175 outputVectorPtr += 4;
179 number = quarterPoints * 4;
180 for (; number < num_points; number++) {
181 outputVector[number] = ((float)(inputVector[number])) * iScalar;
187#ifdef LV_HAVE_GENERIC
190 const int32_t* inputVector,
192 unsigned int num_points)
194 float* outputVectorPtr = outputVector;
195 const int32_t* inputVectorPtr = inputVector;
196 unsigned int number = 0;
197 const float iScalar = 1.0 / scalar;
199 for (number = 0; number < num_points; number++) {
200 *outputVectorPtr++ = ((float)(*inputVectorPtr++)) * iScalar;
208#ifndef INCLUDED_volk_32i_s32f_convert_32f_a_H
209#define INCLUDED_volk_32i_s32f_convert_32f_a_H
214#ifdef LV_HAVE_AVX512F
215#include <immintrin.h>
217static inline void volk_32i_s32f_convert_32f_a_avx512f(
float* outputVector,
218 const int32_t* inputVector,
220 unsigned int num_points)
222 unsigned int number = 0;
223 const unsigned int onesixteenthPoints = num_points / 16;
225 float* outputVectorPtr = outputVector;
226 const float iScalar = 1.0 / scalar;
227 __m512 invScalar = _mm512_set1_ps(iScalar);
228 int32_t* inputPtr = (int32_t*)inputVector;
232 for (; number < onesixteenthPoints; number++) {
234 inputVal = _mm512_load_si512((__m512i*)inputPtr);
236 ret = _mm512_cvtepi32_ps(inputVal);
237 ret = _mm512_mul_ps(ret, invScalar);
239 _mm512_store_ps(outputVectorPtr, ret);
241 outputVectorPtr += 16;
245 number = onesixteenthPoints * 16;
246 for (; number < num_points; number++) {
247 outputVector[number] = ((float)(inputVector[number])) * iScalar;
253#include <immintrin.h>
255static inline void volk_32i_s32f_convert_32f_a_avx2(
float* outputVector,
256 const int32_t* inputVector,
258 unsigned int num_points)
260 unsigned int number = 0;
261 const unsigned int oneEightPoints = num_points / 8;
263 float* outputVectorPtr = outputVector;
264 const float iScalar = 1.0 / scalar;
265 __m256 invScalar = _mm256_set1_ps(iScalar);
266 int32_t* inputPtr = (int32_t*)inputVector;
270 for (; number < oneEightPoints; number++) {
272 inputVal = _mm256_load_si256((__m256i*)inputPtr);
274 ret = _mm256_cvtepi32_ps(inputVal);
275 ret = _mm256_mul_ps(ret, invScalar);
277 _mm256_store_ps(outputVectorPtr, ret);
279 outputVectorPtr += 8;
283 number = oneEightPoints * 8;
284 for (; number < num_points; number++) {
285 outputVector[number] = ((float)(inputVector[number])) * iScalar;
292#include <emmintrin.h>
295 const int32_t* inputVector,
297 unsigned int num_points)
299 unsigned int number = 0;
300 const unsigned int quarterPoints = num_points / 4;
302 float* outputVectorPtr = outputVector;
303 const float iScalar = 1.0 / scalar;
304 __m128 invScalar = _mm_set_ps1(iScalar);
305 int32_t* inputPtr = (int32_t*)inputVector;
309 for (; number < quarterPoints; number++) {
311 inputVal = _mm_load_si128((__m128i*)inputPtr);
313 ret = _mm_cvtepi32_ps(inputVal);
314 ret = _mm_mul_ps(ret, invScalar);
316 _mm_store_ps(outputVectorPtr, ret);
318 outputVectorPtr += 4;
322 number = quarterPoints * 4;
323 for (; number < num_points; number++) {
324 outputVector[number] = ((float)(inputVector[number])) * iScalar;
330#ifdef LV_HAVE_GENERIC
333 const int32_t* inputVector,
335 unsigned int num_points)
337 float* outputVectorPtr = outputVector;
338 const int32_t* inputVectorPtr = inputVector;
339 unsigned int number = 0;
340 const float iScalar = 1.0 / scalar;
342 for (number = 0; number < num_points; number++) {
343 *outputVectorPtr++ = ((float)(*inputVectorPtr++)) * iScalar;
static void volk_32i_s32f_convert_32f_a_generic(float *outputVector, const int32_t *inputVector, const float scalar, unsigned int num_points)
Definition: volk_32i_s32f_convert_32f.h:332
static void volk_32i_s32f_convert_32f_u_sse2(float *outputVector, const int32_t *inputVector, const float scalar, unsigned int num_points)
Definition: volk_32i_s32f_convert_32f.h:151
static void volk_32i_s32f_convert_32f_a_sse2(float *outputVector, const int32_t *inputVector, const float scalar, unsigned int num_points)
Definition: volk_32i_s32f_convert_32f.h:294
static void volk_32i_s32f_convert_32f_generic(float *outputVector, const int32_t *inputVector, const float scalar, unsigned int num_points)
Definition: volk_32i_s32f_convert_32f.h:189