Commit 678bc6291a for ffmpeg

commit 678bc6291a10dd997deceee84041fd4e9be0bb59
Author: Zuxy Meng <zuxy.meng@gmail.com>
Date:   Mon Nov 2 20:08:38 2026 -0800

    avcodec/x86/vp9: convert v_8x8 and tm_4x4 predictors MMX to XMM

    Convert ff_vp9_ipred_v_8x8 (plain 8-byte row copies) from MMX
    to SSE and ff_vp9_ipred_tm_4x4 from MMX/SSSE3 to XMM/SSSE3,
    keeping the _ssse3 name for the latter.

    Benchmarks (checkasm, Zen 4, pinned, median of 3, cycles):
     vp9_vert_8x8: 1.2 -> 1.2 (measurement floor, plain copies)
     vp9_tm_4x4_ssse3: 9.3 -> 9.7 (1.04x, noise)

    checkasm --test=vp9dsp passes (1272/1272, fresh build).

    Signed-off-by: Zuxy Meng <zuxy.meng@gmail.com>

diff --git a/libavcodec/x86/vp9dsp_init.c b/libavcodec/x86/vp9dsp_init.c
index 7b2fd27203..d259009c80 100644
--- a/libavcodec/x86/vp9dsp_init.c
+++ b/libavcodec/x86/vp9dsp_init.c
@@ -155,7 +155,7 @@ void ff_vp9_ipred_##type##_##size##x##size##_##opt(uint8_t *dst, ptrdiff_t strid

 ipred_func(4, hd, mmxext);
 ipred_func(4, vl, mmxext);
-ipred_func(8, v, mmx);
+ipred_func(8, v, sse);

 #define ipred_dc_funcs(size, opt) \
 ipred_func(size, dc, opt); \
@@ -271,7 +271,6 @@ av_cold void ff_vp9dsp_init_x86(VP9DSPContext *dsp, int bpp, int bitexact)
             dsp->itxfm_add[4 /* lossless */][DCT_ADST] =
             dsp->itxfm_add[4 /* lossless */][ADST_ADST] = ff_vp9_iwht_iwht_4x4_add_mmx;
         }
-        init_ipred(8, mmx, v, VERT);
     }

     if (EXTERNAL_MMXEXT(cpu_flags)) {
@@ -287,6 +286,7 @@ av_cold void ff_vp9dsp_init_x86(VP9DSPContext *dsp, int bpp, int bitexact)
         init_fpel_func(2, 0, 16, put, , sse);
         init_fpel_func(1, 0, 32, put, , sse);
         init_fpel_func(0, 0, 64, put, , sse);
+        init_ipred(8, sse, v, VERT);
         init_ipred(16, sse, v, VERT);
         init_ipred(32, sse, v, VERT);
     }
diff --git a/libavcodec/x86/vp9intrapred.asm b/libavcodec/x86/vp9intrapred.asm
index 4f1ee85c98..147f3bad68 100644
--- a/libavcodec/x86/vp9intrapred.asm
+++ b/libavcodec/x86/vp9intrapred.asm
@@ -327,20 +327,21 @@ INIT_XMM ssse3
 DC_1D_16to32_FUNCS top,  a
 DC_1D_16to32_FUNCS left, l

-INIT_MMX mmx
-cglobal vp9_ipred_v_8x8, 4, 4, 0, dst, stride, l, a
-    movq                    m0, [aq]
+INIT_XMM sse
+cglobal vp9_ipred_v_8x8, 4, 4, 1, dst, stride, l, a
+    xorps                   m0, m0
+    movlps                  m0, [aq]
     DEFINE_ARGS dst, stride, stride3
     lea               stride3q, [strideq*3]
-    movq      [dstq+strideq*0], m0
-    movq      [dstq+strideq*1], m0
-    movq      [dstq+strideq*2], m0
-    movq      [dstq+stride3q ], m0
+    movlps    [dstq+strideq*0], m0
+    movlps    [dstq+strideq*1], m0
+    movlps    [dstq+strideq*2], m0
+    movlps    [dstq+stride3q ], m0
     lea                   dstq, [dstq+strideq*4]
-    movq      [dstq+strideq*0], m0
-    movq      [dstq+strideq*1], m0
-    movq      [dstq+strideq*2], m0
-    movq      [dstq+stride3q ], m0
+    movlps    [dstq+strideq*0], m0
+    movlps    [dstq+strideq*1], m0
+    movlps    [dstq+strideq*2], m0
+    movlps    [dstq+stride3q ], m0
     RET

 INIT_XMM sse
@@ -513,8 +514,8 @@ H_XMM_FUNCS 4, 8
 INIT_XMM avx
 H_XMM_FUNCS 4, 8

-INIT_MMX ssse3
-cglobal vp9_ipred_tm_4x4, 4, 4, 0, dst, stride, l, a
+INIT_XMM ssse3
+cglobal vp9_ipred_tm_4x4, 4, 4, 5, dst, stride, l, a
     pxor                    m1, m1
     movd                    m0, [aq]
     pinsrw                  m2, [aq-1], 0