This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 607862dd6685f53bdb26b6c92e4d04057d1c18f8 Author: Zuxy Meng <[email protected]> AuthorDate: Mon Apr 27 22:40:15 2026 -0700 Commit: Zuxy Meng <[email protected]> CommitDate: Fri Jul 24 19:16:45 2026 -0700 avcodec/x86/h264_intrapred: SSE2 impl. of pred8x8l_vertical_8 Deprecate MMX. Remove the SSSE3 impl. since we no longer use palignr. pred8x8l_vertical_8_mmxext: 7.4 ( 3.61x) pred8x8l_vertical_8_ssse3: 6.6 ( 4.03x) pred8x8l_vertical_8_sse2: 6.3 ( 4.19x) Signed-off-by: Zuxy Meng <[email protected]> --- libavcodec/x86/h264_intrapred.asm | 58 ++++++++++++++---------------------- libavcodec/x86/h264_intrapred_init.c | 6 ++-- 2 files changed, 24 insertions(+), 40 deletions(-) diff --git a/libavcodec/x86/h264_intrapred.asm b/libavcodec/x86/h264_intrapred.asm index 6dc941eb02..841ee9255e 100644 --- a/libavcodec/x86/h264_intrapred.asm +++ b/libavcodec/x86/h264_intrapred.asm @@ -1030,51 +1030,37 @@ PRED8x8L_HORIZONTAL ; ptrdiff_t stride) ;----------------------------------------------------------------------------- -%macro PRED8x8L_VERTICAL 0 -cglobal pred8x8l_vertical_8, 4,4 +INIT_XMM sse2 +cglobal pred8x8l_vertical_8, 4,4,5 sub r0, r3 - movq mm0, [r0-8] - movq mm3, [r0] - movq mm1, [r0+8] - movq mm2, mm3 - movq mm4, mm3 - PALIGNR mm2, mm0, 7, mm0 - PALIGNR mm1, mm4, 1, mm4 + movu m2, [r0-8] + movu m3, [r0] + mova m1, m3 + psrldq m2, 7 + psrldq m1, 1 test r1d, r1d ; top_left - jz .fix_lt_2 - test r2d, r2d ; top_right - jz .fix_tr_1 - jmp .body -.fix_lt_2: - movq mm5, mm3 - pxor mm5, mm2 - psllq mm5, 56 - psrlq mm5, 56 - pxor mm2, mm5 + jnz .check_tr + pxor m4, m3, m2 + psllq m4, 56 + psrlq m4, 56 + pxor m2, m4 +.check_tr: test r2d, r2d ; top_right jnz .body -.fix_tr_1: - movq mm5, mm3 - pxor mm5, mm1 - psrlq mm5, 56 - psllq mm5, 56 - pxor mm1, mm5 + pxor m4, m3, m1 + psrlq m4, 56 + psllq m4, 56 + pxor m1, m4 .body: - PRED4x4_LOWPASS mm3, mm2, mm1, mm3, mm5 + PRED4x4_LOWPASS m3, m2, m1, m3, m4 %rep 3 - movq [r0+r3*1], mm3 - movq [r0+r3*2], mm3 + movq [r0+r3*1], m3 + movq [r0+r3*2], m3 lea r0, [r0+r3*2] %endrep - movq [r0+r3*1], mm3 - movq [r0+r3*2], mm3 + movq [r0+r3*1], m3 + movq [r0+r3*2], m3 RET -%endmacro - -INIT_MMX mmxext -PRED8x8L_VERTICAL -INIT_MMX ssse3 -PRED8x8L_VERTICAL ;----------------------------------------------------------------------------- ; void ff_pred8x8l_down_left_8(uint8_t *src, int has_topleft, diff --git a/libavcodec/x86/h264_intrapred_init.c b/libavcodec/x86/h264_intrapred_init.c index ebcbe0891d..5cc83d17c7 100644 --- a/libavcodec/x86/h264_intrapred_init.c +++ b/libavcodec/x86/h264_intrapred_init.c @@ -130,8 +130,7 @@ PRED8x8L(top_dc, 8, sse2) PRED8x8L(dc, 8, sse2) PRED8x8L(horizontal, 8, mmxext) PRED8x8L(horizontal, 8, ssse3) -PRED8x8L(vertical, 8, mmxext) -PRED8x8L(vertical, 8, ssse3) +PRED8x8L(vertical, 8, sse2) PRED8x8L(down_left, 8, sse2) PRED8x8L(down_left, 8, ssse3) PRED8x8L(down_right, 8, sse2) @@ -165,7 +164,6 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, if (bit_depth == 8) { if (EXTERNAL_MMXEXT(cpu_flags)) { h->pred8x8l [HOR_PRED ] = ff_pred8x8l_horizontal_8_mmxext; - h->pred8x8l [VERT_PRED ] = ff_pred8x8l_vertical_8_mmxext; h->pred8x8l [HOR_UP_PRED ] = ff_pred8x8l_horizontal_up_8_mmxext; h->pred4x4 [DIAG_DOWN_RIGHT_PRED ] = ff_pred4x4_down_right_8_mmxext; h->pred4x4 [VERT_RIGHT_PRED ] = ff_pred4x4_vertical_right_8_mmxext; @@ -197,6 +195,7 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_8_sse2; h->pred8x8l [DC_PRED ] = ff_pred8x8l_dc_8_sse2; h->pred8x8l [TOP_DC_PRED ] = ff_pred8x8l_top_dc_8_sse2; + h->pred8x8l [VERT_PRED ] = ff_pred8x8l_vertical_8_sse2; h->pred8x8l [DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_8_sse2; h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_8_sse2; h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_8_sse2; @@ -232,7 +231,6 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, if (chroma_format_idc <= 1) h->pred8x8 [HOR_PRED8x8 ] = ff_pred8x8_horizontal_8_ssse3; h->pred8x8l [HOR_PRED ] = ff_pred8x8l_horizontal_8_ssse3; - h->pred8x8l [VERT_PRED ] = ff_pred8x8l_vertical_8_ssse3; h->pred8x8l [DIAG_DOWN_LEFT_PRED ] = ff_pred8x8l_down_left_8_ssse3; h->pred8x8l [DIAG_DOWN_RIGHT_PRED ] = ff_pred8x8l_down_right_8_ssse3; h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_8_ssse3; _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
