On 07-Jan-02 Stephen Montgomery-Smith wrote:
> John Baldwin wrote:
>> 
>> > You know, I have no idea.  It is someone elses code.  These are the
>> > instructions.  Can anyone tell me?
>> >
>> >                 "movl 32(%0),%1\n"
>> >                 "adcl %1,32(%0)\n"
>> >
>> > Also, from this discussion, what I have decided to do is provide it as
>> > an option for the user to add by editing the Makefile - not to do it
>> > automatically.
>> 
>> These instructions are 386 instructions.  What we need to see are the
>> contraints (the stuff after the actual instructions with colons in them) to
>> see
>> if it is somehow using Pentium Pro+ specific registers.  And actually, just
>> for
>> the record, a PPro is a 686. :)
>> 
> 
> OK, this is it in context:
> 
>         register Word32 *_x = x;
>         register int _a = 0;
> 
>         asm("xorl %1,%1\n"  /* clear C */
>                 "movl 124(%0),%1\n"
>                 "adcl %1,124(%0)\n"
>                 : : "r" (_x), "r" (_a)
>         );   

Looks like rather silly code to double the value at x + 124.  I say silly casue
it clears carry and then does a addcl.  However, since CF is zero, this is the
same as doing an addl.  Since it is just doubling the value, a shl would make
more sense (and only be 1 instruction.)

-- 

John Baldwin <[EMAIL PROTECTED]>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to