summaryrefslogtreecommitdiff
path: root/libavcodec/x86/h264_intrapred.asm
diff options
context:
space:
mode:
authorJason Garrett-Glaser <darkshikari@gmail.com>2010-07-01 10:29:47 +0000
committerJason Garrett-Glaser <darkshikari@gmail.com>2010-07-01 10:29:47 +0000
commit17dc7c7a60798d3e1f78bad97423fb49c8dc1c1d (patch)
tree7023708a2742a1b69ede7dd2f9e8d1cfcb8afaad /libavcodec/x86/h264_intrapred.asm
parentb47a52dc8676c6e44b5e5746431e047a537f319c (diff)
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.asm29
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)