diff --git a/libavcodec/x86/h264_intrapred.asm b/libavcodec/x86/h264_intrapred.asm index a6aebd56ac..a11e9dc7ed 100644 --- a/libavcodec/x86/h264_intrapred.asm +++ b/libavcodec/x86/h264_intrapred.asm @@ -52,13 +52,13 @@ INIT_XMM sse cglobal pred16x16_vertical_8, 2,3 sub r0, r1 mov r2, 4 - movaps xmm0, [r0] + movaps m0, [r0] .loop: - movaps [r0+r1*1], xmm0 - movaps [r0+r1*2], xmm0 + movaps [r0+r1*1], m0 + movaps [r0+r1*2], m0 lea r0, [r0+r1*2] - movaps [r0+r1*1], xmm0 - movaps [r0+r1*2], xmm0 + movaps [r0+r1*1], m0 + movaps [r0+r1*2], m0 lea r0, [r0+r1*2] dec r2 jg .loop @@ -165,11 +165,11 @@ PRED16x16_DC INIT_XMM sse2 cglobal pred16x16_tm_vp8_8, 2,6,6 sub r0, r1 - pxor xmm2, xmm2 - movdqa xmm0, [r0] - movdqa xmm1, xmm0 - punpcklbw xmm0, xmm2 - punpckhbw xmm1, xmm2 + pxor m2, m2 + mova m0, [r0] + mova m1, m0 + punpcklbw m0, m2 + punpckhbw m1, m2 movzx r4d, byte [r0-1] mov r5d, 8 .loop: @@ -177,22 +177,22 @@ cglobal pred16x16_tm_vp8_8, 2,6,6 movzx r3d, byte [r0+r1*2-1] sub r2d, r4d sub r3d, r4d - movd xmm2, r2d - movd xmm4, r3d - pshuflw xmm2, xmm2, 0 - pshuflw xmm4, xmm4, 0 - punpcklqdq xmm2, xmm2 - punpcklqdq xmm4, xmm4 - movdqa xmm3, xmm2 - movdqa xmm5, xmm4 - paddw xmm2, xmm0 - paddw xmm3, xmm1 - paddw xmm4, xmm0 - paddw xmm5, xmm1 - packuswb xmm2, xmm3 - packuswb xmm4, xmm5 - movdqa [r0+r1*1], xmm2 - movdqa [r0+r1*2], xmm4 + movd m2, r2d + movd m4, r3d + pshuflw m2, m2, 0 + pshuflw m4, m4, 0 + punpcklqdq m2, m2 + punpcklqdq m4, m4 + mova m3, m2 + mova m5, m4 + paddw m2, m0 + paddw m3, m1 + paddw m4, m0 + paddw m5, m1 + packuswb m2, m3 + packuswb m4, m5 + mova [r0+r1*1], m2 + mova [r0+r1*2], m4 lea r0, [r0+r1*2] dec r5d jg .loop @@ -624,26 +624,26 @@ PRED8x8_H INIT_XMM sse2 cglobal pred8x8_top_dc_8, 2,5,2 sub r0, r1 - movq xmm0, [r0] - pxor xmm1, xmm1 + movq m0, [r0] + pxor m1, m1 lea r2, [r0+r1*2] - punpcklbw xmm0, xmm1 - psadbw xmm0, xmm1 ; s0,0,0,0,s1,0,0,0 (w) + punpcklbw m0, m1 + psadbw m0, m1 ; s0,0,0,0,s1,0,0,0 (w) lea r3, [r2+r1*2] - psrlw xmm0, 1 - pavgw xmm0, xmm1 - pshuflw xmm0, xmm0, 0 ; dc0,dc0,dc0,dc0,dc1,0,0,0 - pshufhw xmm0, xmm0, 0 ; dc0,dc1 (w) - packuswb xmm0, xmm1 ; dc0,dc1 (b) - movq [r0+r1*1], xmm0 - movq [r0+r1*2], xmm0 + psrlw m0, 1 + pavgw m0, m1 + pshuflw m0, m0, 0 ; dc0,dc0,dc0,dc0,dc1,0,0,0 + pshufhw m0, m0, 0 ; dc0,dc1 (w) + packuswb m0, m1 ; dc0,dc1 (b) + movq [r0+r1*1], m0 + movq [r0+r1*2], m0 lea r0, [r3+r1*2] - movq [r2+r1*1], xmm0 - movq [r2+r1*2], xmm0 - movq [r3+r1*1], xmm0 - movq [r3+r1*2], xmm0 - movq [r0+r1*1], xmm0 - movq [r0+r1*2], xmm0 + movq [r2+r1*1], m0 + movq [r2+r1*2], m0 + movq [r3+r1*1], m0 + movq [r3+r1*2], m0 + movq [r0+r1*1], m0 + movq [r0+r1*2], m0 RET ;----------------------------------------------------------------------------- @@ -750,9 +750,9 @@ cglobal pred8x8_dc_rv40_8, 2,7,2 INIT_XMM sse2 cglobal pred8x8_tm_vp8_8, 2,6,4 sub r0, r1 - pxor xmm1, xmm1 - movq xmm0, [r0] - punpcklbw xmm0, xmm1 + pxor m1, m1 + movq m0, [r0] + punpcklbw m0, m1 movzx r4d, byte [r0-1] mov r5d, 4 .loop: @@ -760,17 +760,17 @@ cglobal pred8x8_tm_vp8_8, 2,6,4 movzx r3d, byte [r0+r1*2-1] sub r2d, r4d sub r3d, r4d - movd xmm2, r2d - movd xmm3, r3d - pshuflw xmm2, xmm2, 0 - pshuflw xmm3, xmm3, 0 - punpcklqdq xmm2, xmm2 - punpcklqdq xmm3, xmm3 - paddw xmm2, xmm0 - paddw xmm3, xmm0 - packuswb xmm2, xmm3 - movq [r0+r1*1], xmm2 - movhps [r0+r1*2], xmm2 + movd m2, r2d + movd m3, r3d + pshuflw m2, m2, 0 + pshuflw m3, m3, 0 + punpcklqdq m2, m2 + punpcklqdq m3, m3 + paddw m2, m0 + paddw m3, m0 + packuswb m2, m3 + movq [r0+r1*1], m2 + movhps [r0+r1*2], m2 lea r0, [r0+r1*2] dec r5d jg .loop @@ -779,25 +779,25 @@ cglobal pred8x8_tm_vp8_8, 2,6,4 INIT_XMM ssse3 cglobal pred8x8_tm_vp8_8, 2,3,6 sub r0, r1 - movdqa xmm4, [tm_shuf] - pxor xmm1, xmm1 - movq xmm0, [r0] - punpcklbw xmm0, xmm1 - movd xmm5, [r0-4] - pshufb xmm5, xmm4 + mova m4, [tm_shuf] + pxor m1, m1 + movq m0, [r0] + punpcklbw m0, m1 + movd m5, [r0-4] + pshufb m5, m4 mov r2d, 4 .loop: - movd xmm2, [r0+r1*1-4] - movd xmm3, [r0+r1*2-4] - pshufb xmm2, xmm4 - pshufb xmm3, xmm4 - psubw xmm2, xmm5 - psubw xmm3, xmm5 - paddw xmm2, xmm0 - paddw xmm3, xmm0 - packuswb xmm2, xmm3 - movq [r0+r1*1], xmm2 - movhps [r0+r1*2], xmm2 + movd m2, [r0+r1*1-4] + movd m3, [r0+r1*2-4] + pshufb m2, m4 + pshufb m3, m4 + psubw m2, m5 + psubw m3, m5 + paddw m2, m0 + paddw m3, m0 + packuswb m2, m3 + movq [r0+r1*1], m2 + movhps [r0+r1*2], m2 lea r0, [r0+r1*2] dec r2d jg .loop @@ -1066,74 +1066,74 @@ cglobal pred8x8l_vertical_8, 4,4,5 INIT_XMM sse2 cglobal pred8x8l_down_left_8, 4,4,6 sub r0, r3 - movu xmm2, [r0-8] - movu xmm1, [r0] - mova xmm3, xmm1 - psrldq xmm2, 7 - psrldq xmm1, 1 + movu m2, [r0-8] + movu m1, [r0] + mova m3, m1 + psrldq m2, 7 + psrldq m1, 1 test r1d, r1d ; top_left jnz .check_tr .fix_lt: - pxor xmm5, xmm3, xmm2 - psllq xmm5, 56 - psrlq xmm5, 56 - pxor xmm2, xmm5 + pxor m5, m3, m2 + psllq m5, 56 + psrlq m5, 56 + pxor m2, m5 .check_tr: test r2d, r2d ; top_right jnz .do_top .fix_tr_1: - pxor xmm5, xmm3, xmm1 - psrlq xmm5, 56 - psllq xmm5, 56 - pxor xmm1, xmm5 + pxor m5, m3, m1 + psrlq m5, 56 + psllq m5, 56 + pxor m1, m5 .do_top: - PRED4x4_LOWPASS xmm4, xmm2, xmm1, xmm3, xmm5 - movq xmm2, xmm4 + PRED4x4_LOWPASS m4, m2, m1, m3, m5 + movq m2, m4 test r2d, r2d ; top_right jnz .has_top_right .fix_tr_2: - punpcklbw xmm3, xmm3 - pshufhw xmm1, xmm3, 0xff - pshufd xmm1, xmm1, 0xee + punpcklbw m3, m3 + pshufhw m1, m3, 0xff + pshufd m1, m1, 0xee jmp .do_topright .has_top_right: - movq xmm0, [r0+8] - psrlq xmm5, xmm0, 56 - punpcklqdq xmm3, xmm0 - psrldq xmm3, 7 - punpcklqdq xmm4, xmm0, xmm5 - psrldq xmm4, 1 - PRED4x4_LOWPASS xmm1, xmm3, xmm4, xmm0, xmm5 + movq m0, [r0+8] + psrlq m5, m0, 56 + punpcklqdq m3, m0 + psrldq m3, 7 + punpcklqdq m4, m0, m5 + psrldq m4, 1 + PRED4x4_LOWPASS m1, m3, m4, m0, m5 .do_topright: - mova xmm4, xmm1 - psrlq xmm1, 56 - pslldq xmm1, 15 + mova m4, m1 + psrlq m1, 56 + pslldq m1, 15 lea r1, [r0+r3*2] - pslldq xmm4, 8 - por xmm2, xmm4 - movdqa xmm3, xmm2 - psrldq xmm2, 1 - por xmm2, xmm1 + pslldq m4, 8 + por m2, m4 + mova m3, m2 + psrldq m2, 1 + por m2, m1 lea r2, [r1+r3*2] - pslldq xmm1, xmm3, 1 - PRED4x4_LOWPASS xmm3, xmm1, xmm2, xmm3, xmm4 - psrldq xmm3, 1 - movq [r0+r3*1], xmm3 - psrldq xmm3, 1 - movq [r0+r3*2], xmm3 - psrldq xmm3, 1 + pslldq m1, m3, 1 + PRED4x4_LOWPASS m3, m1, m2, m3, m4 + psrldq m3, 1 + movq [r0+r3*1], m3 + psrldq m3, 1 + movq [r0+r3*2], m3 + psrldq m3, 1 lea r0, [r2+r3*2] - movq [r1+r3*1], xmm3 - psrldq xmm3, 1 - movq [r1+r3*2], xmm3 - psrldq xmm3, 1 - movq [r2+r3*1], xmm3 - psrldq xmm3, 1 - movq [r2+r3*2], xmm3 - psrldq xmm3, 1 - movq [r0+r3*1], xmm3 - psrldq xmm3, 1 - movq [r0+r3*2], xmm3 + movq [r1+r3*1], m3 + psrldq m3, 1 + movq [r1+r3*2], m3 + psrldq m3, 1 + movq [r2+r3*1], m3 + psrldq m3, 1 + movq [r2+r3*2], m3 + psrldq m3, 1 + movq [r0+r3*1], m3 + psrldq m3, 1 + movq [r0+r3*2], m3 RET ;----------------------------------------------------------------------------- @@ -1145,101 +1145,101 @@ INIT_XMM sse2 cglobal pred8x8l_down_right_8, 4,5,7 sub r0, r3 lea r4, [r0+r3*2] - movd xmm0, [r0+r3*1-4] - movd xmm4, [r0+r3*0-4] - punpcklbw xmm0, xmm4 - movd xmm1, [r4+r3*1-4] - movd xmm4, [r0+r3*2-4] - punpcklbw xmm1, xmm4 + movd m0, [r0+r3*1-4] + movd m4, [r0+r3*0-4] + punpcklbw m0, m4 + movd m1, [r4+r3*1-4] + movd m4, [r0+r3*2-4] + punpcklbw m1, m4 mov r4, r0 - punpcklwd xmm1, xmm0 + punpcklwd m1, m0 lea r0, [r0+r3*4] - movd xmm2, [r0+r3*1-4] - movd xmm4, [r0+r3*0-4] - punpcklbw xmm2, xmm4 + movd m2, [r0+r3*1-4] + movd m4, [r0+r3*0-4] + punpcklbw m2, m4 lea r0, [r0+r3*2] - movd xmm3, [r0+r3*1-4] - movd xmm4, [r0+r3*0-4] - punpcklbw xmm3, xmm4 - punpcklwd xmm3, xmm2 - punpckhdq xmm3, xmm1 - pshufd xmm3, xmm3, 0xee + movd m3, [r0+r3*1-4] + movd m4, [r0+r3*0-4] + punpcklbw m3, m4 + punpcklwd m3, m2 + punpckhdq m3, m1 + pshufd m3, m3, 0xee lea r0, [r0+r3*2] - movq xmm0, [r0+r3*0-8] - movq xmm1, [r4] + movq m0, [r0+r3*0-8] + movq m1, [r4] mov r0, r4 - mova xmm2, xmm3 - punpcklqdq xmm0, xmm3 - psrldq xmm4, xmm0, 7 - punpcklqdq xmm2, xmm1 - psrldq xmm1, xmm2, 1 + mova m2, m3 + punpcklqdq m0, m3 + psrldq m4, m0, 7 + punpcklqdq m2, m1 + psrldq m1, m2, 1 test r1d, r1d jnz .do_left .fix_lt_1: - pxor xmm5, xmm3, xmm4 - psrlq xmm5, 56 - psllq xmm5, 48 - pxor xmm1, xmm5 + pxor m5, m3, m4 + psrlq m5, 56 + psllq m5, 48 + pxor m1, m5 .do_left: - mova xmm0, xmm4 - PRED4x4_LOWPASS xmm2, xmm1, xmm4, xmm3, xmm5 - mova xmm4, xmm0 - movq xmm6, xmm2 - PRED4x4_LOWPASS xmm1, xmm3, xmm0, xmm4, xmm5 - psllq xmm1, 56 - punpcklqdq xmm1, xmm2 - psrldq xmm1, 7 - mova xmm0, xmm1 - movu xmm2, [r0-8] - movu xmm1, [r0] - mova xmm3, xmm1 - psrldq xmm2, 7 - psrldq xmm1, 1 + mova m0, m4 + PRED4x4_LOWPASS m2, m1, m4, m3, m5 + mova m4, m0 + movq m6, m2 + PRED4x4_LOWPASS m1, m3, m0, m4, m5 + psllq m1, 56 + punpcklqdq m1, m2 + psrldq m1, 7 + mova m0, m1 + movu m2, [r0-8] + movu m1, [r0] + mova m3, m1 + psrldq m2, 7 + psrldq m1, 1 jnz .check_tr .fix_lt_2: - pxor xmm5, xmm3, xmm2 - psllq xmm5, 56 - psrlq xmm5, 56 - pxor xmm2, xmm5 + pxor m5, m3, m2 + psllq m5, 56 + psrlq m5, 56 + pxor m2, m5 .check_tr: test r2d, r2d jnz .do_top .fix_tr_1: - pxor xmm5, xmm3, xmm1 - psrlq xmm5, 56 - psllq xmm5, 56 - pxor xmm1, xmm5 + pxor m5, m3, m1 + psrlq m5, 56 + psllq m5, 56 + pxor m1, m5 .do_top: - PRED4x4_LOWPASS xmm4, xmm2, xmm1, xmm3, xmm5 + PRED4x4_LOWPASS m4, m2, m1, m3, m5 lea r1, [r0+r3*2] - movdqa xmm1, xmm6 - pslldq xmm4, 8 - por xmm6, xmm4 + mova m1, m6 + pslldq m4, 8 + por m6, m4 lea r2, [r1+r3*2] - pslldq xmm4, 1 - por xmm0, xmm4 - psrldq xmm1, 7 - pslldq xmm1, 15 - psrldq xmm1, 7 - por xmm0, xmm1 + pslldq m4, 1 + por m0, m4 + psrldq m1, 7 + pslldq m1, 15 + psrldq m1, 7 + por m0, m1 lea r0, [r2+r3*2] - psrldq xmm2, xmm6, 1 - PRED4x4_LOWPASS xmm3, xmm0, xmm2, xmm6, xmm4 - psrldq xmm1, xmm3, 1 - movq [r0+r3*2], xmm3 - movq [r0+r3*1], xmm1 - psrldq xmm3, 2 - psrldq xmm1, 2 - movq [r2+r3*2], xmm3 - movq [r2+r3*1], xmm1 - psrldq xmm3, 2 - psrldq xmm1, 2 - movq [r1+r3*2], xmm3 - movq [r1+r3*1], xmm1 - psrldq xmm3, 2 - psrldq xmm1, 2 - movq [r4+r3*2], xmm3 - movq [r4+r3*1], xmm1 + psrldq m2, m6, 1 + PRED4x4_LOWPASS m3, m0, m2, m6, m4 + psrldq m1, m3, 1 + movq [r0+r3*2], m3 + movq [r0+r3*1], m1 + psrldq m3, 2 + psrldq m1, 2 + movq [r2+r3*2], m3 + movq [r2+r3*1], m1 + psrldq m3, 2 + psrldq m1, 2 + movq [r1+r3*2], m3 + movq [r1+r3*1], m1 + psrldq m3, 2 + psrldq m1, 2 + movq [r4+r3*2], m3 + movq [r4+r3*1], m1 RET ;----------------------------------------------------------------------------- @@ -1251,101 +1251,101 @@ INIT_XMM sse2 cglobal pred8x8l_vertical_right_8, 4,5,6 sub r0, r3 lea r4, [r0+r3*2] - movd xmm0, [r0+r3*1-4] - movd xmm2, [r0+r3*0-4] - punpcklbw xmm0, xmm2 - movd xmm1, [r4+r3*1-4] - movd xmm3, [r0+r3*2-4] - punpcklbw xmm1, xmm3 + movd m0, [r0+r3*1-4] + movd m2, [r0+r3*0-4] + punpcklbw m0, m2 + movd m1, [r4+r3*1-4] + movd m3, [r0+r3*2-4] + punpcklbw m1, m3 mov r4, r0 - punpcklwd xmm1, xmm0 + punpcklwd m1, m0 lea r0, [r0+r3*4] - movd xmm2, [r0+r3*1-4] - movd xmm5, [r0+r3*0-4] - punpcklbw xmm2, xmm5 + movd m2, [r0+r3*1-4] + movd m5, [r0+r3*0-4] + punpcklbw m2, m5 lea r0, [r0+r3*2] - movd xmm3, [r0+r3*1-4] - movd xmm5, [r0+r3*0-4] - punpcklbw xmm3, xmm5 - punpcklwd xmm3, xmm2 - punpckhdq xmm3, xmm1 - pshufd xmm3, xmm3, 0xee + movd m3, [r0+r3*1-4] + movd m5, [r0+r3*0-4] + punpcklbw m3, m5 + punpcklwd m3, m2 + punpckhdq m3, m1 + pshufd m3, m3, 0xee lea r0, [r0+r3*2] - movq xmm0, [r0+r3*0-8] - movq xmm1, [r4] + movq m0, [r0+r3*0-8] + movq m1, [r4] mov r0, r4 - punpcklqdq xmm0, xmm3 - psrldq xmm0, 7 - mova xmm4, xmm0 - punpcklqdq xmm2, xmm3, xmm1 - psrldq xmm2, 1 - mova xmm1, xmm2 + punpcklqdq m0, m3 + psrldq m0, 7 + mova m4, m0 + punpcklqdq m2, m3, m1 + psrldq m2, 1 + mova m1, m2 test r1d, r1d jnz .do_left .fix_lt_1: - pxor xmm5, xmm3, xmm4 - psrlq xmm5, 56 - psllq xmm5, 48 - pxor xmm1, xmm5 + pxor m5, m3, m4 + psrlq m5, 56 + psllq m5, 48 + pxor m1, m5 .do_left: - PRED4x4_LOWPASS xmm2, xmm1, xmm4, xmm3, xmm5 - movq xmm0, xmm2 - movu xmm2, [r0-8] - movu xmm1, [r0] - mova xmm3, xmm1 - psrldq xmm2, 7 - psrldq xmm1, 1 + PRED4x4_LOWPASS m2, m1, m4, m3, m5 + movq m0, m2 + movu m2, [r0-8] + movu m1, [r0] + mova m3, m1 + psrldq m2, 7 + psrldq m1, 1 jnz .check_tr .fix_lt_2: - pxor xmm5, xmm3, xmm2 - psllq xmm5, 56 - psrlq xmm5, 56 - pxor xmm2, xmm5 + pxor m5, m3, m2 + psllq m5, 56 + psrlq m5, 56 + pxor m2, m5 .check_tr: test r2d, r2d jnz .do_top .fix_tr_1: - pxor xmm5, xmm3, xmm1 - psrlq xmm5, 56 - psllq xmm5, 56 - pxor xmm1, xmm5 + pxor m5, m3, m1 + psrlq m5, 56 + psllq m5, 56 + pxor m1, m5 .do_top: - PRED4x4_LOWPASS xmm4, xmm2, xmm1, xmm3, xmm5 + PRED4x4_LOWPASS m4, m2, m1, m3, m5 lea r1, [r0+r3*2] - pslldq xmm4, 8 - por xmm0, xmm4 - movdqa xmm1, xmm0 + pslldq m4, 8 + por m0, m4 + mova m1, m0 lea r2, [r0+r3*4] - movdqa xmm2, xmm0 - movdqa xmm3, xmm0 - pslldq xmm0, 1 - pslldq xmm1, 2 - pavgb xmm2, xmm0 - PRED4x4_LOWPASS xmm0, xmm3, xmm1, xmm0, xmm5 - pandn xmm4, [pw_ff00], xmm0 - movdqa xmm5, xmm0 - psrlw xmm0, 8 - packuswb xmm4, xmm0 - movhlps xmm0, xmm4 - movhps [r0+r3*2], xmm5 - movhps [r0+r3*1], xmm2 - psrldq xmm5, 4 - movss xmm5, xmm4 - psrldq xmm2, 4 - movss xmm2, xmm0 + mova m2, m0 + mova m3, m0 + pslldq m0, 1 + pslldq m1, 2 + pavgb m2, m0 + PRED4x4_LOWPASS m0, m3, m1, m0, m5 + pandn m4, [pw_ff00], m0 + mova m5, m0 + psrlw m0, 8 + packuswb m4, m0 + movhlps m0, m4 + movhps [r0+r3*2], m5 + movhps [r0+r3*1], m2 + psrldq m5, 4 + movss m5, m4 + psrldq m2, 4 + movss m2, m0 lea r0, [r2+r3*2] - psrldq xmm5, 1 - psrldq xmm2, 1 - movq [r0+r3*2], xmm5 - movq [r0+r3*1], xmm2 - psrldq xmm5, 1 - psrldq xmm2, 1 - movq [r2+r3*2], xmm5 - movq [r2+r3*1], xmm2 - psrldq xmm5, 1 - psrldq xmm2, 1 - movq [r1+r3*2], xmm5 - movq [r1+r3*1], xmm2 + psrldq m5, 1 + psrldq m2, 1 + movq [r0+r3*2], m5 + movq [r0+r3*1], m2 + psrldq m5, 1 + psrldq m2, 1 + movq [r2+r3*2], m5 + movq [r2+r3*1], m2 + psrldq m5, 1 + psrldq m2, 1 + movq [r1+r3*2], m5 + movq [r1+r3*1], m2 RET ;----------------------------------------------------------------------------- @@ -1356,68 +1356,68 @@ cglobal pred8x8l_vertical_right_8, 4,5,6 INIT_XMM sse2 cglobal pred8x8l_vertical_left_8, 4,4,7 sub r0, r3 - movu xmm2, [r0-8] - movu xmm1, [r0] - mova xmm3, xmm1 - psrldq xmm2, 7 - psrldq xmm1, 1 + movu m2, [r0-8] + movu m1, [r0] + mova m3, m1 + psrldq m2, 7 + psrldq m1, 1 test r1d, r1d jnz .check_tr .fix_lt_2: - pxor xmm5, xmm3, xmm2 - psllq xmm5, 56 - psrlq xmm5, 56 - pxor xmm2, xmm5 + pxor m5, m3, m2 + psllq m5, 56 + psrlq m5, 56 + pxor m2, m5 .check_tr: test r2d, r2d jnz .do_top .fix_tr_1: - pxor xmm5, xmm3, xmm1 - psrlq xmm5, 56 - psllq xmm5, 56 - pxor xmm1, xmm5 + pxor m5, m3, m1 + psrlq m5, 56 + psllq m5, 56 + pxor m1, m5 .do_top: - PRED4x4_LOWPASS xmm4, xmm2, xmm1, xmm3, xmm5 - movq xmm6, xmm4 + PRED4x4_LOWPASS m4, m2, m1, m3, m5 + movq m6, m4 jnz .normal_top .fix_tr_2: - punpcklbw xmm3, xmm3 - pshufd xmm3, xmm3, 0xEE - pshuflw xmm1, xmm3, 0xFF + punpcklbw m3, m3 + pshufd m3, m3, 0xEE + pshuflw m1, m3, 0xFF jmp .do_topright .normal_top: - movq xmm0, [r0+8] - psrlq xmm5, xmm0, 56 - punpcklqdq xmm3, xmm0 - psrldq xmm3, 7 - punpcklqdq xmm4, xmm0, xmm5 - psrldq xmm4, 1 - PRED4x4_LOWPASS xmm1, xmm3, xmm4, xmm0, xmm2 + movq m0, [r0+8] + psrlq m5, m0, 56 + punpcklqdq m3, m0 + psrldq m3, 7 + punpcklqdq m4, m0, m5 + psrldq m4, 1 + PRED4x4_LOWPASS m1, m3, m4, m0, m2 .do_topright: lea r1, [r0+r3*2] lea r2, [r0+r3*4] - pslldq xmm1, 8 - por xmm6, xmm1 - psrldq xmm2, xmm6, 1 - pslldq xmm1, xmm6, 1 - pavgb xmm3, xmm6, xmm2 - PRED4x4_LOWPASS xmm6, xmm1, xmm2, xmm6, xmm5 - psrldq xmm6, 1 - movq [r0+r3*1], xmm3 - movq [r0+r3*2], xmm6 + pslldq m1, 8 + por m6, m1 + psrldq m2, m6, 1 + pslldq m1, m6, 1 + pavgb m3, m6, m2 + PRED4x4_LOWPASS m6, m1, m2, m6, m5 + psrldq m6, 1 + movq [r0+r3*1], m3 + movq [r0+r3*2], m6 lea r0, [r2+r3*2] - psrldq xmm3, 1 - psrldq xmm6, 1 - movq [r1+r3*1], xmm3 - movq [r1+r3*2], xmm6 - psrldq xmm3, 1 - psrldq xmm6, 1 - movq [r2+r3*1], xmm3 - movq [r2+r3*2], xmm6 - psrldq xmm3, 1 - psrldq xmm6, 1 - movq [r0+r3*1], xmm3 - movq [r0+r3*2], xmm6 + psrldq m3, 1 + psrldq m6, 1 + movq [r1+r3*1], m3 + movq [r1+r3*2], m6 + psrldq m3, 1 + psrldq m6, 1 + movq [r2+r3*1], m3 + movq [r2+r3*2], m6 + psrldq m3, 1 + psrldq m6, 1 + movq [r0+r3*1], m3 + movq [r0+r3*2], m6 RET ;----------------------------------------------------------------------------- @@ -1513,118 +1513,118 @@ cglobal pred8x8l_horizontal_up_8, 4,4,6 cglobal pred8x8l_horizontal_down_8, 4,5,8 sub r0, r3 lea r4, [r0+r3*2] - movd xmm0, [r0+r3*1-4] - movd xmm1, [r0+r3*0-4] - punpcklbw xmm0, xmm1 - movd xmm1, [r4+r3*1-4] - movd xmm2, [r0+r3*2-4] - punpcklbw xmm1, xmm2 + movd m0, [r0+r3*1-4] + movd m1, [r0+r3*0-4] + punpcklbw m0, m1 + movd m1, [r4+r3*1-4] + movd m2, [r0+r3*2-4] + punpcklbw m1, m2 mov r4, r0 - punpcklwd xmm1, xmm0 + punpcklwd m1, m0 lea r0, [r0+r3*4] - movd xmm2, [r0+r3*1-4] - movd xmm3, [r0+r3*0-4] - punpcklbw xmm2, xmm3 + movd m2, [r0+r3*1-4] + movd m3, [r0+r3*0-4] + punpcklbw m2, m3 lea r0, [r0+r3*2] - movd xmm3, [r0+r3*1-4] - movd xmm4, [r0+r3*0-4] - punpcklbw xmm3, xmm4 - punpcklwd xmm3, xmm2 - punpckhdq xmm3, xmm1 - pshufd xmm3, xmm3, 0xee + movd m3, [r0+r3*1-4] + movd m4, [r0+r3*0-4] + punpcklbw m3, m4 + punpcklwd m3, m2 + punpckhdq m3, m1 + pshufd m3, m3, 0xee lea r0, [r0+r3*2] - movq xmm0, [r0+r3*0-8] - movq xmm1, [r4] + movq m0, [r0+r3*0-8] + movq m1, [r4] mov r0, r4 - mova xmm2, xmm3 - punpcklqdq xmm0, xmm3 - psrldq xmm0, 7 - mova xmm4, xmm0 - punpcklqdq xmm2, xmm1 - psrldq xmm2, 1 - mova xmm1, xmm2 + mova m2, m3 + punpcklqdq m0, m3 + psrldq m0, 7 + mova m4, m0 + punpcklqdq m2, m1 + psrldq m2, 1 + mova m1, m2 test r1d, r1d jnz .do_left .fix_lt_1: - pxor xmm5, xmm3, xmm4 - psrlq xmm5, 56 - psllq xmm5, 48 - pxor xmm1, xmm5 + pxor m5, m3, m4 + psrlq m5, 56 + psllq m5, 48 + pxor m1, m5 .do_left: - PRED4x4_LOWPASS xmm2, xmm1, xmm4, xmm3, xmm5 - movq xmm6, xmm2 - pslldq xmm6, 8 - mova xmm4, xmm0 - PRED4x4_LOWPASS xmm1, xmm3, xmm0, xmm4, xmm5 - pslldq xmm2, xmm1, 15 - psrldq xmm2, 8 - por xmm6, xmm2 - movdqu xmm2, [r0-8] - movdqu xmm1, [r0] - mova xmm3, xmm1 - psrldq xmm2, 7 - psrldq xmm1, 1 + PRED4x4_LOWPASS m2, m1, m4, m3, m5 + movq m6, m2 + pslldq m6, 8 + mova m4, m0 + PRED4x4_LOWPASS m1, m3, m0, m4, m5 + pslldq m2, m1, 15 + psrldq m2, 8 + por m6, m2 + movu m2, [r0-8] + movu m1, [r0] + mova m3, m1 + psrldq m2, 7 + psrldq m1, 1 test r1d, r1d jnz .check_r2 .fix_lt_2: - pxor xmm5, xmm3, xmm2 - psllq xmm5, 56 - psrlq xmm5, 56 - pxor xmm2, xmm5 + pxor m5, m3, m2 + psllq m5, 56 + psrlq m5, 56 + pxor m2, m5 .check_r2: test r2d, r2d jnz .do_top .fix_tr_1: - pxor xmm5, xmm3, xmm1 - psrlq xmm5, 56 - psllq xmm5, 56 - pxor xmm1, xmm5 + pxor m5, m3, m1 + psrlq m5, 56 + psllq m5, 56 + pxor m1, m5 .do_top: - PRED4x4_LOWPASS xmm7, xmm2, xmm1, xmm3, xmm5 + PRED4x4_LOWPASS m7, m2, m1, m3, m5 test r2d, r2d jz .fix_tr_2 - movq xmm0, [r0+8] - psrlq xmm5, xmm0, 56 - punpcklqdq xmm3, xmm0 - psrldq xmm3, 7 - punpcklqdq xmm4, xmm0, xmm5 - psrldq xmm4, 1 - PRED4x4_LOWPASS xmm1, xmm3, xmm4, xmm0, xmm4 + movq m0, [r0+8] + psrlq m5, m0, 56 + punpcklqdq m3, m0 + psrldq m3, 7 + punpcklqdq m4, m0, m5 + psrldq m4, 1 + PRED4x4_LOWPASS m1, m3, m4, m0, m4 .do_topright: - movq xmm0, xmm1 - pslldq xmm0, 8 - por xmm7, xmm0 + movq m0, m1 + pslldq m0, 8 + por m7, m0 lea r2, [r4+r3*2] - movdqa xmm2, xmm7 - movdqa xmm3, xmm7 - PALIGNR xmm7, xmm6, 7, xmm4 - PALIGNR xmm2, xmm6, 9, xmm0 + mova m2, m7 + mova m3, m7 + PALIGNR m7, m6, 7, m4 + PALIGNR m2, m6, 9, m0 lea r1, [r4+r3*4] - PALIGNR xmm3, xmm6, 8, xmm6 - pavgb xmm4, xmm7, xmm3 + PALIGNR m3, m6, 8, m6 + pavgb m4, m7, m3 lea r0, [r2+r3*4] - PRED4x4_LOWPASS xmm3, xmm7, xmm2, xmm3, xmm5 - punpcklbw xmm4, xmm3 - movhlps xmm3, xmm4 - movq [r0+r3*2], xmm4 - movq [r2+r3*2], xmm3 - psrldq xmm4, 2 - psrldq xmm3, 2 - movq [r0+r3*1], xmm4 - movq [r2+r3*1], xmm3 - psrldq xmm4, 2 - psrldq xmm3, 2 - movq [r1+r3*2], xmm4 - movq [r4+r3*2], xmm3 - psrldq xmm4, 2 - psrldq xmm3, 2 - movq [r1+r3*1], xmm4 - movq [r4+r3*1], xmm3 + PRED4x4_LOWPASS m3, m7, m2, m3, m5 + punpcklbw m4, m3 + movhlps m3, m4 + movq [r0+r3*2], m4 + movq [r2+r3*2], m3 + psrldq m4, 2 + psrldq m3, 2 + movq [r0+r3*1], m4 + movq [r2+r3*1], m3 + psrldq m4, 2 + psrldq m3, 2 + movq [r1+r3*2], m4 + movq [r4+r3*2], m3 + psrldq m4, 2 + psrldq m3, 2 + movq [r1+r3*1], m4 + movq [r4+r3*1], m3 RET .fix_tr_2: - punpcklbw xmm3, xmm3 - pshufd xmm3, xmm3, 0xEE - pshuflw xmm1, xmm3, 0xFF + punpcklbw m3, m3 + pshufd m3, m3, 0xEE + pshuflw m1, m3, 0xFF jmp .do_topright %endmacro