float_dsp: add vector_dmul_scalar() to multiply a vector of doubles

Include x86-optimized versions for SSE2 and AVX.
This commit is contained in:
Justin Ruggles
2012-09-24 15:00:53 -04:00
parent da025d115a
commit ac7eb4cb20
5 changed files with 89 additions and 0 deletions

View File

@@ -35,6 +35,11 @@ extern void ff_vector_fmac_scalar_avx(float *dst, const float *src, float mul,
extern void ff_vector_fmul_scalar_sse(float *dst, const float *src, float mul,
int len);
extern void ff_vector_dmul_scalar_sse2(double *dst, const double *src,
double mul, int len);
extern void ff_vector_dmul_scalar_avx(double *dst, const double *src,
double mul, int len);
void ff_float_dsp_init_x86(AVFloatDSPContext *fdsp)
{
int mm_flags = av_get_cpu_flags();
@@ -44,8 +49,12 @@ void ff_float_dsp_init_x86(AVFloatDSPContext *fdsp)
fdsp->vector_fmac_scalar = ff_vector_fmac_scalar_sse;
fdsp->vector_fmul_scalar = ff_vector_fmul_scalar_sse;
}
if (EXTERNAL_SSE2(mm_flags)) {
fdsp->vector_dmul_scalar = ff_vector_dmul_scalar_sse2;
}
if (EXTERNAL_AVX(mm_flags)) {
fdsp->vector_fmul = ff_vector_fmul_avx;
fdsp->vector_fmac_scalar = ff_vector_fmac_scalar_avx;
fdsp->vector_dmul_scalar = ff_vector_dmul_scalar_avx;
}
}