mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-01-29 02:14:51 +00:00
Add AVX2
This commit is contained in:
parent
6d216fa5a1
commit
eecfa6c582
@ -60,35 +60,35 @@
|
||||
#include <volk_gnsssdr/volk_gnsssdr_complex.h>
|
||||
|
||||
|
||||
//#ifdef LV_HAVE_AVX2
|
||||
//#include <immintrin.h>
|
||||
//
|
||||
//static inline void volk_gnsssdr_16ic_conjugate_16ic_u_avx2(lv_16sc_t* cVector, const lv_16sc_t* aVector, unsigned int num_points)
|
||||
//{
|
||||
// const unsigned int avx2_iters = num_points / 16;
|
||||
// unsigned int i;
|
||||
// lv_16sc_t* c = cVector;
|
||||
// const lv_16sc_t* a = aVector;
|
||||
//
|
||||
// __m256i tmp;
|
||||
// __m256i conjugator = _mm256_setr_epi8(1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1);
|
||||
//
|
||||
// for (i = 0; i < avx2_iters; ++i)
|
||||
// {
|
||||
// tmp = _mm256_loadu_si256((__m256i*)a);
|
||||
// tmp = _mm256_sign_epi8(tmp, conjugator);
|
||||
// _mm256_storeu_si256((__m256i*)c, tmp);
|
||||
//
|
||||
// a += 16;
|
||||
// c += 16;
|
||||
// }
|
||||
//
|
||||
// for (i = avx2_iters * 16; i < num_points; ++i)
|
||||
// {
|
||||
// *c++ = lv_conj(*a++);
|
||||
// }
|
||||
//}
|
||||
//#endif /* LV_HAVE_AVX2 */
|
||||
#ifdef LV_HAVE_AVX2
|
||||
#include <immintrin.h>
|
||||
|
||||
static inline void volk_gnsssdr_16ic_conjugate_16ic_u_avx2(lv_16sc_t* cVector, const lv_16sc_t* aVector, unsigned int num_points)
|
||||
{
|
||||
const unsigned int avx2_iters = num_points / 8;
|
||||
unsigned int i;
|
||||
lv_16sc_t* c = cVector;
|
||||
const lv_16sc_t* a = aVector;
|
||||
|
||||
__m256i tmp;
|
||||
__m256i conjugator = _mm256_setr_epi16(1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1);
|
||||
|
||||
for (i = 0; i < avx2_iters; ++i)
|
||||
{
|
||||
tmp = _mm256_loadu_si256((__m256i*)a);
|
||||
tmp = _mm256_sign_epi16(tmp, conjugator);
|
||||
_mm256_storeu_si256((__m256i*)c, tmp);
|
||||
|
||||
a += 8;
|
||||
c += 8;
|
||||
}
|
||||
|
||||
for (i = avx2_iters * 8; i < num_points; ++i)
|
||||
{
|
||||
*c++ = lv_conj(*a++);
|
||||
}
|
||||
}
|
||||
#endif /* LV_HAVE_AVX2 */
|
||||
|
||||
|
||||
//#ifdef LV_HAVE_AVX
|
||||
@ -249,35 +249,36 @@ static inline void volk_gnsssdr_16ic_conjugate_16ic_generic(lv_16sc_t* cVector,
|
||||
//#endif /* LV_HAVE_AVX */
|
||||
//
|
||||
//
|
||||
//#ifdef LV_HAVE_AVX2
|
||||
//#include <immintrin.h>
|
||||
//
|
||||
//static inline void volk_gnsssdr_16ic_conjugate_16ic_a_avx2(lv_16sc_t* cVector, const lv_16sc_t* aVector, unsigned int num_points)
|
||||
//{
|
||||
// const unsigned int avx2_iters = num_points / 16;
|
||||
// unsigned int i;
|
||||
// lv_16sc_t* c = cVector;
|
||||
// const lv_16sc_t* a = aVector;
|
||||
//
|
||||
// __m256i tmp;
|
||||
// __m256i conjugator = _mm256_setr_epi8(1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1);
|
||||
//
|
||||
// for (i = 0; i < avx2_iters; ++i)
|
||||
// {
|
||||
// tmp = _mm256_load_si256((__m256i*)a);
|
||||
// tmp = _mm256_sign_epi8(tmp, conjugator);
|
||||
// _mm256_store_si256((__m256i*)c, tmp);
|
||||
//
|
||||
// a += 16;
|
||||
// c += 16;
|
||||
// }
|
||||
//
|
||||
// for (i = avx2_iters * 16; i < num_points; ++i)
|
||||
// {
|
||||
// *c++ = lv_conj(*a++);
|
||||
// }
|
||||
//}
|
||||
//#endif /* LV_HAVE_AVX2 */
|
||||
#ifdef LV_HAVE_AVX2
|
||||
#include <immintrin.h>
|
||||
|
||||
static inline void volk_gnsssdr_16ic_conjugate_16ic_a_avx2(lv_16sc_t* cVector, const lv_16sc_t* aVector, unsigned int num_points)
|
||||
{
|
||||
const unsigned int avx2_iters = num_points / 8;
|
||||
unsigned int i;
|
||||
lv_16sc_t* c = cVector;
|
||||
const lv_16sc_t* a = aVector;
|
||||
|
||||
__m256i tmp;
|
||||
__m256i conjugator = _mm256_setr_epi16(1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1);
|
||||
|
||||
for (i = 0; i < avx2_iters; ++i)
|
||||
{
|
||||
tmp = _mm256_load_si256((__m256i*)a);
|
||||
tmp = _mm256_sign_epi16(tmp, conjugator);
|
||||
_mm256_store_si256((__m256i*)c, tmp);
|
||||
|
||||
a += 8;
|
||||
c += 8;
|
||||
}
|
||||
|
||||
for (i = avx2_iters * 8; i < num_points; ++i)
|
||||
{
|
||||
*c++ = lv_conj(*a++);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* LV_HAVE_AVX2 */
|
||||
//
|
||||
//
|
||||
#ifdef LV_HAVE_SSSE3
|
||||
|
Loading…
Reference in New Issue
Block a user