diff options
author | Diego Biurrun <diego@biurrun.de> | 2012-07-04 15:32:16 +0200 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2012-07-05 17:37:11 +0200 |
commit | 878e669029e3c73f95008bc1db3a903a998034f5 (patch) | |
tree | f95efc5910922926f7982a30a96d63b524ac22ac /libavcodec | |
parent | 4d4752366f873fde444815b9a0a8f1077073d266 (diff) | |
download | ffmpeg-streaming-878e669029e3c73f95008bc1db3a903a998034f5.zip ffmpeg-streaming-878e669029e3c73f95008bc1db3a903a998034f5.tar.gz |
x86: h264_intrapred: use newly introduced SPLAT* and PSHUFLW macros
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/x86/h264_intrapred.asm | 129 |
1 files changed, 22 insertions, 107 deletions
diff --git a/libavcodec/x86/h264_intrapred.asm b/libavcodec/x86/h264_intrapred.asm index 87d32c4..5984454 100644 --- a/libavcodec/x86/h264_intrapred.asm +++ b/libavcodec/x86/h264_intrapred.asm @@ -103,15 +103,8 @@ cglobal pred16x16_horizontal, 2,3 %else punpcklbw m0, m0 punpcklbw m1, m1 -%if cpuflag(mmx2) - pshufw m0, m0, 0xff - pshufw m1, m1, 0xff -%else - punpckhwd m0, m0 - punpckhwd m1, m1 - punpckhdq m0, m0 - punpckhdq m1, m1 -%endif + SPLATW m0, m0, 3 + SPLATW m1, m1, 3 mova [r0+r1*0+8], m0 mova [r0+r1*1+8], m1 %endif @@ -162,18 +155,8 @@ cglobal pred16x16_dc, 2,7 shr r2d, 5 %if cpuflag(ssse3) pxor m1, m1 - movd m0, r2d - pshufb m0, m1 -%elif cpuflag(sse2) - movd m0, r2d - punpcklbw m0, m0 - pshuflw m0, m0, 0 - punpcklqdq m0, m0 -%elif cpuflag(mmx2) - movd m0, r2d - punpcklbw m0, m0 - pshufw m0, m0, 0 %endif + SPLATB_REG m0, r2d, m1 %if mmsize==8 mov r3d, 8 @@ -227,12 +210,7 @@ cglobal pred16x16_tm_vp8, 2,5 movzx r2d, byte [r0+r1-1] sub r2d, r3d movd mm4, r2d -%if cpuflag(mmx2) - pshufw mm4, mm4, 0 -%else - punpcklwd mm4, mm4 - punpckldq mm4, mm4 -%endif + SPLATW mm4, mm4, 0 movq mm5, mm4 movq mm6, mm4 movq mm7, mm4 @@ -332,19 +310,15 @@ cglobal pred16x16_plane_%1, 2,9,7 movhlps m1, m0 %endif paddw m0, m1 -%if cpuflag(sse2) - pshuflw m1, m0, 0xE -%elif cpuflag(mmx2) - pshufw m1, m0, 0xE +%if cpuflag(mmx2) + PSHUFLW m1, m0, 0xE %elif cpuflag(mmx) mova m1, m0 psrlq m1, 32 %endif paddw m0, m1 -%if cpuflag(sse2) - pshuflw m1, m0, 0x1 -%elif cpuflag(mmx2) - pshufw m1, m0, 0x1 +%if cpuflag(mmx2) + PSHUFLW m1, m0, 0x1 %elif cpuflag(mmx) mova m1, m0 psrlq m1, 16 @@ -483,25 +457,9 @@ cglobal pred16x16_plane_%1, 2,9,7 movd m1, r5d movd m3, r3d -%if cpuflag(sse2) - pshuflw m0, m0, 0x0 - pshuflw m1, m1, 0x0 - pshuflw m3, m3, 0x0 - punpcklqdq m0, m0 ; splat H (words) - punpcklqdq m1, m1 ; splat V (words) - punpcklqdq m3, m3 ; splat a (words) -%elif cpuflag(mmx2) - pshufw m0, m0, 0x0 - pshufw m1, m1, 0x0 - pshufw m3, m3, 0x0 -%elif cpuflag(mmx) - punpcklwd m0, m0 - punpcklwd m1, m1 - punpcklwd m3, m3 - punpckldq m0, m0 - punpckldq m1, m1 - punpckldq m3, m3 -%endif + SPLATW m0, m0, 0 ; H + SPLATW m1, m1, 0 ; V + SPLATW m3, m3, 0 ; a %ifidn %1, svq3 SWAP 0, 1 %endif @@ -626,10 +584,8 @@ cglobal pred8x8_plane, 2,9,7 paddw m0, m1 %if notcpuflag(ssse3) -%if cpuflag(sse2) ; mmsize == 16 - pshuflw m1, m0, 0xE -%elif cpuflag(mmx2) - pshufw m1, m0, 0xE +%if cpuflag(mmx2) + PSHUFLW m1, m0, 0xE %elif cpuflag(mmx) mova m1, m0 psrlq m1, 32 @@ -637,10 +593,8 @@ cglobal pred8x8_plane, 2,9,7 paddw m0, m1 %endif ; !ssse3 -%if cpuflag(sse2) - pshuflw m1, m0, 0x1 -%elif cpuflag(mmx2) - pshufw m1, m0, 0x1 +%if cpuflag(mmx2) + PSHUFLW m1, m0, 0x1 %elif cpuflag(mmx) mova m1, m0 psrlq m1, 16 @@ -711,25 +665,9 @@ cglobal pred8x8_plane, 2,9,7 movd m1, r5d movd m3, r3d -%if cpuflag(sse2) - pshuflw m0, m0, 0x0 - pshuflw m1, m1, 0x0 - pshuflw m3, m3, 0x0 - punpcklqdq m0, m0 ; splat H (words) - punpcklqdq m1, m1 ; splat V (words) - punpcklqdq m3, m3 ; splat a (words) -%elif cpuflag(mmx2) - pshufw m0, m0, 0x0 - pshufw m1, m1, 0x0 - pshufw m3, m3, 0x0 -%elif cpuflag(mmx) - punpcklwd m0, m0 - punpcklwd m1, m1 - punpcklwd m3, m3 - punpckldq m0, m0 - punpckldq m1, m1 - punpckldq m3, m3 -%endif + SPLATW m0, m0, 0 ; H + SPLATW m1, m1, 0 ; V + SPLATW m3, m3, 0 ; a %if mmsize == 8 mova m2, m0 %endif @@ -815,24 +753,8 @@ cglobal pred8x8_horizontal, 2,3 mova m2, [pb_3] %endif .loop: - movd m0, [r0+r1*0-4] - movd m1, [r0+r1*1-4] -%if cpuflag(ssse3) - pshufb m0, m2 - pshufb m1, m2 -%else - punpcklbw m0, m0 - punpcklbw m1, m1 -%if cpuflag(mmx2) - pshufw m0, m0, 0xff - pshufw m1, m1, 0xff -%else - punpckhwd m0, m0 - punpckhwd m1, m1 - punpckhdq m0, m0 - punpckhdq m1, m1 -%endif -%endif + SPLATB_LOAD m0, r0+r1*0-1, m2 + SPLATB_LOAD m1, r0+r1*1-1, m2 mova [r0+r1*0], m0 mova [r0+r1*1], m1 lea r0, [r0+r1*2] @@ -1000,15 +922,8 @@ cglobal pred8x8_tm_vp8, 2,6 sub r3d, r4d movd mm2, r2d movd mm4, r3d -%if cpuflag(mmx2) - pshufw mm2, mm2, 0 - pshufw mm4, mm4, 0 -%else - punpcklwd mm2, mm2 - punpcklwd mm4, mm4 - punpckldq mm2, mm2 - punpckldq mm4, mm4 -%endif + SPLATW mm2, mm2, 0 + SPLATW mm4, mm4, 0 movq mm3, mm2 movq mm5, mm4 paddw mm2, mm0 |