66 #ifndef INCLUDED_volk_32f_convert_64f_u_H
67 #define INCLUDED_volk_32f_convert_64f_u_H
73 #include <immintrin.h>
76 const float* inputVector,
77 unsigned int num_points)
79 unsigned int number = 0;
81 const unsigned int quarterPoints = num_points / 4;
83 const float* inputVectorPtr = (
const float*)inputVector;
84 double* outputVectorPtr = outputVector;
88 for (; number < quarterPoints; number++) {
89 inputVal = _mm_loadu_ps(inputVectorPtr);
92 ret = _mm256_cvtps_pd(inputVal);
93 _mm256_storeu_pd(outputVectorPtr, ret);
98 number = quarterPoints * 4;
99 for (; number < num_points; number++) {
100 outputVector[number] = (double)(inputVector[number]);
107 #include <emmintrin.h>
110 const float* inputVector,
111 unsigned int num_points)
113 unsigned int number = 0;
115 const unsigned int quarterPoints = num_points / 4;
117 const float* inputVectorPtr = (
const float*)inputVector;
118 double* outputVectorPtr = outputVector;
122 for (; number < quarterPoints; number++) {
123 inputVal = _mm_loadu_ps(inputVectorPtr);
126 ret = _mm_cvtps_pd(inputVal);
128 _mm_storeu_pd(outputVectorPtr, ret);
129 outputVectorPtr += 2;
131 inputVal = _mm_movehl_ps(inputVal, inputVal);
133 ret = _mm_cvtps_pd(inputVal);
135 _mm_storeu_pd(outputVectorPtr, ret);
136 outputVectorPtr += 2;
139 number = quarterPoints * 4;
140 for (; number < num_points; number++) {
141 outputVector[number] = (double)(inputVector[number]);
147 #ifdef LV_HAVE_GENERIC
150 const float* inputVector,
151 unsigned int num_points)
153 double* outputVectorPtr = outputVector;
154 const float* inputVectorPtr = inputVector;
155 unsigned int number = 0;
157 for (number = 0; number < num_points; number++) {
158 *outputVectorPtr++ = ((double)(*inputVectorPtr++));
167 #ifndef INCLUDED_volk_32f_convert_64f_a_H
168 #define INCLUDED_volk_32f_convert_64f_a_H
170 #include <inttypes.h>
174 #include <immintrin.h>
177 const float* inputVector,
178 unsigned int num_points)
180 unsigned int number = 0;
182 const unsigned int quarterPoints = num_points / 4;
184 const float* inputVectorPtr = (
const float*)inputVector;
185 double* outputVectorPtr = outputVector;
189 for (; number < quarterPoints; number++) {
190 inputVal = _mm_load_ps(inputVectorPtr);
193 ret = _mm256_cvtps_pd(inputVal);
194 _mm256_store_pd(outputVectorPtr, ret);
196 outputVectorPtr += 4;
199 number = quarterPoints * 4;
200 for (; number < num_points; number++) {
201 outputVector[number] = (double)(inputVector[number]);
207 #include <emmintrin.h>
210 const float* inputVector,
211 unsigned int num_points)
213 unsigned int number = 0;
215 const unsigned int quarterPoints = num_points / 4;
217 const float* inputVectorPtr = (
const float*)inputVector;
218 double* outputVectorPtr = outputVector;
222 for (; number < quarterPoints; number++) {
223 inputVal = _mm_load_ps(inputVectorPtr);
226 ret = _mm_cvtps_pd(inputVal);
228 _mm_store_pd(outputVectorPtr, ret);
229 outputVectorPtr += 2;
231 inputVal = _mm_movehl_ps(inputVal, inputVal);
233 ret = _mm_cvtps_pd(inputVal);
235 _mm_store_pd(outputVectorPtr, ret);
236 outputVectorPtr += 2;
239 number = quarterPoints * 4;
240 for (; number < num_points; number++) {
241 outputVector[number] = (double)(inputVector[number]);
247 #ifdef LV_HAVE_GENERIC
250 const float* inputVector,
251 unsigned int num_points)
253 double* outputVectorPtr = outputVector;
254 const float* inputVectorPtr = inputVector;
255 unsigned int number = 0;
257 for (number = 0; number < num_points; number++) {
258 *outputVectorPtr++ = ((double)(*inputVectorPtr++));