summaryrefslogtreecommitdiff
path: root/libavcodec/i386/mpegvideo_mmx_template.c
diff options
context:
space:
mode:
authorArpi <arpi@thot.banki.hu>2002-01-28 19:34:16 +0000
committerArpi <arpi@thot.banki.hu>2002-01-28 19:34:16 +0000
commit5dfd24ac98ed1fc01ef26ea0a41ee0eb6acd08b6 (patch)
tree2018c4dd881ab59f9d00df275aa06c00d7d9e336 /libavcodec/i386/mpegvideo_mmx_template.c
parent320680d42006bac4f2cbe3cfbc254036e983210e (diff)
workaround gcc bug "m" (0)
avoiding useage of ebx Originally committed as revision 283 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/i386/mpegvideo_mmx_template.c')
-rw-r--r--libavcodec/i386/mpegvideo_mmx_template.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/libavcodec/i386/mpegvideo_mmx_template.c b/libavcodec/i386/mpegvideo_mmx_template.c
index 71df06504a..ffe5c848af 100644
--- a/libavcodec/i386/mpegvideo_mmx_template.c
+++ b/libavcodec/i386/mpegvideo_mmx_template.c
@@ -67,17 +67,17 @@ static int RENAME(dct_quantize)(MpegEncContext *s,
#if 1
asm volatile (
"xorl %%edx, %%edx \n\t"
- "mul %%ebx \n\t"
+ "mul %%ecx \n\t"
: "=d" (temp_block[0]), "=a"(dummy)
- : "a" (block[0] + (q >> 1)), "b" (inverse[q])
+ : "a" (block[0] + (q >> 1)), "c" (inverse[q])
);
#else
asm volatile (
"xorl %%edx, %%edx \n\t"
- "divw %%bx \n\t"
+ "divw %%cx \n\t"
"movzwl %%ax, %%eax \n\t"
: "=a" (temp_block[0])
- : "a" (block[0] + (q >> 1)), "b" (q)
+ : "a" (block[0] + (q >> 1)), "c" (q)
: "%edx"
);
#endif
@@ -119,8 +119,10 @@ static int RENAME(dct_quantize)(MpegEncContext *s,
SPREADW(%%mm3)
"movd %4, %%mm4 \n\t"
SPREADW(%%mm4)
+#ifndef HAVE_MMX2
"movd %5, %%mm5 \n\t"
SPREADW(%%mm5)
+#endif
"pxor %%mm7, %%mm7 \n\t"
"movd %%eax, %%mm2 \n\t"
SPREADW(%%mm2)
@@ -160,9 +162,9 @@ static int RENAME(dct_quantize)(MpegEncContext *s,
: "+a" (last_non_zero_p1)
: "r" (block+64), "r" (qmat+64),
#ifdef HAVE_MMX2
- "m" (maxLevel), "m" (minLevel), "m" (0 /* dummy */), "g" (2*i - 128),
+ "m" (maxLevel), "m" (minLevel), "m" (minLevel /* dummy */), "g" (2*i - 128),
#else
- "m" (0x7FFF - maxLevel), "m" (0x7FFF -maxLevel + minLevel), "m" (minLevel), "g" (2*i - 128),
+ "m" (0x7FFF - maxLevel), "m" (0x7FFF -maxLevel + minLevel), "m" (minLevel), "g" (2*i - 128),
#endif
"r" (inv_zigzag_direct16+64), "r" (temp_block+64)
);