fixed out of regs "bug"
Originally committed as revision 2234 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
This commit is contained in:
		
							parent
							
								
									d3f41512a8
								
							
						
					
					
						commit
						a6e972a217
					
				@ -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
 | 
				
			|||||||
		"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
 | 
				
			|||||||
		" 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
 | 
				
			|||||||
		"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
 | 
				
			|||||||
		" 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
 | 
				
			|||||||
		"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
 | 
				
			|||||||
		"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
 | 
				
			|||||||
		" 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
 | 
				
			|||||||
		"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
 | 
				
			|||||||
		" 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"
 | 
				
			||||||
		);
 | 
							);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user