1 #ifndef INCLUDED_volk_16u_byteswap_a_H
2 #define INCLUDED_volk_16u_byteswap_a_H
15 static inline void volk_16u_byteswap_a_sse2(
uint16_t* intsToSwap,
unsigned int num_points){
16 unsigned int number = 0;
18 __m128i input, left, right, output;
20 const unsigned int eighthPoints = num_points / 8;
21 for(;number < eighthPoints; number++){
23 input = _mm_load_si128((__m128i*)inputPtr);
25 left = _mm_slli_epi16(input, 8);
26 right = _mm_srli_epi16(input, 8);
28 output = _mm_or_si128(left, right);
30 _mm_store_si128((__m128i*)inputPtr, output);
36 number = eighthPoints*8;
37 for(; number < num_points; number++){
39 outputVal = (((outputVal >> 8) & 0xff) | ((outputVal << 8) & 0xff00));
40 *inputPtr = outputVal;
46 #ifdef LV_HAVE_GENERIC
52 static inline void volk_16u_byteswap_a_generic(
uint16_t* intsToSwap,
unsigned int num_points){
55 for(point = 0; point < num_points; point++){
57 output = (((output >> 8) & 0xff) | ((output << 8) & 0xff00));
70 extern void volk_16u_byteswap_a_orc_impl(
uint16_t* intsToSwap,
unsigned int num_points);
71 static inline void volk_16u_byteswap_a_orc(
uint16_t* intsToSwap,
unsigned int num_points){
72 volk_16u_byteswap_a_orc_impl(intsToSwap, num_points);