Port-amd64 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: FLT_ROUNDS failures ... gcc/binutils regression ?



In article <20110929171342.GB24332%lynche.sis.pasteur.fr@localhost>,
Nicolas Joly  <njoly%pasteur.fr@localhost> wrote:
>On Tue, Sep 27, 2011 at 02:39:40PM -0700, Matt Thomas wrote:
>[...]
>> you could recode it to extract two bits from 0x78 (01.11.10.00) which
>> avoid a memory reference.  Something like:
>> 
>>         fnstcw       -4(%rsp)
>>         movl -4(%rsp),  %ecx
>>      shrl    $9, %ecx
>>         andl    $6, %ecx
>>         movl    $120, %eax
>>         sarl    %cl, %eax
>>         andl    $3, %eax
>>         ret
>
>It works, but with the inverted bits sequence :
>
>   00.10.11.01 = 0x2d = 45
>

Or just:
        fnstcw  -4(%rsp)
        movl    -4(%rsp), %eax
        shrl    $10, %eax
        andl    $3, %eax
        xorl    $1, %eax        /* map 0,1,2,3 -> 1,0,3,2 */
        ret

Which is the version I committed.
christos



Home | Main Index | Thread Index | Old Index