This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Sparc longlong.h enhancements.


From: Eric Botcazou <ebotcazou@adacore.com>
Date: Thu, 31 May 2012 15:06:41 +0200

>> +  do {									\
>> +    UDItype __carry = 0;						\
>> +    __asm__ ("addcc\t%r5,%6,%1\n\t"					\
>> +	     "add\t%r3,%4,%0\n\t"					\
>> +	     "movcs\t%%xcc, 1, %2\n\t"					\
>> +             "add\t%0, %2, %0"						\
>>
>>  	   : "=r" ((UDItype)(sh)),				      	\
>>
>> -	     "=&r" ((UDItype)(sl))				      	\
>> +	     "=&r" ((UDItype)(sl)),				      	\
>> +	     "=&r" (__carry)				      		\
>>
>>  	   : "%rJ" ((UDItype)(ah)),				     	\
>>
>>  	     "rI" ((UDItype)(bh)),				      	\
>>  	     "%rJ" ((UDItype)(al)),				     	\
>> -	     "rI" ((UDItype)(bl))				       	\
>> -	   __CLOBBER_CC)
>> +	     "rI" ((UDItype)(bl)),				       	\
>> +	     "2" (__carry)				       		\
>> +	   __CLOBBER_CC);						\
>> +  } while (0)
> 
> If __carry is used as both source and destination for %2, why not use a single 
> operand with the + modifier?

Makes sense, I'll make that change and test it, thanks Eric.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]