diff options
author | Jason Garrett-Glaser <darkshikari@gmail.com> | 2010-07-01 10:29:47 +0000 |
---|---|---|
committer | Jason Garrett-Glaser <darkshikari@gmail.com> | 2010-07-01 10:29:47 +0000 |
commit | 17dc7c7a60798d3e1f78bad97423fb49c8dc1c1d (patch) | |
tree | 7023708a2742a1b69ede7dd2f9e8d1cfcb8afaad /libavcodec/x86/h264_intrapred.asm | |
parent | b47a52dc8676c6e44b5e5746431e047a537f319c (diff) | |
download | ffmpeg-17dc7c7a60798d3e1f78bad97423fb49c8dc1c1d.tar.gz |
Fix h264/vp8 intra pred on Athlon XP
Whose idea was it to have a CPU that didn't SIGILL on an invalid instruction?
Originally committed as revision 23927 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/x86/h264_intrapred.asm')
-rw-r--r-- | libavcodec/x86/h264_intrapred.asm | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/libavcodec/x86/h264_intrapred.asm b/libavcodec/x86/h264_intrapred.asm index d53b3d7f46..d36ecfb890 100644 --- a/libavcodec/x86/h264_intrapred.asm +++ b/libavcodec/x86/h264_intrapred.asm @@ -115,7 +115,7 @@ PRED16x16_H ssse3 ; void pred16x16_dc(uint8_t *src, int stride) ;----------------------------------------------------------------------------- -%macro PRED16x16_DC 2 +%macro PRED16x16_DC 1 cglobal pred16x16_dc_%1, 2,7 mov r4, r0 sub r0, r1 @@ -143,10 +143,6 @@ cglobal pred16x16_dc_%1, 2,7 movd m0, r2d punpcklbw m0, m0 pshufw m0, m0, 0 -%elifidn %1, sse - imul r2d, 0x01010101 - movd m0, r2d - shufps m0, m0, 0 %elifidn %1, sse2 movd m0, r2d punpcklbw m0, m0 @@ -161,18 +157,18 @@ cglobal pred16x16_dc_%1, 2,7 %if mmsize==8 mov r3d, 8 .loop: - %2 [r4+r1*0+0], m0 - %2 [r4+r1*0+8], m0 - %2 [r4+r1*1+0], m0 - %2 [r4+r1*1+8], m0 + mova [r4+r1*0+0], m0 + mova [r4+r1*0+8], m0 + mova [r4+r1*1+0], m0 + mova [r4+r1*1+8], m0 %else mov r3d, 4 .loop: - %2 [r4+r1*0], m0 - %2 [r4+r1*1], m0 + mova [r4+r1*0], m0 + mova [r4+r1*1], m0 lea r4, [r4+r1*2] - %2 [r4+r1*0], m0 - %2 [r4+r1*1], m0 + mova [r4+r1*0], m0 + mova [r4+r1*1], m0 %endif lea r4, [r4+r1*2] dec r3d @@ -181,11 +177,10 @@ cglobal pred16x16_dc_%1, 2,7 %endmacro INIT_MMX -PRED16x16_DC mmxext, movq +PRED16x16_DC mmxext INIT_XMM -PRED16x16_DC sse, movaps -PRED16x16_DC sse2, movdqa -PRED16x16_DC ssse3, movdqa +PRED16x16_DC sse2 +PRED16x16_DC ssse3 ;----------------------------------------------------------------------------- ; void pred16x16_tm_vp8(uint8_t *src, int stride) |