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


* 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.

> Note, while the instruction exists, it is not always the optimial
> way to move data from the GPRs to the XMMs.  On some machines, it is
> better to store the GPR into the stack and reload it into an XMM
> register, than to use the instruction.  On some machines, it is
> faster to use the instruction.

Thanks.  I can see both behaviors (transfer through memory and through
a register), dependign on the -mtune flag.  So there's no need for
another built-in.


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