This is the mail archive of the gcc-help@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: Obtaining the bit pattern of a floating point number


2009/5/26 Florian Weimer <fw@deneb.enyo.de>:
> * Michael Meissner:
>
>> On Sat, May 23, 2009 at 03:55:34PM +0200, Florian Weimer wrote:
>>> It seems to me that x86_64 supports direct moves from XMM to
>>> general-purpose registers, so that it's possible to access the
>>> representation of a floating point value without going through memory:
>>>
>>> long getbits(double src)
>>> {
>>> Â long result;
>>> Â __asm__ ("movq %1, %0" : "=q" (result) : "x" (src));
>>> Â return result;
>>> }
>>>
>>> Is this functionally available as some sort of built-in?
>>
>> Well you typically can use a union to get the bits.
>
> Okay. ÂI didn't realize that GCC was smart enough to avoid the
> round-trip through memory.
>

In my experience compilers are often even smart enough to have this
avoid the memory roundtrip, and it's undeniably legal:

int ftoi(float x) {
    int i;
    memcpy(&i, &x, 4);
    return i;
}


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