factorize code that initialize all 0xff simd vectors

This commit is contained in:
Laurent THOMAS
2025-07-24 13:48:36 +02:00
parent 61c769f8b5
commit f57f6a8d4e
4 changed files with 61 additions and 52 deletions
+24
View File
@@ -532,6 +532,20 @@ static inline void multadd_cpx_vector(const c16_t *x1, const c16_t *x2, c16_t *y
}
}
static const int16_t ones_epi16[16] __attribute__((aligned(32))) = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
static inline simde__m256i protected_abs256(const simde__m256i in)
{
const simde__m256i no32768 =
simde_mm256_adds_epi16(simde_mm256_subs_epi16(in, *(simde__m256i *)ones_epi16), *(simde__m256i *)ones_epi16);
return simde_mm256_abs_epi16(no32768);
}
static inline simde__m128i protected_abs128(const simde__m128i in)
{
const simde__m128i no32768 = simde_mm_adds_epi16(simde_mm_subs_epi16(in, *(simde__m128i *)ones_epi16), *(simde__m128i *)ones_epi16);
return simde_mm_abs_epi16(no32768);
}
// lte_dfts.c
void init_fft(uint16_t size,
uint8_t logsize,
@@ -919,6 +933,16 @@ c32_t dot_product(const c16_t *x,
void oai_mm_separate_real_imag_parts(simde__m128i *out_re, simde__m128i *out_im, simde__m128i in0, simde__m128i in1);
void oai_mm256_separate_real_imag_parts(simde__m256i *out_re, simde__m256i *out_im, simde__m256i in0, simde__m256i in1);
// generates vpcmpeqd ymm0, ymm0, ymm0
static inline simde__m256i allones256(void)
{
return simde_mm256_set1_epi64x(-1);
}
static inline simde__m128i allones128(void)
{
return simde_mm_set1_epi32(-1);
}
void InitSinLUT(void);
// fast calculation of e^{i*2*pi*phase}