Speaking of X86 floating point registers, did you look at this paper on exactly that by the MLRisc people? http://cm.bell-labs.com/cm/cs/what/smlnj/compiler-notes/x86-fp.ps I remember not being convinced that things worked quite as they say from some quick experiments, but I seem to recall that the notion was that swapping floating point registers cost nothing because it just did register renaming.