2009/5/26 Florian Weimer <fw@xxxxxxxxxxxxx>: > * 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; }