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?