Mercurial > libavcodec.hg
diff x86/vp8dsp.asm @ 12082:8527154f6e81 libavcodec
SSSE3 versions of vp8 width4 bilinear MC functions
author | darkshikari |
---|---|
date | Sat, 03 Jul 2010 00:48:12 +0000 |
parents | b8f80fe02861 |
children | d780ae746855 |
line wrap: on
line diff
--- a/x86/vp8dsp.asm Fri Jul 02 21:04:45 2010 +0000 +++ b/x86/vp8dsp.asm Sat Jul 03 00:48:12 2010 +0000 @@ -770,7 +770,8 @@ INIT_XMM FILTER_BILINEAR sse2, 8, 7 -cglobal put_vp8_bilinear8_v_ssse3, 7,7,5 +%macro FILTER_BILINEAR_SSSE3 1 +cglobal put_vp8_bilinear%1_v_ssse3, 7,7 shl r6d, 4 %ifdef PIC lea r11, [bilinear_filter_vb_m] @@ -789,9 +790,16 @@ psraw m1, 2 pavgw m0, m4 pavgw m1, m4 +%if mmsize==8 + packuswb m0, m0 + packuswb m1, m1 + movh [r0+r1*0], m0 + movh [r0+r1*1], m1 +%else packuswb m0, m1 movh [r0+r1*0], m0 movhps [r0+r1*1], m0 +%endif lea r0, [r0+r1*2] lea r2, [r2+r3*2] @@ -799,7 +807,7 @@ jg .nextrow REP_RET -cglobal put_vp8_bilinear8_h_ssse3, 7,7,5 +cglobal put_vp8_bilinear%1_h_ssse3, 7,7 shl r5d, 4 %ifdef PIC lea r11, [bilinear_filter_vb_m] @@ -818,15 +826,28 @@ psraw m1, 2 pavgw m0, m4 pavgw m1, m4 +%if mmsize==8 + packuswb m0, m0 + packuswb m1, m1 + movh [r0+r1*0], m0 + movh [r0+r1*1], m1 +%else packuswb m0, m1 movh [r0+r1*0], m0 movhps [r0+r1*1], m0 +%endif lea r0, [r0+r1*2] lea r2, [r2+r3*2] sub r4, 2 jg .nextrow REP_RET +%endmacro + +INIT_MMX +FILTER_BILINEAR_SSSE3 4 +INIT_XMM +FILTER_BILINEAR_SSSE3 8 cglobal put_vp8_pixels8_mmx, 5,5 .nextrow: