Commit 0be722e0b7 for ffmpeg

commit 0be722e0b7f1c50530bdf4fa5124069ad92f9a06
Author: Zuxy Meng <zuxy.meng@gmail.com>
Date:   Mon Nov 2 21:09:13 2026 -0800

    avcodec/x86/vp9: convert v_4x4_16 predictor MMX to SSE

    Convert the 16-bit vertical 4x4 predictor from MMX to XMM.

    Benchmarks (checkasm, Zen 4, pinned, median of 3
    interleaved pairs, cycles): both sides sit at the ~0.1
    cycle noise floor for this single-load/four-store kernel,
    with no measurable difference (10bpp: 0.2/0.0/0.1 -> 0.1/
    0.1/0.1; 12bpp: 0.1/0.0/0.1 -> 0.2/0.1/0.1).

    checkasm --test=vp9dsp passes (1272/1272 over 4 seeds).

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

diff --git a/libavcodec/x86/vp9dsp_init_16bpp.c b/libavcodec/x86/vp9dsp_init_16bpp.c
index 3748c316b0..0c290e0f4b 100644
--- a/libavcodec/x86/vp9dsp_init_16bpp.c
+++ b/libavcodec/x86/vp9dsp_init_16bpp.c
@@ -43,7 +43,7 @@ decl_fpel_func(avg,  32, _16, avx2);
 decl_fpel_func(avg,  64, _16, avx2);
 decl_fpel_func(avg, 128, _16, avx2);

-decl_ipred_fns(v,       16, mmx,    sse);
+decl_ipred_fns(v,       16, sse,    sse);
 decl_ipred_fns(h,       16, mmxext, sse2);
 decl_ipred_fns(dc,      16, mmxext, sse2);
 decl_ipred_fns(dc_top,  16, mmxext, sse2);
@@ -71,10 +71,6 @@ av_cold void ff_vp9dsp_init_16bpp_x86(VP9DSPContext *dsp)
 {
     int cpu_flags = av_get_cpu_flags();

-    if (EXTERNAL_MMX(cpu_flags)) {
-        init_ipred_func(v, VERT, 4, 16, mmx);
-    }
-
     if (EXTERNAL_MMXEXT(cpu_flags)) {
         init_ipred_func(h, HOR, 4, 16, mmxext);
         init_ipred_func(dc, DC, 4, 16, mmxext);
@@ -88,6 +84,7 @@ av_cold void ff_vp9dsp_init_16bpp_x86(VP9DSPContext *dsp)
         init_fpel_func(1, 0,  64, put, , sse);
         init_fpel_func(0, 0, 128, put, , sse);
         init_8_16_32_ipred_funcs(v, VERT, 16, sse);
+        init_ipred_func(v, VERT, 4, 16, sse);
     }

     if (EXTERNAL_SSE2(cpu_flags)) {
diff --git a/libavcodec/x86/vp9intrapred_16bpp.asm b/libavcodec/x86/vp9intrapred_16bpp.asm
index 808056a809..9ba20a986a 100644
--- a/libavcodec/x86/vp9intrapred_16bpp.asm
+++ b/libavcodec/x86/vp9intrapred_16bpp.asm
@@ -82,16 +82,17 @@ SECTION .text
 %endif
 %endmacro

-INIT_MMX mmx
+INIT_XMM sse
 cglobal vp9_ipred_v_4x4_16, 2, 4, 1, dst, stride, l, a
     movifnidn               aq, amp
-    mova                    m0, [aq]
+    xorps                   m0, m0
+    movlps                  m0, [aq]
     DEFINE_ARGS dst, stride, stride3
     lea               stride3q, [strideq*3]
-    mova      [dstq+strideq*0], m0
-    mova      [dstq+strideq*1], m0
-    mova      [dstq+strideq*2], m0
-    mova      [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