From: Eric Botcazou <ebotca...@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.

Reply via email to