PR #23768 opened by mkver
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23768
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23768.patch

Also avoid a shift in sbcdsp.asm.


>From 5e291382d57b1331b9a29bcac92b98fec2a1e108 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Sat, 11 Jul 2026 09:40:42 +0200
Subject: [PATCH 1/2] Revert "tests/checkasm/vp9dsp: Allow to run only a subset
 of tests"

This reverts commit 7bc35b8426cee8114b5d807b4d0e37fefe9995fa.
The aim of this patch can now be achieved via checkasm's
--function pattern matching.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 tests/checkasm/checkasm.c |  6 +-----
 tests/checkasm/checkasm.h |  4 ----
 tests/checkasm/vp9dsp.c   | 16 ++++++++--------
 3 files changed, 9 insertions(+), 17 deletions(-)

diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c
index 4f54db8e1d..a8cad59d4c 100644
--- a/tests/checkasm/checkasm.c
+++ b/tests/checkasm/checkasm.c
@@ -224,11 +224,7 @@ static const CheckasmTest tests[] = {
         { "vp8dsp", checkasm_check_vp8dsp },
     #endif
     #if CONFIG_VP9_DECODER
-        { "vp9dsp", checkasm_check_vp9dsp }, // all of the below
-        { "vp9_ipred", checkasm_check_vp9_ipred },
-        { "vp9_itxfm", checkasm_check_vp9_itxfm },
-        { "vp9_loopfilter", checkasm_check_vp9_loopfilter },
-        { "vp9_mc", checkasm_check_vp9_mc },
+        { "vp9dsp", checkasm_check_vp9dsp },
     #endif
     #if CONFIG_VIDEODSP
         { "videodsp", checkasm_check_videodsp },
diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h
index 612ad0f9b9..b473c5d711 100644
--- a/tests/checkasm/checkasm.h
+++ b/tests/checkasm/checkasm.h
@@ -127,10 +127,6 @@ void checkasm_check_vp3dsp(void);
 void checkasm_check_vp6dsp(void);
 void checkasm_check_vp8dsp(void);
 void checkasm_check_vp9dsp(void);
-void checkasm_check_vp9_ipred(void);
-void checkasm_check_vp9_itxfm(void);
-void checkasm_check_vp9_loopfilter(void);
-void checkasm_check_vp9_mc(void);
 void checkasm_check_videodsp(void);
 void checkasm_check_vorbisdsp(void);
 void checkasm_check_vvc_alf(void);
diff --git a/tests/checkasm/vp9dsp.c b/tests/checkasm/vp9dsp.c
index d5ff5aa2cd..2a3374541f 100644
--- a/tests/checkasm/vp9dsp.c
+++ b/tests/checkasm/vp9dsp.c
@@ -47,7 +47,7 @@ static const uint32_t pixel_mask[3] = { 0xffffffff, 
0x03ff03ff, 0x0fff0fff };
         }                                                          \
     } while (0)
 
-void checkasm_check_vp9_ipred(void)
+static void check_ipred(void)
 {
     LOCAL_ALIGNED_32(uint8_t, a_buf, [64 * 2]);
     uint8_t *a = &a_buf[32 * 2];
@@ -308,7 +308,7 @@ static int is_zero(const int16_t *c, int sz)
 
 #define SIZEOF_COEF (2 * ((bit_depth + 7) / 8))
 
-void checkasm_check_vp9_itxfm(void)
+static void check_itxfm(void)
 {
     LOCAL_ALIGNED_64(uint8_t, src, [32 * 32 * 2]);
     LOCAL_ALIGNED_64(uint8_t, dst, [32 * 32 * 2]);
@@ -449,7 +449,7 @@ static void randomize_loopfilter_buffers(int bidx, int 
lineoff, int str,
         randomize_loopfilter_buffers(bidx, lineoff, str, bit_depth, dir, \
                                      E, F, H, I, buf0, buf1)
 
-void checkasm_check_vp9_loopfilter(void)
+static void check_loopfilter(void)
 {
     LOCAL_ALIGNED_32(uint8_t, base0, [32 + 16 * 16 * 2]);
     LOCAL_ALIGNED_32(uint8_t, base1, [32 + 16 * 16 * 2]);
@@ -556,7 +556,7 @@ void checkasm_check_vp9_loopfilter(void)
         }                                                 \
     } while (0)
 
-void checkasm_check_vp9_mc(void)
+static void check_mc(void)
 {
     LOCAL_ALIGNED_64(uint8_t, buf, [72 * 72 * 2]);
     LOCAL_ALIGNED_64(uint8_t, dst0, [64 * 64 * 2]);
@@ -626,8 +626,8 @@ void checkasm_check_vp9_mc(void)
 
 void checkasm_check_vp9dsp(void)
 {
-    checkasm_check_vp9_ipred();
-    checkasm_check_vp9_itxfm();
-    checkasm_check_vp9_loopfilter();
-    checkasm_check_vp9_mc();
+    check_ipred();
+    check_itxfm();
+    check_loopfilter();
+    check_mc();
 }
-- 
2.52.0


>From 228972dfcf70b7468718720a21d5c422f8dd5e29 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Sat, 11 Jul 2026 09:43:26 +0200
Subject: [PATCH 2/2] avcodec/x86/sbcdsp: Avoid shift

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavcodec/x86/sbcdsp.asm | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/libavcodec/x86/sbcdsp.asm b/libavcodec/x86/sbcdsp.asm
index 7742d6d316..a76c6b981e 100644
--- a/libavcodec/x86/sbcdsp.asm
+++ b/libavcodec/x86/sbcdsp.asm
@@ -39,13 +39,10 @@ SECTION .text
     mov%6             %4, [inq+%5+mmsize]
 %if %5 == 0
     pcmpeqd           m0, m0
-    psrld             m0, 31
+    pslld             m0, 15         ; -1 << (SBC_PROTO_FIXED_SCALE - 1) as 
dword
 %endif
     pmaddwd           %3, [constsq+%5]
     pmaddwd           %4, [constsq+%5+mmsize]
-%if %5 == 0
-    pslld             m0, 15         ; 1 << (SBC_PROTO_FIXED_SCALE - 1) as 
dword
-%endif
     NIDN paddd,       %1, %3
     NIDN paddd,       %2, %4
 %endmacro
@@ -58,7 +55,7 @@ cglobal sbc_analyze_4, 3, 3, 5, in, out, consts
     ANALYZE_MAC       m1, m2, m1, m2,  0, u
     ANALYZE_MAC       m1, m2, m3, m4, 32, u
     movu              m3, [inq+64]
-    paddd             m1, m0
+    psubd             m1, m0
     pmaddwd           m3, [constsq+64]
     paddd             m1, m2
     paddd             m1, m3
@@ -83,10 +80,10 @@ INIT_XMM sse2
 cglobal sbc_analyze_8, 3, 3, 6, in, out, consts
     ANALYZE_MAC       m1, m2, m1, m2,   0, a
     ANALYZE_MAC       m1, m2, m3, m4,  32, a
-    paddd             m1, m0
+    psubd             m1, m0
     ANALYZE_MAC       m1, m2, m3, m4,  64, a
     ANALYZE_MAC       m1, m2, m3, m4,  96, a
-    paddd             m2, m0
+    psubd             m2, m0
     ANALYZE_MAC       m1, m2, m3, m4, 128, a
 
     psrad             m1, 16
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to