|
|
|
@ -54,7 +54,7 @@ void srslte_vec_xor_bbb_simd(const int8_t *x, const int8_t *y, int8_t *z, const
|
|
|
|
|
simd_b_t a = srslte_simd_b_loadu(&x[i]);
|
|
|
|
|
simd_b_t b = srslte_simd_b_loadu(&y[i]);
|
|
|
|
|
|
|
|
|
|
simd_s_t r = srslte_simd_b_xor(a, b);
|
|
|
|
|
simd_b_t r = srslte_simd_b_xor(a, b);
|
|
|
|
|
|
|
|
|
|
srslte_simd_b_storeu(&z[i], r);
|
|
|
|
|
}
|
|
|
|
@ -167,19 +167,19 @@ void srslte_vec_sub_bbb_simd(const int8_t *x, const int8_t *y, int8_t *z, const
|
|
|
|
|
#if SRSLTE_SIMD_B_SIZE
|
|
|
|
|
if (SRSLTE_IS_ALIGNED(x) && SRSLTE_IS_ALIGNED(y) && SRSLTE_IS_ALIGNED(z)) {
|
|
|
|
|
for (; i < len - SRSLTE_SIMD_B_SIZE + 1; i += SRSLTE_SIMD_B_SIZE) {
|
|
|
|
|
simd_s_t a = srslte_simd_b_load(&x[i]);
|
|
|
|
|
simd_s_t b = srslte_simd_b_load(&y[i]);
|
|
|
|
|
simd_b_t a = srslte_simd_b_load(&x[i]);
|
|
|
|
|
simd_b_t b = srslte_simd_b_load(&y[i]);
|
|
|
|
|
|
|
|
|
|
simd_s_t r = srslte_simd_b_sub(a, b);
|
|
|
|
|
simd_b_t r = srslte_simd_b_sub(a, b);
|
|
|
|
|
|
|
|
|
|
srslte_simd_b_store(&z[i], r);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
for (; i < len - SRSLTE_SIMD_S_SIZE + 1; i += SRSLTE_SIMD_S_SIZE) {
|
|
|
|
|
simd_s_t a = srslte_simd_b_loadu(&x[i]);
|
|
|
|
|
simd_s_t b = srslte_simd_b_loadu(&y[i]);
|
|
|
|
|
simd_b_t a = srslte_simd_b_loadu(&x[i]);
|
|
|
|
|
simd_b_t b = srslte_simd_b_loadu(&y[i]);
|
|
|
|
|
|
|
|
|
|
simd_s_t r = srslte_simd_b_sub(a, b);
|
|
|
|
|
simd_b_t r = srslte_simd_b_sub(a, b);
|
|
|
|
|
|
|
|
|
|
srslte_simd_b_storeu(&z[i], r);
|
|
|
|
|
}
|
|
|
|
@ -222,6 +222,8 @@ void srslte_vec_prod_sss_simd(const int16_t *x, const int16_t *y, int16_t *z, co
|
|
|
|
|
|
|
|
|
|
void srslte_vec_neg_sss_simd(const int16_t *x, const int16_t *y, int16_t *z, const int len) {
|
|
|
|
|
int i = 0;
|
|
|
|
|
|
|
|
|
|
#ifndef HAVE_NEON
|
|
|
|
|
#if SRSLTE_SIMD_S_SIZE
|
|
|
|
|
if (SRSLTE_IS_ALIGNED(x) && SRSLTE_IS_ALIGNED(y) && SRSLTE_IS_ALIGNED(z)) {
|
|
|
|
|
for (; i < len - SRSLTE_SIMD_S_SIZE + 1; i += SRSLTE_SIMD_S_SIZE) {
|
|
|
|
@ -243,6 +245,7 @@ void srslte_vec_neg_sss_simd(const int16_t *x, const int16_t *y, int16_t *z, con
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif /* SRSLTE_SIMD_S_SIZE */
|
|
|
|
|
#endif /* NOT HAVE_NEON*/
|
|
|
|
|
|
|
|
|
|
for(; i < len; i++){
|
|
|
|
|
z[i] = y[i]<0?-x[i]:x[i];
|
|
|
|
@ -251,6 +254,8 @@ void srslte_vec_neg_sss_simd(const int16_t *x, const int16_t *y, int16_t *z, con
|
|
|
|
|
|
|
|
|
|
void srslte_vec_neg_bbb_simd(const int8_t *x, const int8_t *y, int8_t *z, const int len) {
|
|
|
|
|
int i = 0;
|
|
|
|
|
|
|
|
|
|
#ifndef HAVE_NEON
|
|
|
|
|
#if SRSLTE_SIMD_B_SIZE
|
|
|
|
|
if (SRSLTE_IS_ALIGNED(x) && SRSLTE_IS_ALIGNED(y) && SRSLTE_IS_ALIGNED(z)) {
|
|
|
|
|
for (; i < len - SRSLTE_SIMD_B_SIZE + 1; i += SRSLTE_SIMD_B_SIZE) {
|
|
|
|
@ -272,7 +277,7 @@ void srslte_vec_neg_bbb_simd(const int8_t *x, const int8_t *y, int8_t *z, const
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif /* SRSLTE_SIMD_S_SIZE */
|
|
|
|
|
|
|
|
|
|
#endif /* NOT HAVE_NEON*/
|
|
|
|
|
for(; i < len; i++){
|
|
|
|
|
z[i] = y[i]<0?-x[i]:x[i];
|
|
|
|
|
}
|
|
|
|
|