1 #ifndef INCLUDED_volk_8i_convert_16i_a_H
2 #define INCLUDED_volk_8i_convert_16i_a_H
16 static inline void volk_8i_convert_16i_a_sse4_1(
int16_t* outputVector,
const int8_t* inputVector,
unsigned int num_points){
17 unsigned int number = 0;
18 const unsigned int sixteenthPoints = num_points / 16;
20 const __m128i* inputVectorPtr = (
const __m128i*)inputVector;
21 __m128i* outputVectorPtr = (__m128i*)outputVector;
25 for(;number < sixteenthPoints; number++){
26 inputVal = _mm_load_si128(inputVectorPtr);
27 ret = _mm_cvtepi8_epi16(inputVal);
28 ret = _mm_slli_epi16(ret, 8);
29 _mm_store_si128(outputVectorPtr, ret);
33 inputVal = _mm_srli_si128(inputVal, 8);
34 ret = _mm_cvtepi8_epi16(inputVal);
35 ret = _mm_slli_epi16(ret, 8);
36 _mm_store_si128(outputVectorPtr, ret);
43 number = sixteenthPoints * 16;
44 for(; number < num_points; number++){
45 outputVector[number] = (
int16_t)(inputVector[number])*256;
50 #ifdef LV_HAVE_GENERIC
57 static inline void volk_8i_convert_16i_a_generic(
int16_t* outputVector,
const int8_t* inputVector,
unsigned int num_points){
58 int16_t* outputVectorPtr = outputVector;
59 const int8_t* inputVectorPtr = inputVector;
60 unsigned int number = 0;
62 for(number = 0; number < num_points; number++){
63 *outputVectorPtr++ = ((
int16_t)(*inputVectorPtr++)) * 256;
75 extern void volk_8i_convert_16i_a_orc_impl(
int16_t* outputVector,
const int8_t* inputVector,
unsigned int num_points);
76 static inline void volk_8i_convert_16i_a_orc(
int16_t* outputVector,
const int8_t* inputVector,
unsigned int num_points){
77 volk_8i_convert_16i_a_orc_impl(outputVector, inputVector, num_points);