Draw STG F and D registers from the same pool of available SSE registers on x86-64.
authorGeoffrey Mainland <gmainlan@microsoft.com>
Fri, 5 Oct 2012 14:19:55 +0000 (15:19 +0100)
committerGeoffrey Mainland <gmainlan@microsoft.com>
Tue, 30 Oct 2012 20:50:48 +0000 (20:50 +0000)
commite2f6bbd3a27685bc667655fdb093734cb565b4cf
tree7b111be1d9e14a61073d3ca30c1d7333d494d127
parent5ee08ddffbbe596d7716a09306888004e6baf2b1
Draw STG F and D registers from the same pool of available SSE registers on x86-64.

On x86-64 F and D registers are both drawn from SSE registers, so there is no
reason not to draw them from the same pool of available SSE registers. This
means that whereas previously a function could only receive two Double arguments
in registers even if it did not have any Float arguments, now it can receive up
to 6 arguments that are any mix of Float and Double in registers.

This patch breaks the LLVM back end. The next patch will fix this breakage.
compiler/cmm/CmmCallConv.hs
compiler/cmm/CmmParse.y
compiler/codeGen/CgUtils.hs
compiler/llvmGen/LlvmCodeGen/Regs.hs
includes/Cmm.h
includes/CodeGen.Platform.hs
includes/mkDerivedConstants.c
includes/rts/Constants.h
includes/stg/MachRegs.h
includes/stg/Regs.h