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