53 #ifndef INCLUDED_volk_32f_convert_64f_u_H
54 #define INCLUDED_volk_32f_convert_64f_u_H
60 #include <immintrin.h>
63 const float* inputVector,
64 unsigned int num_points)
66 unsigned int number = 0;
68 const unsigned int quarterPoints = num_points / 4;
70 const float* inputVectorPtr = (
const float*)inputVector;
71 double* outputVectorPtr = outputVector;
75 for (; number < quarterPoints; number++) {
79 ret = _mm256_cvtps_pd(inputVal);
80 _mm256_storeu_pd(outputVectorPtr, ret);
85 number = quarterPoints * 4;
86 for (; number < num_points; number++) {
87 outputVector[number] = (double)(inputVector[number]);
94 #include <emmintrin.h>
97 const float* inputVector,
98 unsigned int num_points)
100 unsigned int number = 0;
102 const unsigned int quarterPoints = num_points / 4;
104 const float* inputVectorPtr = (
const float*)inputVector;
105 double* outputVectorPtr = outputVector;
109 for (; number < quarterPoints; number++) {
116 outputVectorPtr += 2;
123 outputVectorPtr += 2;
126 number = quarterPoints * 4;
127 for (; number < num_points; number++) {
128 outputVector[number] = (double)(inputVector[number]);
134 #ifdef LV_HAVE_GENERIC
137 const float* inputVector,
138 unsigned int num_points)
140 double* outputVectorPtr = outputVector;
141 const float* inputVectorPtr = inputVector;
142 unsigned int number = 0;
144 for (number = 0; number < num_points; number++) {
145 *outputVectorPtr++ = ((double)(*inputVectorPtr++));
154 #ifndef INCLUDED_volk_32f_convert_64f_a_H
155 #define INCLUDED_volk_32f_convert_64f_a_H
157 #include <inttypes.h>
161 #include <immintrin.h>
164 const float* inputVector,
165 unsigned int num_points)
167 unsigned int number = 0;
169 const unsigned int quarterPoints = num_points / 4;
171 const float* inputVectorPtr = (
const float*)inputVector;
172 double* outputVectorPtr = outputVector;
176 for (; number < quarterPoints; number++) {
180 ret = _mm256_cvtps_pd(inputVal);
181 _mm256_store_pd(outputVectorPtr, ret);
183 outputVectorPtr += 4;
186 number = quarterPoints * 4;
187 for (; number < num_points; number++) {
188 outputVector[number] = (double)(inputVector[number]);
194 #include <emmintrin.h>
197 const float* inputVector,
198 unsigned int num_points)
200 unsigned int number = 0;
202 const unsigned int quarterPoints = num_points / 4;
204 const float* inputVectorPtr = (
const float*)inputVector;
205 double* outputVectorPtr = outputVector;
209 for (; number < quarterPoints; number++) {
216 outputVectorPtr += 2;
223 outputVectorPtr += 2;
226 number = quarterPoints * 4;
227 for (; number < num_points; number++) {
228 outputVector[number] = (double)(inputVector[number]);
234 #ifdef LV_HAVE_GENERIC
237 const float* inputVector,
238 unsigned int num_points)
240 double* outputVectorPtr = outputVector;
241 const float* inputVectorPtr = inputVector;
242 unsigned int number = 0;
244 for (number = 0; number < num_points; number++) {
245 *outputVectorPtr++ = ((double)(*inputVectorPtr++));
float32x4_t __m128
Definition: sse2neon.h:235
FORCE_INLINE __m128d _mm_cvtps_pd(__m128 a)
Definition: sse2neon.h:4096
FORCE_INLINE __m128 _mm_movehl_ps(__m128 __A, __m128 __B)
Definition: sse2neon.h:2132
float32x4_t __m128d
Definition: sse2neon.h:242
FORCE_INLINE void _mm_storeu_pd(double *mem_addr, __m128d a)
Definition: sse2neon.h:6003
FORCE_INLINE __m128 _mm_loadu_ps(const float *p)
Definition: sse2neon.h:1941
FORCE_INLINE void _mm_store_pd(double *mem_addr, __m128d a)
Definition: sse2neon.h:5897
FORCE_INLINE __m128 _mm_load_ps(const float *p)
Definition: sse2neon.h:1858
static void volk_32f_convert_64f_a_generic(double *outputVector, const float *inputVector, unsigned int num_points)
Definition: volk_32f_convert_64f.h:236
static void volk_32f_convert_64f_u_sse2(double *outputVector, const float *inputVector, unsigned int num_points)
Definition: volk_32f_convert_64f.h:96
static void volk_32f_convert_64f_a_avx(double *outputVector, const float *inputVector, unsigned int num_points)
Definition: volk_32f_convert_64f.h:163
static void volk_32f_convert_64f_a_sse2(double *outputVector, const float *inputVector, unsigned int num_points)
Definition: volk_32f_convert_64f.h:196
static void volk_32f_convert_64f_generic(double *outputVector, const float *inputVector, unsigned int num_points)
Definition: volk_32f_convert_64f.h:136
static void volk_32f_convert_64f_u_avx(double *outputVector, const float *inputVector, unsigned int num_points)
Definition: volk_32f_convert_64f.h:62