[MPlayer-cvslog] r29352 - trunk/libmpcodecs/vf_fspp.c

David Conrad umovimus at gmail.com
Mon Jun 8 02:02:23 CEST 2009


On Jun 7, 2009, at 10:53 AM, Reimar Döffinger wrote:

> On Sun, Jun 07, 2009 at 05:48:53PM +0300, Uoti Urpala wrote:
>> On Sun, 2009-06-07 at 16:42 +0200, gpoirier wrote:
>>> replace "g" asm constraint by "erm" since "g" allows 64bit  
>>> immediates while
>>> the operator (cmp) using the "g"-constrained operand doesn't  
>>> support 64bit
>>> immediates.
>>
>>> -	: "m" (width), "m" (src_stride), "g" (od), "m" (dst_stride),  
>>> "g" (end),
>>> +	: "m" (width), "m" (src_stride), "erm" (od), "m" (dst_stride),  
>>> "erm" (end),
>>
>> Only "end" is used with cmp, not "od".
>
> As I understood it (in which case the commit message is wrong), Apple
> gcc just does not allow "g" for 64 bit variables/values.

The opposite - "g" works fine for 64 bit variables/values/immediates,  
but cmp doesn't support a 64-bit immediate (Intel's manual says cmp r/ 
m64, imm32 at best.)

Apple's gcc happens to choose to use an immediate; I'm guessing that  
FSF gcc chooses to use a register instead (both of which are valid for  
"g")

Also it seems like this won't work if dither is given an address > 32  
bits since REG_d is rdx; and changing it to edx wouldn't work if gcc  
chose to use "r" or "m" (since I think those would be implied to be 64  
bit.)

Or does something guarantee that the address of dither will be < 32  
bits?


More information about the MPlayer-cvslog mailing list