|
|
|
@ -31,32 +31,31 @@ int32_t ff_scalarproduct_and_madd_int16_ssse3(int16_t *v1, const int16_t *v2, |
|
|
|
|
const int16_t *v3, |
|
|
|
|
int order, int mul); |
|
|
|
|
|
|
|
|
|
#if HAVE_YASM |
|
|
|
|
static int32_t scalarproduct_and_madd_int16_sse2(int16_t *v1, const int16_t *v2, |
|
|
|
|
const int16_t *v3, |
|
|
|
|
int order, int mul) |
|
|
|
|
{ |
|
|
|
|
#if HAVE_SSE2_EXTERNAL |
|
|
|
|
if (order & 8) |
|
|
|
|
return ff_scalarproduct_and_madd_int16_mmxext(v1, v2, v3, order, mul); |
|
|
|
|
else |
|
|
|
|
return ff_scalarproduct_and_madd_int16_sse2(v1, v2, v3, order, mul); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int32_t scalarproduct_and_madd_int16_ssse3(int16_t *v1, const int16_t *v2, |
|
|
|
|
const int16_t *v3, |
|
|
|
|
int order, int mul) |
|
|
|
|
{ |
|
|
|
|
#if HAVE_SSSE3_EXTERNAL |
|
|
|
|
if (order & 8) |
|
|
|
|
return ff_scalarproduct_and_madd_int16_mmxext(v1, v2, v3, order, mul); |
|
|
|
|
else |
|
|
|
|
return ff_scalarproduct_and_madd_int16_ssse3(v1, v2, v3, order, mul); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
av_cold void ff_llauddsp_init_x86(LLAudDSPContext *c) |
|
|
|
|
{ |
|
|
|
|
#if HAVE_YASM |
|
|
|
|
int cpu_flags = av_get_cpu_flags(); |
|
|
|
|
|
|
|
|
|
if (EXTERNAL_MMXEXT(cpu_flags)) |
|
|
|
@ -68,4 +67,5 @@ av_cold void ff_llauddsp_init_x86(LLAudDSPContext *c) |
|
|
|
|
if (EXTERNAL_SSSE3(cpu_flags) && |
|
|
|
|
!(cpu_flags & (AV_CPU_FLAG_SSE42 | AV_CPU_FLAG_3DNOW))) // cachesplit
|
|
|
|
|
c->scalarproduct_and_madd_int16 = scalarproduct_and_madd_int16_ssse3; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|