81 #ifndef INCLUDED_volk_32i_x2_or_32i_a_H
82 #define INCLUDED_volk_32i_x2_or_32i_a_H
88 #include <xmmintrin.h>
92 const int32_t* bVector,
unsigned int num_points)
94 unsigned int number = 0;
95 const unsigned int quarterPoints = num_points / 4;
97 float* cPtr = (
float*)cVector;
98 const float* aPtr = (
float*)aVector;
99 const float* bPtr = (
float*)bVector;
101 __m128 aVal, bVal, cVal;
102 for(;number < quarterPoints; number++){
103 aVal = _mm_load_ps(aPtr);
104 bVal = _mm_load_ps(bPtr);
106 cVal = _mm_or_ps(aVal, bVal);
108 _mm_store_ps(cPtr,cVal);
115 number = quarterPoints * 4;
116 for(;number < num_points; number++){
117 cVector[number] = aVector[number] | bVector[number];
124 #include <arm_neon.h>
128 const int32_t* bVector,
unsigned int num_points)
133 unsigned int number = 0;
134 unsigned int quarter_points = num_points / 4;
136 int32x4_t a_val, b_val, c_val;
138 for(number = 0; number < quarter_points; number++){
139 a_val = vld1q_s32(aPtr);
140 b_val = vld1q_s32(bPtr);
141 c_val = vorrq_s32(a_val, b_val);
142 vst1q_s32(cPtr, c_val);
148 for(number = quarter_points * 4; number < num_points; number++){
149 *cPtr++ = (*aPtr++) | (*bPtr++);
155 #ifdef LV_HAVE_GENERIC
158 volk_32i_x2_or_32i_generic(
int32_t* cVector,
const int32_t* aVector,
159 const int32_t* bVector,
unsigned int num_points)
164 unsigned int number = 0;
166 for(number = 0; number < num_points; number++){
167 *cPtr++ = (*aPtr++) | (*bPtr++);
175 volk_32i_x2_or_32i_a_orc_impl(
int32_t* cVector,
const int32_t* aVector,
176 const int32_t* bVector,
unsigned int num_points);
179 volk_32i_x2_or_32i_u_orc(
int32_t* cVector,
const int32_t* aVector,
180 const int32_t* bVector,
unsigned int num_points)
182 volk_32i_x2_or_32i_a_orc_impl(cVector, aVector, bVector, num_points);
signed int int32_t
Definition: stdint.h:77