Commit 4a8f8e04 authored by michael's avatar michael

fixed out of regs "bug"


git-svn-id: file:///var/local/repositories/mplayer/trunk/postproc@2234 b3059339-0415-0410-9bf9-f77b7e298cf2
parent 8ca24ea7
...@@ -288,8 +288,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe ...@@ -288,8 +288,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe
"imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha "imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha
"shll $8, %%edi \n\t" "shll $8, %%edi \n\t"
"addl %%edi, %%esi \n\t" //src[xx+1]*2*xalpha + src[xx]*(1-2*xalpha) "addl %%edi, %%esi \n\t" //src[xx+1]*2*xalpha + src[xx]*(1-2*xalpha)
"movl %1, %%edi \n\t"
"shrl $1, %%esi \n\t" "shrl $1, %%esi \n\t"
"movw %%si, (%1, %%eax, 2) \n\t" "movw %%si, (%%edi, %%eax, 2) \n\t"
"addb %4, %%cl \n\t" //2*xalpha += s_xinc&0xFF "addb %4, %%cl \n\t" //2*xalpha += s_xinc&0xFF
"adcl %3, %%ebx \n\t" //xx+= s_xinc>>8 + carry "adcl %3, %%ebx \n\t" //xx+= s_xinc>>8 + carry
...@@ -299,8 +300,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe ...@@ -299,8 +300,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe
"imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha "imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha
"shll $8, %%edi \n\t" "shll $8, %%edi \n\t"
"addl %%edi, %%esi \n\t" //src[xx+1]*2*xalpha + src[xx]*(1-2*xalpha) "addl %%edi, %%esi \n\t" //src[xx+1]*2*xalpha + src[xx]*(1-2*xalpha)
"movl %1, %%edi \n\t"
"shrl $1, %%esi \n\t" "shrl $1, %%esi \n\t"
"movw %%si, 2(%1, %%eax, 2) \n\t" "movw %%si, 2(%%edi, %%eax, 2) \n\t"
"addb %4, %%cl \n\t" //2*xalpha += s_xinc&0xFF "addb %4, %%cl \n\t" //2*xalpha += s_xinc&0xFF
"adcl %3, %%ebx \n\t" //xx+= s_xinc>>8 + carry "adcl %3, %%ebx \n\t" //xx+= s_xinc>>8 + carry
...@@ -310,7 +312,7 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe ...@@ -310,7 +312,7 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe
" jb 1b \n\t" " jb 1b \n\t"
:: "r" (src), "r" (buf1), "m" (dstw), "m" (s_xinc>>8), "m" (s_xinc&0xFF) :: "r" (src), "m" (buf1), "m" (dstw), "m" (s_xinc>>8), "m" (s_xinc&0xFF)
: "%eax", "%ebx", "%ecx", "%edi", "%esi" : "%eax", "%ebx", "%ecx", "%edi", "%esi"
); );
#else #else
...@@ -416,8 +418,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe ...@@ -416,8 +418,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe
"xorl %%ebx, %%ebx \n\t" // xx "xorl %%ebx, %%ebx \n\t" // xx
"xorl %%ecx, %%ecx \n\t" // 2*xalpha "xorl %%ecx, %%ecx \n\t" // 2*xalpha
"1: \n\t" "1: \n\t"
"movzbl (%0, %%ebx), %%edi \n\t" //src[xx] "movl %0, %%esi \n\t"
"movzbl 1(%0, %%ebx), %%esi \n\t" //src[xx+1] "movzbl (%%esi, %%ebx), %%edi \n\t" //src[xx]
"movzbl 1(%%esi, %%ebx), %%esi \n\t" //src[xx+1]
"subl %%edi, %%esi \n\t" //src[xx+1] - src[xx] "subl %%edi, %%esi \n\t" //src[xx+1] - src[xx]
"imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha "imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha
"shll $8, %%edi \n\t" "shll $8, %%edi \n\t"
...@@ -443,7 +446,7 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe ...@@ -443,7 +446,7 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe
" jb 1b \n\t" " jb 1b \n\t"
:: "r" (src1), "m" (uvbuf1), "m" (dstw), "m" (s_xinc2>>8), "m" (s_xinc2&0xFF), :: "m" (src1), "m" (uvbuf1), "m" (dstw), "m" (s_xinc2>>8), "m" (s_xinc2&0xFF),
"r" (src2) "r" (src2)
: "%eax", "%ebx", "%ecx", "%edi", "%esi" : "%eax", "%ebx", "%ecx", "%edi", "%esi"
); );
......
...@@ -288,8 +288,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe ...@@ -288,8 +288,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe
"imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha "imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha
"shll $8, %%edi \n\t" "shll $8, %%edi \n\t"
"addl %%edi, %%esi \n\t" //src[xx+1]*2*xalpha + src[xx]*(1-2*xalpha) "addl %%edi, %%esi \n\t" //src[xx+1]*2*xalpha + src[xx]*(1-2*xalpha)
"movl %1, %%edi \n\t"
"shrl $1, %%esi \n\t" "shrl $1, %%esi \n\t"
"movw %%si, (%1, %%eax, 2) \n\t" "movw %%si, (%%edi, %%eax, 2) \n\t"
"addb %4, %%cl \n\t" //2*xalpha += s_xinc&0xFF "addb %4, %%cl \n\t" //2*xalpha += s_xinc&0xFF
"adcl %3, %%ebx \n\t" //xx+= s_xinc>>8 + carry "adcl %3, %%ebx \n\t" //xx+= s_xinc>>8 + carry
...@@ -299,8 +300,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe ...@@ -299,8 +300,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe
"imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha "imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha
"shll $8, %%edi \n\t" "shll $8, %%edi \n\t"
"addl %%edi, %%esi \n\t" //src[xx+1]*2*xalpha + src[xx]*(1-2*xalpha) "addl %%edi, %%esi \n\t" //src[xx+1]*2*xalpha + src[xx]*(1-2*xalpha)
"movl %1, %%edi \n\t"
"shrl $1, %%esi \n\t" "shrl $1, %%esi \n\t"
"movw %%si, 2(%1, %%eax, 2) \n\t" "movw %%si, 2(%%edi, %%eax, 2) \n\t"
"addb %4, %%cl \n\t" //2*xalpha += s_xinc&0xFF "addb %4, %%cl \n\t" //2*xalpha += s_xinc&0xFF
"adcl %3, %%ebx \n\t" //xx+= s_xinc>>8 + carry "adcl %3, %%ebx \n\t" //xx+= s_xinc>>8 + carry
...@@ -310,7 +312,7 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe ...@@ -310,7 +312,7 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe
" jb 1b \n\t" " jb 1b \n\t"
:: "r" (src), "r" (buf1), "m" (dstw), "m" (s_xinc>>8), "m" (s_xinc&0xFF) :: "r" (src), "m" (buf1), "m" (dstw), "m" (s_xinc>>8), "m" (s_xinc&0xFF)
: "%eax", "%ebx", "%ecx", "%edi", "%esi" : "%eax", "%ebx", "%ecx", "%edi", "%esi"
); );
#else #else
...@@ -416,8 +418,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe ...@@ -416,8 +418,9 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe
"xorl %%ebx, %%ebx \n\t" // xx "xorl %%ebx, %%ebx \n\t" // xx
"xorl %%ecx, %%ecx \n\t" // 2*xalpha "xorl %%ecx, %%ecx \n\t" // 2*xalpha
"1: \n\t" "1: \n\t"
"movzbl (%0, %%ebx), %%edi \n\t" //src[xx] "movl %0, %%esi \n\t"
"movzbl 1(%0, %%ebx), %%esi \n\t" //src[xx+1] "movzbl (%%esi, %%ebx), %%edi \n\t" //src[xx]
"movzbl 1(%%esi, %%ebx), %%esi \n\t" //src[xx+1]
"subl %%edi, %%esi \n\t" //src[xx+1] - src[xx] "subl %%edi, %%esi \n\t" //src[xx+1] - src[xx]
"imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha "imull %%ecx, %%esi \n\t" //(src[xx+1] - src[xx])*2*xalpha
"shll $8, %%edi \n\t" "shll $8, %%edi \n\t"
...@@ -443,7 +446,7 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe ...@@ -443,7 +446,7 @@ s_xinc&= -2; //clear last bit or uv and y might be shifted relative to each othe
" jb 1b \n\t" " jb 1b \n\t"
:: "r" (src1), "m" (uvbuf1), "m" (dstw), "m" (s_xinc2>>8), "m" (s_xinc2&0xFF), :: "m" (src1), "m" (uvbuf1), "m" (dstw), "m" (s_xinc2>>8), "m" (s_xinc2&0xFF),
"r" (src2) "r" (src2)
: "%eax", "%ebx", "%ecx", "%edi", "%esi" : "%eax", "%ebx", "%ecx", "%edi", "%esi"
); );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment