This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

The following commit(s) were added to refs/heads/master by this push:
     new b3b3b1bfe4 avutil/aarch64/float_dsp: add NEON scalarproduct_double
b3b3b1bfe4 is described below

commit b3b3b1bfe49698a36b2dd76e1db1b5822d1fed51
Author:     Patryk Darmofalski <[email protected]>
AuthorDate: Mon Oct 12 13:55:46 2026 +0200
Commit:     Martin Storsjö <[email protected]>
CommitDate: Tue Nov 3 18:27:30 2026 +0000

    avutil/aarch64/float_dsp: add NEON scalarproduct_double
    
    Four accumulators, as in scalarproduct_float. Eight were not faster at len 
256.
    
    checkasm --bench on Apple M4:
    scalarproduct_double_c:        80.3
    scalarproduct_double_neon:     21.8 ( 3.68x)
    
    Signed-off-by: Patryk Darmofalski <[email protected]>
---
 libavutil/aarch64/float_dsp_init.c |  4 ++++
 libavutil/aarch64/float_dsp_neon.S | 23 +++++++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/libavutil/aarch64/float_dsp_init.c 
b/libavutil/aarch64/float_dsp_init.c
index 4325071821..0423602303 100644
--- a/libavutil/aarch64/float_dsp_init.c
+++ b/libavutil/aarch64/float_dsp_init.c
@@ -51,12 +51,16 @@ void ff_butterflies_float_neon(float *v1, float *v2, int 
len);
 
 float ff_scalarproduct_float_neon(const float *v1, const float *v2, int len);
 
+double ff_scalarproduct_double_neon(const double *v1, const double *v2,
+                                    size_t len);
+
 av_cold void ff_float_dsp_init_aarch64(AVFloatDSPContext *fdsp)
 {
     int cpu_flags = av_get_cpu_flags();
 
     if (have_neon(cpu_flags)) {
         fdsp->butterflies_float   = ff_butterflies_float_neon;
+        fdsp->scalarproduct_double = ff_scalarproduct_double_neon;
         fdsp->scalarproduct_float = ff_scalarproduct_float_neon;
         fdsp->vector_dmul_scalar  = ff_vector_dmul_scalar_neon;
         fdsp->vector_fmul         = ff_vector_fmul_neon;
diff --git a/libavutil/aarch64/float_dsp_neon.S 
b/libavutil/aarch64/float_dsp_neon.S
index aa6b5189f5..d2bc4df7b8 100644
--- a/libavutil/aarch64/float_dsp_neon.S
+++ b/libavutil/aarch64/float_dsp_neon.S
@@ -233,3 +233,26 @@ function ff_scalarproduct_float_neon, export=1
         faddp           s0, v0.2s
         ret
 endfunc
+
+function ff_scalarproduct_double_neon, export=1
+        movi            v0.2d, #0
+        movi            v1.2d, #0
+        movi            v2.2d, #0
+        movi            v3.2d, #0
+1:
+        ld1             {v4.2d, v5.2d}, [x0], #32
+        ld1             {v6.2d, v7.2d}, [x1], #32
+        ld1             {v16.2d, v17.2d}, [x0], #32
+        ld1             {v18.2d, v19.2d}, [x1], #32
+        subs            x2, x2, #8
+        fmla            v0.2d, v4.2d, v6.2d
+        fmla            v1.2d, v5.2d, v7.2d
+        fmla            v2.2d, v16.2d, v18.2d
+        fmla            v3.2d, v17.2d, v19.2d
+        b.gt            1b
+        fadd            v0.2d, v0.2d, v1.2d
+        fadd            v2.2d, v2.2d, v3.2d
+        fadd            v0.2d, v0.2d, v2.2d
+        faddp           d0, v0.2d
+        ret
+endfunc

-- 
To stop receiving notification emails like this one, please contact
[email protected].
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to