fmt-ops: small optimization

This commit is contained in:
Wim Taymans 2019-01-03 11:36:44 +01:00
parent 238be61364
commit 2a252abf50

View file

@ -27,7 +27,7 @@
#include <spa/utils/defs.h> #include <spa/utils/defs.h>
#include <xmmintrin.h> #include <emmintrin.h>
static void static void
conv_s16_to_f32d_1_sse2(void *data, int n_dst, void *dst[n_dst], const void *src, int n_samples) conv_s16_to_f32d_1_sse2(void *data, int n_dst, void *dst[n_dst], const void *src, int n_samples)
@ -43,10 +43,11 @@ conv_s16_to_f32d_1_sse2(void *data, int n_dst, void *dst[n_dst], const void *src
n_samples = n_samples & 3; n_samples = n_samples & 3;
for(; unrolled--; n += 4) { for(; unrolled--; n += 4) {
in = _mm_setr_epi32(s[0*n_dst], in = _mm_insert_epi16(in, s[0*n_dst], 1);
s[1*n_dst], in = _mm_insert_epi16(in, s[1*n_dst], 3);
s[2*n_dst], in = _mm_insert_epi16(in, s[2*n_dst], 5);
s[3*n_dst]); in = _mm_insert_epi16(in, s[3*n_dst], 7);
in = _mm_srai_epi32(in, 16);
out = _mm_cvtepi32_ps(in); out = _mm_cvtepi32_ps(in);
out = _mm_mul_ps(out, factor); out = _mm_mul_ps(out, factor);
_mm_storeu_ps(&d0[n], out); _mm_storeu_ps(&d0[n], out);