diff options
author | Geoffrey Mainland <gmainlan@microsoft.com> | 2012-10-05 15:19:55 +0100 |
---|---|---|
committer | Geoffrey Mainland <gmainlan@microsoft.com> | 2012-10-30 20:50:48 +0000 |
commit | e2f6bbd3a27685bc667655fdb093734cb565b4cf (patch) | |
tree | 7b111be1d9e14a61073d3ca30c1d7333d494d127 /includes/Cmm.h | |
parent | 5ee08ddffbbe596d7716a09306888004e6baf2b1 (diff) | |
download | haskell-e2f6bbd3a27685bc667655fdb093734cb565b4cf.tar.gz |
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.
Diffstat (limited to 'includes/Cmm.h')
-rw-r--r-- | includes/Cmm.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/includes/Cmm.h b/includes/Cmm.h index 36aae9b8dc..211d2a86fe 100644 --- a/includes/Cmm.h +++ b/includes/Cmm.h @@ -682,8 +682,8 @@ #define SAVE_STGREGS \ W_ r1, r2, r3, r4, r5, r6, r7, r8; \ - F_ f1, f2, f3, f4; \ - D_ d1, d2; \ + F_ f1, f2, f3, f4, f5, f6; \ + D_ d1, d2, d3, d4, d5, d6; \ L_ l1; \ \ r1 = R1; \ @@ -699,9 +699,15 @@ f2 = F2; \ f3 = F3; \ f4 = F4; \ + f5 = F5; \ + f6 = F6; \ \ d1 = D1; \ d2 = D2; \ + d3 = D3; \ + d4 = D4; \ + d5 = D5; \ + d6 = D6; \ \ l1 = L1; @@ -720,9 +726,15 @@ F2 = f2; \ F3 = f3; \ F4 = f4; \ + F5 = f5; \ + F6 = f6; \ \ D1 = d1; \ D2 = d2; \ + D3 = d3; \ + D4 = d4; \ + D5 = d5; \ + D6 = d6; \ \ L1 = l1; |