summaryrefslogtreecommitdiffstats
path: root/postproc
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-05 23:49:15 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-05 23:49:15 +0000
commit1fb2a93515287220460851d778704d1cd0d3f77a (patch)
treec822c5955d7f26af781c7e4303dd7191921e1cf4 /postproc
parent15c3567aa8c5d985ded64b9361dadb54fc950896 (diff)
downloadmpv-1fb2a93515287220460851d778704d1cd0d3f77a.tar.bz2
mpv-1fb2a93515287220460851d778704d1cd0d3f77a.tar.xz
only 6 registers used
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2729 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc')
-rw-r--r--postproc/swscale.c17
-rw-r--r--postproc/swscale_template.c17
2 files changed, 20 insertions, 14 deletions
diff --git a/postproc/swscale.c b/postproc/swscale.c
index e92364fd70..41649b4900 100644
--- a/postproc/swscale.c
+++ b/postproc/swscale.c
@@ -474,10 +474,10 @@ static int canMMX2BeUsed=0;
"psllq $16, %%mm3 \n\t" /* RGBRGB00 3 */\
"por %%mm4, %%mm3 \n\t" /* RGBRGBRG 2.5 */\
\
- "leal (%%eax, %%eax, 2), %%ebx \n\t"\
- MOVNTQ(%%mm0, (%4, %%ebx))\
- MOVNTQ(%%mm2, 8(%4, %%ebx))\
- MOVNTQ(%%mm3, 16(%4, %%ebx))\
+ MOVNTQ(%%mm0, (%%ebx))\
+ MOVNTQ(%%mm2, 8(%%ebx))\
+ MOVNTQ(%%mm3, 16(%%ebx))\
+ "addl $24, %%ebx \n\t"\
\
"addl $8, %%eax \n\t"\
"cmpl %5, %%eax \n\t"\
@@ -740,10 +740,11 @@ FULL_YSCALEYUV2RGB
else if(dstbpp==24)
{
asm volatile(
+ "movl %4, %%ebx \n\t"
YSCALEYUV2RGB
WRITEBGR24
- :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "r" (dest), "m" (dstw),
+ :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), "m" (dstw),
"m" (yalpha1), "m" (uvalpha1)
: "%eax", "%ebx"
);
@@ -922,9 +923,10 @@ static inline void yuv2rgb1(uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, ui
else if(dstbpp==24)
{
asm volatile(
+ "movl %4, %%ebx \n\t"
YSCALEYUV2RGB1
WRITEBGR24
- :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "r" (dest), "m" (dstw),
+ :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), "m" (dstw),
"m" (yalpha1), "m" (uvalpha1)
: "%eax", "%ebx"
);
@@ -978,9 +980,10 @@ static inline void yuv2rgb1(uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, ui
else if(dstbpp==24)
{
asm volatile(
+ "movl %4, %%ebx \n\t"
YSCALEYUV2RGB1b
WRITEBGR24
- :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "r" (dest), "m" (dstw),
+ :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), "m" (dstw),
"m" (yalpha1), "m" (uvalpha1)
: "%eax", "%ebx"
);
diff --git a/postproc/swscale_template.c b/postproc/swscale_template.c
index e92364fd70..41649b4900 100644
--- a/postproc/swscale_template.c
+++ b/postproc/swscale_template.c
@@ -474,10 +474,10 @@ static int canMMX2BeUsed=0;
"psllq $16, %%mm3 \n\t" /* RGBRGB00 3 */\
"por %%mm4, %%mm3 \n\t" /* RGBRGBRG 2.5 */\
\
- "leal (%%eax, %%eax, 2), %%ebx \n\t"\
- MOVNTQ(%%mm0, (%4, %%ebx))\
- MOVNTQ(%%mm2, 8(%4, %%ebx))\
- MOVNTQ(%%mm3, 16(%4, %%ebx))\
+ MOVNTQ(%%mm0, (%%ebx))\
+ MOVNTQ(%%mm2, 8(%%ebx))\
+ MOVNTQ(%%mm3, 16(%%ebx))\
+ "addl $24, %%ebx \n\t"\
\
"addl $8, %%eax \n\t"\
"cmpl %5, %%eax \n\t"\
@@ -740,10 +740,11 @@ FULL_YSCALEYUV2RGB
else if(dstbpp==24)
{
asm volatile(
+ "movl %4, %%ebx \n\t"
YSCALEYUV2RGB
WRITEBGR24
- :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "r" (dest), "m" (dstw),
+ :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), "m" (dstw),
"m" (yalpha1), "m" (uvalpha1)
: "%eax", "%ebx"
);
@@ -922,9 +923,10 @@ static inline void yuv2rgb1(uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, ui
else if(dstbpp==24)
{
asm volatile(
+ "movl %4, %%ebx \n\t"
YSCALEYUV2RGB1
WRITEBGR24
- :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "r" (dest), "m" (dstw),
+ :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), "m" (dstw),
"m" (yalpha1), "m" (uvalpha1)
: "%eax", "%ebx"
);
@@ -978,9 +980,10 @@ static inline void yuv2rgb1(uint16_t *buf0, uint16_t *buf1, uint16_t *uvbuf0, ui
else if(dstbpp==24)
{
asm volatile(
+ "movl %4, %%ebx \n\t"
YSCALEYUV2RGB1b
WRITEBGR24
- :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "r" (dest), "m" (dstw),
+ :: "r" (buf0), "r" (buf1), "r" (uvbuf0), "r" (uvbuf1), "m" (dest), "m" (dstw),
"m" (yalpha1), "m" (uvalpha1)
: "%eax", "%ebx"
);