diff options
Diffstat (limited to 'libvpx/vp9/common/x86/vp9_intrapred_sse2.asm')
-rw-r--r-- | libvpx/vp9/common/x86/vp9_intrapred_sse2.asm | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/libvpx/vp9/common/x86/vp9_intrapred_sse2.asm b/libvpx/vp9/common/x86/vp9_intrapred_sse2.asm index 980b8b9..69b07f6 100644 --- a/libvpx/vp9/common/x86/vp9_intrapred_sse2.asm +++ b/libvpx/vp9/common/x86/vp9_intrapred_sse2.asm @@ -19,12 +19,14 @@ pw_32: times 8 dw 32 SECTION .text INIT_MMX sse -cglobal dc_predictor_4x4, 4, 4, 2, dst, stride, above, left +cglobal dc_predictor_4x4, 4, 5, 2, dst, stride, above, left, goffset + GET_GOT goffsetq + pxor m1, m1 movd m0, [aboveq] punpckldq m0, [leftq] psadbw m0, m1 - paddw m0, [pw_4] + paddw m0, [GLOBAL(pw_4)] psraw m0, 3 pshufw m0, m0, 0x0 packuswb m0, m0 @@ -33,10 +35,14 @@ cglobal dc_predictor_4x4, 4, 4, 2, dst, stride, above, left lea dstq, [dstq+strideq*2] movd [dstq ], m0 movd [dstq+strideq], m0 + + RESTORE_GOT RET INIT_MMX sse -cglobal dc_predictor_8x8, 4, 4, 3, dst, stride, above, left +cglobal dc_predictor_8x8, 4, 5, 3, dst, stride, above, left, goffset + GET_GOT goffsetq + pxor m1, m1 movq m0, [aboveq] movq m2, [leftq] @@ -45,7 +51,7 @@ cglobal dc_predictor_8x8, 4, 4, 3, dst, stride, above, left psadbw m0, m1 psadbw m2, m1 paddw m0, m2 - paddw m0, [pw_8] + paddw m0, [GLOBAL(pw_8)] psraw m0, 4 pshufw m0, m0, 0x0 packuswb m0, m0 @@ -58,10 +64,14 @@ cglobal dc_predictor_8x8, 4, 4, 3, dst, stride, above, left movq [dstq+strideq ], m0 movq [dstq+strideq*2], m0 movq [dstq+stride3q ], m0 + + RESTORE_GOT RET INIT_XMM sse2 -cglobal dc_predictor_16x16, 4, 4, 3, dst, stride, above, left +cglobal dc_predictor_16x16, 4, 5, 3, dst, stride, above, left, goffset + GET_GOT goffsetq + pxor m1, m1 mova m0, [aboveq] mova m2, [leftq] @@ -73,7 +83,7 @@ cglobal dc_predictor_16x16, 4, 4, 3, dst, stride, above, left paddw m0, m2 movhlps m2, m0 paddw m0, m2 - paddw m0, [pw_16] + paddw m0, [GLOBAL(pw_16)] psraw m0, 5 pshuflw m0, m0, 0x0 punpcklqdq m0, m0 @@ -86,10 +96,14 @@ cglobal dc_predictor_16x16, 4, 4, 3, dst, stride, above, left lea dstq, [dstq+strideq*4] dec lines4d jnz .loop + + RESTORE_GOT REP_RET INIT_XMM sse2 -cglobal dc_predictor_32x32, 4, 4, 5, dst, stride, above, left +cglobal dc_predictor_32x32, 4, 5, 5, dst, stride, above, left, goffset + GET_GOT goffsetq + pxor m1, m1 mova m0, [aboveq] mova m2, [aboveq+16] @@ -107,7 +121,7 @@ cglobal dc_predictor_32x32, 4, 4, 5, dst, stride, above, left paddw m0, m4 movhlps m2, m0 paddw m0, m2 - paddw m0, [pw_32] + paddw m0, [GLOBAL(pw_32)] psraw m0, 6 pshuflw m0, m0, 0x0 punpcklqdq m0, m0 @@ -124,6 +138,8 @@ cglobal dc_predictor_32x32, 4, 4, 5, dst, stride, above, left lea dstq, [dstq+strideq*4] dec lines4d jnz .loop + + RESTORE_GOT REP_RET INIT_MMX sse |