[PR] avutil/x86/x86util: Remove useless mmx macros (PR #24130)

mkver via ffmpeg-devel <[email protected]>
Newsgroups gmane.comp.video.ffmpeg.devel
Message-ID <178663749068.59.3839184320437600580@29965ddac10e>
PR #24130 opened by mkver
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24130
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24130.patch


>From 7c022f9626ae7071bc251d123b4eae7fd92bc98c Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 15:15:01 +0200
Subject: [PATCH 01/14] avcodec/x86/{h264_chromamc,rv40dsp}: Don't use PAVGB
 macro

It always just expands to pavgb as there are no pure mmx
functions here.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavcodec/x86/h264_chromamc.asm | 4 ++--
 libavcodec/x86/rv40dsp.asm       | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/x86/h264_chromamc.asm b/libavcodec/x86/h264_chromamc.asm
index 32564058ba..705da95feb 100644
--- a/libavcodec/x86/h264_chromamc.asm
+++ b/libavcodec/x86/h264_chromamc.asm
@@ -117,11 +117,11 @@ cglobal %1_%2_chroma_mc2, 6, 7, 0
 %macro NOTHING 2-3
 %endmacro
 %macro DIRECT_AVG 2
-    PAVGB         %1, %2
+    pavgb         %1, %2
 %endmacro
 %macro COPY_AVG 3
     movd          %2, %3
-    PAVGB         %1, %2
+    pavgb         %1, %2
 %endmacro
 
 
diff --git a/libavcodec/x86/rv40dsp.asm b/libavcodec/x86/rv40dsp.asm
index 07c119636a..53ad221c40 100644
--- a/libavcodec/x86/rv40dsp.asm
+++ b/libavcodec/x86/rv40dsp.asm
@@ -97,7 +97,7 @@ SECTION .text
 %endif
     packuswb  %1, %1
 %ifidn %3, avg
-    PAVGB     %1, %2
+    pavgb     %1, %2
 %endif
     movh  [dstq], %1
 %endmacro
-- 
2.52.0


>From 456596b17dcdcc9e0760fd45206421f8bb67658f Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 15:20:40 +0200
Subject: [PATCH 02/14] avutil/x86/x86util: Remove PAVGB macro

It is no longer used anywhere and it would make no sense
to ever use it again.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavutil/x86/x86util.asm | 16 ----------------
 1 file changed, 16 deletions(-)

diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm
index 6632155c99..5b63413dd8 100644
--- a/libavutil/x86/x86util.asm
+++ b/libavutil/x86/x86util.asm
@@ -501,22 +501,6 @@
 %endif
 %endmacro
 
-%macro PAVGB 2-4
-%if cpuflag(mmxext)
-    pavgb   %1, %2
-%elif cpuflag(3dnow)
-    pavgusb %1, %2
-%elif cpuflag(mmx)
-    movu   %3, %2
-    por    %3, %1
-    pxor   %1, %2
-    pand   %1, %4
-    psrlq  %1, 1
-    psubb  %3, %1
-    SWAP   %1, %3
-%endif
-%endmacro
-
 %macro PSHUFLW 1+
     %if mmsize == 8
         pshufw %1
-- 
2.52.0


>From ef5b428c519824baa6f2a7a1ff615866093ea97f Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 15:23:50 +0200
Subject: [PATCH 03/14] avutil/x86/x86util: Remove unused PSWAPD

Unused since ec735579814b6b73e17da601ff011a918c49e40f.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavutil/x86/x86util.asm | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm
index 5b63413dd8..95dbfdb88a 100644
--- a/libavutil/x86/x86util.asm
+++ b/libavutil/x86/x86util.asm
@@ -509,18 +509,6 @@
     %endif
 %endmacro
 
-%macro PSWAPD 2
-%if cpuflag(mmxext)
-    pshufw    %1, %2, q1032
-%elif cpuflag(3dnowext)
-    pswapd    %1, %2
-%elif cpuflag(3dnow)
-    movq      %1, %2
-    psrlq     %1, 32
-    punpckldq %1, %2
-%endif
-%endmacro
-
 %macro DEINTB 5 ; mask, reg1, mask, reg2, optional src to fill masks from
 %ifnum %5
     pand   m%3, m%5, m%4 ; src .. y6 .. y4
-- 
2.52.0


>From 150146ee3df23f075da2295809218068fda17517 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 15:30:42 +0200
Subject: [PATCH 04/14] avutil/x86/x86util: Remove ABSB{,2} macros

Seem to have always been unused.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavutil/x86/x86util.asm | 24 ------------------------
 1 file changed, 24 deletions(-)

diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm
index 95dbfdb88a..c0fd07c69e 100644
--- a/libavutil/x86/x86util.asm
+++ b/libavutil/x86/x86util.asm
@@ -361,30 +361,6 @@
 %endif
 %endmacro
 
-%macro ABSB 2 ; source mmreg, temp mmreg (unused for SSSE3)
-%if cpuflag(ssse3)
-    pabsb   %1, %1
-%else
-    pxor    %2, %2
-    psubb   %2, %1
-    pminub  %1, %2
-%endif
-%endmacro
-
-%macro ABSB2 4 ; src1, src2, tmp1, tmp2 (tmp1/2 unused for SSSE3)
-%if cpuflag(ssse3)
-    pabsb   %1, %1
-    pabsb   %2, %2
-%else
-    pxor    %3, %3
-    pxor    %4, %4
-    psubb   %3, %1
-    psubb   %4, %2
-    pminub  %1, %3
-    pminub  %2, %4
-%endif
-%endmacro
-
 %macro ABSD2 4
     pxor    %3, %3
     pxor    %4, %4
-- 
2.52.0


>From 942961be61287cb2066dc28c56782ed91657b997 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 15:35:08 +0200
Subject: [PATCH 05/14] avutil/x86/x86util: Remove ABSD2 macro

Always unused, new code can just use SSSE3 pabsd directly.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavutil/x86/x86util.asm | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm
index c0fd07c69e..3b09cc8207 100644
--- a/libavutil/x86/x86util.asm
+++ b/libavutil/x86/x86util.asm
@@ -361,17 +361,6 @@
 %endif
 %endmacro
 
-%macro ABSD2 4
-    pxor    %3, %3
-    pxor    %4, %4
-    pcmpgtd %3, %1
-    pcmpgtd %4, %2
-    pxor    %1, %3
-    pxor    %2, %4
-    psubd   %1, %3
-    psubd   %2, %4
-%endmacro
-
 %macro ABS4 6
     ABS2 %1, %2, %5, %6
     ABS2 %3, %4, %5, %6
-- 
2.52.0


>From 20b5ea76021d338861e0aa8e7e8ca077033172ad Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 15:41:45 +0200
Subject: [PATCH 06/14] swscale/x86/rgb_2_rgb: Remove useless macro

x86inc's VEX emulation can handle this just fine.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libswscale/x86/rgb_2_rgb.asm | 18 ++++--------------
 1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/libswscale/x86/rgb_2_rgb.asm b/libswscale/x86/rgb_2_rgb.asm
index 120cc95c4a..a9de16116d 100644
--- a/libswscale/x86/rgb_2_rgb.asm
+++ b/libswscale/x86/rgb_2_rgb.asm
@@ -57,16 +57,6 @@ shuf_packus_avx2: db  0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0,\
 
 SECTION .text
 
-%macro RSHIFT_COPY 3
-; %1 dst ; %2 src ; %3 shift
-%if cpuflag(avx) || cpuflag(avx2) || cpuflag(avx512icl)
-    psrldq  %1, %2, %3
-%else
-    mova           %1, %2
-    RSHIFT         %1, %3
-%endif
-%endmacro
-
 ;------------------------------------------------------------------------------
 ; shuffle_bytes_## (const uint8_t *src, uint8_t *dst, int src_size)
 ;------------------------------------------------------------------------------
@@ -315,10 +305,10 @@ cglobal uyvytoyuv422, 9, 14, 8 + cpuflag(avx2) + cpuflag(avx512icl), ydst, udst,
         movu [ydstq + wq + mmsize], m7
 %else
         ; extract y part 1
-        RSHIFT_COPY    m6, m2, 1 ; UYVY UYVY -> YVYU YVY...
+        psrldq         m6, m2, 1 ; UYVY UYVY -> YVYU YVY...
         pand           m6, m1    ; YxYx YxYx...
 
-        RSHIFT_COPY    m7, m3, 1 ; UYVY UYVY -> YVYU YVY...
+        psrldq         m7, m3, 1 ; UYVY UYVY -> YVYU YVY...
         pand           m7, m1    ; YxYx YxYx...
 
         packuswb       m6, m7    ; YYYY YYYY...
@@ -328,10 +318,10 @@ cglobal uyvytoyuv422, 9, 14, 8 + cpuflag(avx2) + cpuflag(avx512icl), ydst, udst,
         movu [ydstq + wq], m6
 
         ; extract y part 2
-        RSHIFT_COPY    m6, m4, 1 ; UYVY UYVY -> YVYU YVY...
+        psrldq         m6, m4, 1 ; UYVY UYVY -> YVYU YVY...
         pand           m6, m1    ; YxYx YxYx...
 
-        RSHIFT_COPY    m7, m5, 1 ; UYVY UYVY -> YVYU YVY...
+        psrldq         m7, m5, 1 ; UYVY UYVY -> YVYU YVY...
         pand           m7, m1    ; YxYx YxYx...
 
         packuswb       m6, m7    ; YYYY YYYY...
-- 
2.52.0


>From f5625f2f505f40d7a77f2ed374ba0b6805241c03 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 15:52:04 +0200
Subject: [PATCH 07/14] av*/x86/yadif,lossless-videodsp: Don't use LSHIFT,
 RSHIFT macros

There is no mmx code in these files.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavcodec/x86/lossless_videodsp.asm | 16 ++++++++--------
 libavfilter/x86/vf_yadif.asm         |  6 +++---
 libavfilter/x86/yadif-10.asm         |  8 ++++----
 libavfilter/x86/yadif-16.asm         |  8 ++++----
 4 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/libavcodec/x86/lossless_videodsp.asm b/libavcodec/x86/lossless_videodsp.asm
index 5815c8e5ae..bcfb55b3a7 100644
--- a/libavcodec/x86/lossless_videodsp.asm
+++ b/libavcodec/x86/lossless_videodsp.asm
@@ -46,7 +46,7 @@ cglobal add_median_pred, 6,6,8, dst, top, diff, w, left, left_top
     movu    m0, [topq]
     mova    m2, m0
     movd    m4, [left_topq]
-    LSHIFT  m2, 1
+    pslldq  m2, 1
     mova    m1, m0
     por     m4, m2
     movd    m3, [leftq]
@@ -59,7 +59,7 @@ cglobal add_median_pred, 6,6,8, dst, top, diff, w, left, left_top
 .loop:
     movu    m4, [topq+wq]
     mova    m0, m4
-    LSHIFT  m4, 1
+    pslldq  m4, 1
     por     m4, m1
     mova    m1, m0 ; t
     psubb   m0, m4 ; t-tl
@@ -77,17 +77,17 @@ cglobal add_median_pred, 6,6,8, dst, top, diff, w, left, left_top
     paddb   m3, m2 ; +residual
 %if i==0
     mova    m7, m3
-    LSHIFT  m7, mmsize-1
+    pslldq  m7, mmsize-1
 %else
     mova    m6, m3
-    RSHIFT  m7, 1
-    LSHIFT  m6, mmsize-1
+    psrldq  m7, 1
+    pslldq  m6, mmsize-1
     por     m7, m6
 %endif
 %if i<mmsize-1
-    RSHIFT  m0, 1
-    RSHIFT  m1, 1
-    RSHIFT  m2, 1
+    psrldq  m0, 1
+    psrldq  m1, 1
+    psrldq  m2, 1
 %endif
 %assign i i+1
 %endrep
diff --git a/libavfilter/x86/vf_yadif.asm b/libavfilter/x86/vf_yadif.asm
index 809cebdd3f..5a0ba50fa0 100644
--- a/libavfilter/x86/vf_yadif.asm
+++ b/libavfilter/x86/vf_yadif.asm
@@ -39,7 +39,7 @@ SECTION .text
     pavgb     m5, m3
     pand      m4, [pb_1]
     psubusb   m5, m4
-    RSHIFT    m5, 1
+    psrldq    m5, 1
     punpcklbw m5, m7
     mova      m4, m2
     psubusb   m2, m3
@@ -47,8 +47,8 @@ SECTION .text
     pmaxub    m2, m3
     mova      m3, m2
     mova      m4, m2
-    RSHIFT    m3, 1
-    RSHIFT    m4, 2
+    psrldq    m3, 1
+    psrldq    m4, 2
     punpcklbw m2, m7
     punpcklbw m3, m7
     punpcklbw m4, m7
diff --git a/libavfilter/x86/yadif-10.asm b/libavfilter/x86/yadif-10.asm
index c6952db64b..3a6b3ef759 100644
--- a/libavfilter/x86/yadif-10.asm
+++ b/libavfilter/x86/yadif-10.asm
@@ -48,15 +48,15 @@ SECTION .text
     pavgw     m5, m3
     pand      m4, [pw_1]
     psubusw   m5, m4
-    RSHIFT    m5, 2
+    psrldq    m5, 2
     mova      m4, m2
     psubusw   m2, m3
     psubusw   m3, m4
     PMAXUW    m2, m3
     mova      m3, m2
     mova      m4, m2
-    RSHIFT    m3, 2
-    RSHIFT    m4, 4
+    psrldq    m3, 2
+    psrldq    m4, 4
     paddw     m2, m3
     paddw     m2, m4
 %endmacro
@@ -153,7 +153,7 @@ SECTION .text
     psubusw      m3, m4
     PMAXUW       m2, m3
     mova         m3, m2
-    RSHIFT       m3, 4
+    psrldq       m3, 4
     paddw        m0, m2
     paddw        m0, m3
     psubw        m0, [pw_1]
diff --git a/libavfilter/x86/yadif-16.asm b/libavfilter/x86/yadif-16.asm
index 09cc543d7e..a161164a0d 100644
--- a/libavfilter/x86/yadif-16.asm
+++ b/libavfilter/x86/yadif-16.asm
@@ -72,7 +72,7 @@ SECTION .text
     pavgw     m5, m3
     pand      m4, [pw_1]
     psubusw   m5, m4
-    RSHIFT    m5, 2
+    psrldq    m5, 2
     punpcklwd m5, m7
     mova      m4, m2
     psubusw   m2, m3
@@ -80,8 +80,8 @@ SECTION .text
     PMAXUW    m2, m3
     mova      m3, m2
     mova      m4, m2
-    RSHIFT    m3, 2
-    RSHIFT    m4, 4
+    psrldq    m3, 2
+    psrldq    m4, 4
     punpcklwd m2, m7
     punpcklwd m3, m7
     punpcklwd m4, m7
@@ -186,7 +186,7 @@ SECTION .text
     psubusw      m3, m4
     PMAXUW       m2, m3
     mova         m3, m2
-    RSHIFT       m3, 4
+    psrldq       m3, 4
     punpcklwd    m2, m7
     punpcklwd    m3, m7
     paddd        m0, m2
-- 
2.52.0


>From 9f540d745f0f7e9f9cc1b373cd7a521aeaf492d4 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 15:57:48 +0200
Subject: [PATCH 08/14] avutil/x86/x86util: Remove unused LSHIFT, RSHIFT macros

Useless in the absence of mmx.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavutil/x86/x86util.asm | 16 ----------------
 1 file changed, 16 deletions(-)

diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm
index 3b09cc8207..929edbb457 100644
--- a/libavutil/x86/x86util.asm
+++ b/libavutil/x86/x86util.asm
@@ -872,22 +872,6 @@
     %endif
 %endmacro
 
-%macro LSHIFT 2
-%if mmsize > 8
-    pslldq  %1, %2
-%else
-    psllq   %1, 8*(%2)
-%endif
-%endmacro
-
-%macro RSHIFT 2
-%if mmsize > 8
-    psrldq  %1, %2
-%else
-    psrlq   %1, 8*(%2)
-%endif
-%endmacro
-
 %macro MOVHL 2 ; dst, src
 %ifidn %1, %2
     punpckhqdq %1, %2
-- 
2.52.0


>From d074b3dd0e5dc6a57171ea7a1964dd7b926bdff4 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 16:02:59 +0200
Subject: [PATCH 09/14] avcodec/x86/ac3dsp: Avoid using PMINUB macro

Forgotten in fd98594a8831ce037a495b6d7e090bd8f81e83a1.

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

diff --git a/libavcodec/x86/ac3dsp.asm b/libavcodec/x86/ac3dsp.asm
index 21f59708b7..5b16af99c5 100644
--- a/libavcodec/x86/ac3dsp.asm
+++ b/libavcodec/x86/ac3dsp.asm
@@ -42,7 +42,7 @@ SECTION .text
 ;-----------------------------------------------------------------------------
 
 %macro AC3_EXPONENT_MIN 0
-cglobal ac3_exponent_min, 3, 4, 2, exp, reuse_blks, expn, offset
+cglobal ac3_exponent_min, 3, 4, 1, exp, reuse_blks, expn, offset
     shl  reuse_blksd, 8
     jz .end
     LOOP_ALIGN
@@ -52,7 +52,7 @@ cglobal ac3_exponent_min, 3, 4, 2, exp, reuse_blks, expn, offset
     sub      offsetq, 256
     LOOP_ALIGN
 .nextblk:
-    PMINUB        m0, [expq+offsetq], m1
+    pminub        m0, [expq+offsetq]
     sub      offsetq, 256
     jae .nextblk
     mova      [expq], m0
-- 
2.52.0


>From 566e8550b1b28833297b6c8b213f920c349b1021 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 16:05:19 +0200
Subject: [PATCH 10/14] avutil/x86/x86util: Remove unused PMINUB macro

Useless in the absence of mmx.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavutil/x86/x86util.asm | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm
index 929edbb457..75d2fee3d2 100644
--- a/libavutil/x86/x86util.asm
+++ b/libavutil/x86/x86util.asm
@@ -685,16 +685,6 @@
     movh  [%7+%8], %4
 %endmacro
 
-%macro PMINUB 3 ; dst, src, ignored
-%if cpuflag(mmxext)
-    pminub   %1, %2
-%else ; dst, src, tmp
-    mova     %3, %1
-    psubusb  %3, %2
-    psubb    %1, %3
-%endif
-%endmacro
-
 %macro SPLATW 2-3 0
 %if cpuflag(avx2) && %3 == 0
     vpbroadcastw %1, %2
-- 
2.52.0


>From 1db6cede16444b01ba70d95940fe3da8e35a56fa Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 16:12:24 +0200
Subject: [PATCH 11/14] av*/x86/resample,h264_intrapred: Avoid using PSHUFLW

It is useless in the absence of mmx.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavcodec/x86/h264_intrapred.asm | 8 ++++----
 libswresample/x86/resample.asm    | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libavcodec/x86/h264_intrapred.asm b/libavcodec/x86/h264_intrapred.asm
index d01d4b5386..798900f9b2 100644
--- a/libavcodec/x86/h264_intrapred.asm
+++ b/libavcodec/x86/h264_intrapred.asm
@@ -259,9 +259,9 @@ cglobal pred16x16_plane_%1_8, 2,9,5
 %endif
     movhlps      m1, m0
     paddw        m0, m1
-    PSHUFLW      m1, m0, q0032
+    pshuflw      m1, m0, q0032
     paddw        m0, m1
-    PSHUFLW      m1, m0, q0001
+    pshuflw      m1, m0, q0001
     paddw        m0, m1           ; sum of H coefficients
 
     lea          r4, [r0+r2*8-1]
@@ -467,11 +467,11 @@ cglobal pred8x8_plane_8, 2,9,5
     paddw        m0, m1
 
 %if notcpuflag(ssse3)
-    PSHUFLW      m1, m0, q0032
+    pshuflw      m1, m0, q0032
     paddw        m0, m1
 %endif ; !ssse3
 
-    PSHUFLW      m1, m0, q0001
+    pshuflw      m1, m0, q0001
     paddw        m0, m1           ; sum of H coefficients
 
     lea          r4, [r0+r2*4-1]
diff --git a/libswresample/x86/resample.asm b/libswresample/x86/resample.asm
index e155f171d1..d6501e1373 100644
--- a/libswresample/x86/resample.asm
+++ b/libswresample/x86/resample.asm
@@ -461,8 +461,8 @@ cglobal resample_linear_%1, 1, 7, 5, ctx, min_filter_length_x4, filter2, \
     paddd                         m0, m1
 %endif
 %if notcpuflag(xop)
-    PSHUFLW                       m3, m2, q0032
-    PSHUFLW                       m1, m0, q0032
+    pshuflw                       m3, m2, q0032
+    pshuflw                       m1, m0, q0032
     paddd                         m2, m3
     paddd                         m0, m1
 %endif
-- 
2.52.0


>From 2d66d07d88c69f398f5e6943aa80a10165621748 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 16:18:02 +0200
Subject: [PATCH 12/14] avutil/x86/x86util: Remove PSHUFLW macro

Useless in the absence of mmx(ext).

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavutil/x86/x86util.asm | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm
index 75d2fee3d2..775c5275c9 100644
--- a/libavutil/x86/x86util.asm
+++ b/libavutil/x86/x86util.asm
@@ -403,12 +403,7 @@
     paddd   %1, %2
 %endif
 %if notcpuflag(xop) || sizeof%1 != 16
-%if cpuflag(mmxext)
-    PSHUFLW %2, %1, q0032
-%else ; mmx
-    mova    %2, %1
-    psrlq   %2, 32
-%endif
+    pshuflw %2, %1, q0032
     paddd   %1, %2
 %endif
 %undef %1
@@ -466,14 +461,6 @@
 %endif
 %endmacro
 
-%macro PSHUFLW 1+
-    %if mmsize == 8
-        pshufw %1
-    %else
-        pshuflw %1
-    %endif
-%endmacro
-
 %macro DEINTB 5 ; mask, reg1, mask, reg2, optional src to fill masks from
 %ifnum %5
     pand   m%3, m%5, m%4 ; src .. y6 .. y4
-- 
2.52.0


>From 433b4f8672df3011662306f1704a858ffd19610c Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 16:49:47 +0200
Subject: [PATCH 13/14] avutil/x86/x86util: Move broken PSIGNW macro to its
 only user

The non-SSSE3 version does not do what psignw does:
If the second operand is zero, the first is unchanged.
In any case, the end result is '(%1 and not %2)-(%2 and not %1)'.
So it only works in case %2 is -1, which is how vp9itxfm.asm
actually uses it. So move it there and rename it to NEGATE.

See also f2fd167835b6f039a593e46ab3a84e1b9a453660 for an instance
when this macro actually caused problems.

(Would pxor %2,%2 psubw %2,%1 SWAP %1,%2 not actually be better?)

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavcodec/x86/vp9itxfm.asm | 39 +++++++++++++++++++++++--------------
 libavutil/x86/x86util.asm   |  9 ---------
 2 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/libavcodec/x86/vp9itxfm.asm b/libavcodec/x86/vp9itxfm.asm
index bd5966646c..71e462c0bc 100644
--- a/libavcodec/x86/vp9itxfm.asm
+++ b/libavcodec/x86/vp9itxfm.asm
@@ -102,6 +102,15 @@ cextern pd_8192
 
 SECTION .text
 
+%macro NEGATE 2 ; dst/src, pw_m1
+%if cpuflag(ssse3)
+    psignw     %1, %2
+%else
+    pxor       %1, %2
+    psubw      %1, %2
+%endif
+%endmacro
+
 %macro VP9_UNPACK_MULSUB_2D_4X 6 ; dst1 [src1], dst2 [src2], dst3, dst4, mul1, mul2
     punpckhwd          m%4, m%2, m%1
     punpcklwd          m%2, m%1
@@ -735,7 +744,7 @@ VP9_IDCT_IDCT_8x8_ADD_XMM ssse3, 13
     SCRATCH                  1, 12, blockq+ 0*16
     VP9_RND_SH_SUMSUB_BA     5,  7,  4,  3, 1, D_8192_REG
     UNSCRATCH                1, 12, blockq+ 0*16
-    PSIGNW                  m5, W_M1_REG                    ; m5=out1[w], m7=t6[w]
+    NEGATE                  m5, W_M1_REG                    ; m5=out1[w], m7=t6[w]
     VP9_RND_SH_SUMSUB_BA     2,  0,  6,  1, 3, D_8192_REG   ; m2=out6[w], m0=t7[w]
 
     UNSCRATCH                1,  8, blockq+16*1
@@ -746,7 +755,7 @@ VP9_IDCT_IDCT_8x8_ADD_XMM ssse3, 13
 
     SUMSUB_BA                w,  6,  4, 2                   ; m6=out0[w], m4=t2[w]
     SUMSUB_BA                w,  1,  3, 2
-    PSIGNW                  m1, W_M1_REG                    ; m1=out7[w], m3=t3[w]
+    NEGATE                  m1, W_M1_REG                    ; m1=out7[w], m3=t3[w]
 
     ; m6=out0, m5=out1, m4=t2, m3=t3, m7=t6, m0=t7, m2=out6, m1=out7
 
@@ -764,8 +773,8 @@ VP9_IDCT_IDCT_8x8_ADD_XMM ssse3, 13
     VP9_UNPACK_MULSUB_2W_4X  7, 0, 11585, 11585, D_8192_REG, 2, 5
     UNSCRATCH                5,  9, blockq+16*1
 %endif
-    PSIGNW                  m3, W_M1_REG                    ; out3
-    PSIGNW                  m7, W_M1_REG                    ; out5
+    NEGATE                  m3, W_M1_REG                    ; out3
+    NEGATE                  m7, W_M1_REG                    ; out5
 
     ; m6=out0, m5=out1, m0=out2, m3=out3, m4=out4, m7=out5, m2=out6, m1=out7
 
@@ -1593,7 +1602,7 @@ VP9_IDCT_IDCT_16x16_ADD_XMM ssse3
     UNSCRATCH            7, 15, tmpq+12*%%str
 
     SUMSUB_BA                w,  3,  7,  1
-    PSIGNW                  m3, [pw_m1]                     ; m3=out1[w], m7=t10[w]
+    NEGATE                  m3, [pw_m1]                     ; m3=out1[w], m7=t10[w]
     SUMSUB_BA                w,  2,  6,  1                  ; m2=out14[w], m6=t11[w]
 
     ; unfortunately, the code below overflows in some cases, e.g.
@@ -1619,7 +1628,7 @@ VP9_IDCT_IDCT_16x16_ADD_XMM ssse3
     VP9_RND_SH_SUMSUB_BA     5,  6,  1,  3,  0, [pd_8192]   ; m5=out2[w], m6=t14[w]
     UNSCRATCH            0, 9, tmpq+ 2*%%str
     VP9_RND_SH_SUMSUB_BA     4,  7,  0,  2,  1, [pd_8192]
-    PSIGNW                  m4, [pw_m1]                     ; m4=out13[w], m7=t15[w]
+    NEGATE                  m4, [pw_m1]                     ; m4=out13[w], m7=t15[w]
 
     ; unfortunately, the code below overflows in some cases
 %if 0; cpuflag(ssse3)
@@ -1627,7 +1636,7 @@ VP9_IDCT_IDCT_16x16_ADD_XMM ssse3
     pmulhrsw                m7, [pw_m11585x2]               ; m7=out5[w]
     pmulhrsw                m6, [pw_11585x2]                ; m6=out10[w]
 %else
-    PSIGNW                  m7, [pw_m1]
+    NEGATE                  m7, [pw_m1]
     VP9_UNPACK_MULSUB_2W_4X  7,  6, 11585, 11585, [pd_8192], 1, 0
 %endif
 
@@ -1663,7 +1672,7 @@ VP9_IDCT_IDCT_16x16_ADD_XMM ssse3
     SCRATCH                  6, 10, tmpq+ 0*%%str
     VP9_RND_SH_SUMSUB_BA     0,  3,  1,  5,  6, [pd_8192]
     UNSCRATCH                6, 10, tmpq+ 0*%%str
-    PSIGNW                  m0, [pw_m1]                     ; m0=out3[w], m3=t6[w]
+    NEGATE                  m0, [pw_m1]                     ; m0=out3[w], m3=t6[w]
     VP9_RND_SH_SUMSUB_BA     4,  2,  6,  7,  5, [pd_8192]   ; m9=out12[w], m2=t7[w]
 
     UNSCRATCH                1,  8, tmpq+10*%%str
@@ -1674,7 +1683,7 @@ VP9_IDCT_IDCT_16x16_ADD_XMM ssse3
 
     SUMSUB_BA                w,  1,  6,  4                  ; m13=out0[w], m1=t2[w]
     SUMSUB_BA                w,  5,  7,  4
-    PSIGNW                  m5, [pw_m1]                     ; m12=out15[w], m8=t3[w]
+    NEGATE                  m5, [pw_m1]                     ; m12=out15[w], m8=t3[w]
 
     ; unfortunately, the code below overflows in some cases, e.g.
     ; http://downloads.webmproject.org/test_data/libvpx/vp90-2-14-resize-fp-tiles-16-8-4-2-1.webm
@@ -1928,12 +1937,12 @@ IADST16_FN iadst, IADST16, iadst, IADST16, ssse3
     VP9_UNPACK_MULSUB_2D_4X  2, 13,  1,  6,  6270, 15137    ; m2/x=t14[d], m13/x=t15[d]
     VP9_RND_SH_SUMSUB_BA     2,  0,  1, 12, 14, [pd_8192]   ; m2=out2[w], m0=t14a[w]
     VP9_RND_SH_SUMSUB_BA    13, 15,  6,  9, 14, [pd_8192]
-    PSIGNW                 m13, [pw_m1]                     ; m13=out13[w], m15=t15a[w]
+    NEGATE                 m13, [pw_m1]                     ; m13=out13[w], m15=t15a[w]
 
     VP9_UNPACK_MULSUB_2D_4X  8,  7, 12,  9, 15137,  6270    ; m8/x=t5[d], m7/x=t4[d]
     VP9_UNPACK_MULSUB_2D_4X  5, 10,  1,  6,  6270, 15137    ; m5/x=t6[d], m10/x=t7[d]
     VP9_RND_SH_SUMSUB_BA     5,  7,  1,  9, 14, [pd_8192]
-    PSIGNW                  m5, [pw_m1]                     ; m5=out3[w], m7=t6[w]
+    NEGATE                  m5, [pw_m1]                     ; m5=out3[w], m7=t6[w]
     VP9_RND_SH_SUMSUB_BA    10,  8,  6, 12, 14, [pd_8192]   ; m10=out12[w], m8=t7[w]
 
     mova                    m1, [blockq+  0]
@@ -1946,19 +1955,19 @@ IADST16_FN iadst, IADST16, iadst, IADST16, ssse3
 
     SUMSUB_BA            w, 14, 12,  5                      ; m14=out0, m12=t2a
     SUMSUB_BA            w,  1,  3,  5
-    PSIGNW                  m1, [pw_m1]                     ; m1=out15, m3=t3a
+    NEGATE                  m1, [pw_m1]                     ; m1=out15, m3=t3a
 
     SUMSUB_BA            w,  9, 11,  5
-    PSIGNW                  m9, [pw_m1]                     ; m9=out1, m11=t10
+    NEGATE                  m9, [pw_m1]                     ; m9=out1, m11=t10
     SUMSUB_BA            w,  6,  4,  5                      ; m6=out14, m4=t11
 
     VP9_UNPACK_MULSUB_2W_4X  4, 11, 11585, 11585, [pd_8192],  5, 10 ; m4=out9, m11=out6
     mova                    m5, [blockq+128]
     mova          [blockq+192], m11
-    PSIGNW                 m15, [pw_m1]
+    NEGATE                 m15, [pw_m1]
     VP9_UNPACK_MULSUB_2W_4X 15,  0, 11585, 11585, [pd_8192], 10, 11 ; m15=out5, m0=out10
 
-    PSIGNW                  m3, [pw_m1]
+    NEGATE                  m3, [pw_m1]
     VP9_UNPACK_MULSUB_2W_4X  3, 12, 11585, 11585, [pd_8192], 10, 11 ; m3=out7,m12=out8
     VP9_UNPACK_MULSUB_2W_4X  8,  7, 11585, 11585, [pd_8192], 10, 11 ; m8=out11,m7=out4
 
diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm
index 775c5275c9..2365a1e65c 100644
--- a/libavutil/x86/x86util.asm
+++ b/libavutil/x86/x86util.asm
@@ -314,15 +314,6 @@
 %endif
 %endmacro
 
-%macro PSIGNW 2
-%if cpuflag(ssse3)
-    psignw     %1, %2
-%else
-    pxor       %1, %2
-    psubw      %1, %2
-%endif
-%endmacro
-
 %macro ABS1 2
 %if cpuflag(ssse3)
     pabsw   %1, %1
-- 
2.52.0


>From 2bcca25a90e97b5cfe054d0f4c10e15f5fd39b5e Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Thu, 13 Aug 2026 17:49:50 +0200
Subject: [PATCH 14/14] avcodec/x86/vp9itxfm: Avoid load

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavcodec/x86/vp9itxfm.asm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/x86/vp9itxfm.asm b/libavcodec/x86/vp9itxfm.asm
index 71e462c0bc..6d120a1be4 100644
--- a/libavcodec/x86/vp9itxfm.asm
+++ b/libavcodec/x86/vp9itxfm.asm
@@ -822,7 +822,7 @@ cglobal vp9_%1_%3_8x8_add, 3, 3, %6, dst, stride, block, eob
     mova               m15, [pw_11585x2]    ; often used
 %endif
     mova               m13, [pd_8192]       ; rounding
-    mova               m14, [pw_m1]
+    pcmpeqw            m14, m14             ; pw_m1
 %define W_11585x2_REG m15
 %define D_8192_REG m13
 %define W_M1_REG m14
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.