diff --git a/libavcodec/x86/h264_qpel_8bit.asm b/libavcodec/x86/h264_qpel_8bit.asm index 89e7c282b2..6a134ee5b4 100644 --- a/libavcodec/x86/h264_qpel_8bit.asm +++ b/libavcodec/x86/h264_qpel_8bit.asm @@ -53,6 +53,32 @@ SECTION .text mova %2, %1 %endmacro +; void ff_put/avg_pixels4_l2_mmxext(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, +; ptrdiff_t stride) +%macro PIXELS4_L2 1 +%define OP op_%1h +cglobal %1_pixels4_l2, 4,4 + mova m0, [r1] + mova m1, [r1+r3] + lea r1, [r1+2*r3] + pavgb m0, [r2] + pavgb m1, [r2+4] + OP m0, [r0], m3 + OP m1, [r0+r3], m3 + lea r0, [r0+2*r3] + mova m0, [r1] + mova m1, [r1+r3] + pavgb m0, [r2+8] + pavgb m1, [r2+12] + OP m0, [r0], m3 + OP m1, [r0+r3], m3 + RET +%endmacro + +INIT_MMX mmxext +PIXELS4_L2 put +PIXELS4_L2 avg + %macro QPEL4_H_LOWPASS_OP 1 cglobal %1_h264_qpel4_h_lowpass, 4,5 ; dst, src, dstStride, srcStride movsxdifnidn r2, r2d diff --git a/libavcodec/x86/qpel.asm b/libavcodec/x86/qpel.asm index 043f7b0a66..93f0d007c3 100644 --- a/libavcodec/x86/qpel.asm +++ b/libavcodec/x86/qpel.asm @@ -25,51 +25,15 @@ SECTION .text -%macro op_avgh 3 - movh %3, %2 - pavgb %1, %3 - movh %2, %1 -%endmacro - %macro op_avg 2 pavgb %1, %2 mova %2, %1 %endmacro -%macro op_puth 2-3 - movh %2, %1 -%endmacro - %macro op_put 2 mova %2, %1 %endmacro -; void ff_put/avg_pixels4_l2_mmxext(uint8_t *dst, uint8_t *src1, uint8_t *src2, -; ptrdiff_t stride) -%macro PIXELS4_L2 1 -%define OP op_%1h -cglobal %1_pixels4_l2, 4,4 - mova m0, [r1] - mova m1, [r1+r3] - lea r1, [r1+2*r3] - pavgb m0, [r2] - pavgb m1, [r2+4] - OP m0, [r0], m3 - OP m1, [r0+r3], m3 - lea r0, [r0+2*r3] - mova m0, [r1] - mova m1, [r1+r3] - pavgb m0, [r2+8] - pavgb m1, [r2+12] - OP m0, [r0], m3 - OP m1, [r0+r3], m3 - RET -%endmacro - -INIT_MMX mmxext -PIXELS4_L2 put -PIXELS4_L2 avg - %macro PIXELS8_L2 1 %define OP op_%1 %ifidn %1, put