aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil/x86/float_dsp_init.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2024-05-31 16:47:08 -0300
committerJames Almer <jamrial@gmail.com>2024-06-03 22:14:55 -0300
commita14440867c6059890ce34750d1aeba5f0f6fd57b (patch)
tree469ed5b9979e99ff281a707407c20512e3a0992c /libavutil/x86/float_dsp_init.c
parent7413b81e50c61d6d7d0743d6e2284fc7ecc64b0e (diff)
downloadffmpeg-a14440867c6059890ce34750d1aeba5f0f6fd57b.tar.gz
x86/float_dsp: add SSE2 and AVX versions of scalarproduct_double
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavutil/x86/float_dsp_init.c')
-rw-r--r--libavutil/x86/float_dsp_init.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libavutil/x86/float_dsp_init.c b/libavutil/x86/float_dsp_init.c
index 093bce9b94..6cf0b4a277 100644
--- a/libavutil/x86/float_dsp_init.c
+++ b/libavutil/x86/float_dsp_init.c
@@ -73,6 +73,9 @@ void ff_vector_fmul_reverse_avx2(float *dst, const float *src0,
float ff_scalarproduct_float_sse(const float *v1, const float *v2, int order);
float ff_scalarproduct_float_fma3(const float *v1, const float *v2, int order);
+double ff_scalarproduct_double_sse2(const double *v1, const double *v2, size_t order);
+double ff_scalarproduct_double_avx(const double *v1, const double *v2, size_t order);
+
void ff_butterflies_float_sse(float *restrict src0, float *restrict src1, int len);
av_cold void ff_float_dsp_init_x86(AVFloatDSPContext *fdsp)
@@ -93,6 +96,7 @@ av_cold void ff_float_dsp_init_x86(AVFloatDSPContext *fdsp)
fdsp->vector_dmul = ff_vector_dmul_sse2;
fdsp->vector_dmac_scalar = ff_vector_dmac_scalar_sse2;
fdsp->vector_dmul_scalar = ff_vector_dmul_scalar_sse2;
+ fdsp->scalarproduct_double = ff_scalarproduct_double_sse2;
}
if (EXTERNAL_AVX_FAST(cpu_flags)) {
fdsp->vector_fmul = ff_vector_fmul_avx;
@@ -102,6 +106,7 @@ av_cold void ff_float_dsp_init_x86(AVFloatDSPContext *fdsp)
fdsp->vector_dmac_scalar = ff_vector_dmac_scalar_avx;
fdsp->vector_fmul_add = ff_vector_fmul_add_avx;
fdsp->vector_fmul_reverse = ff_vector_fmul_reverse_avx;
+ fdsp->scalarproduct_double = ff_scalarproduct_double_avx;
}
if (EXTERNAL_AVX2_FAST(cpu_flags)) {
fdsp->vector_fmul_reverse = ff_vector_fmul_reverse_avx2;