summaryrefslogtreecommitdiff
path: root/includes/CodeGen.Platform.hs
diff options
context:
space:
mode:
authorPeter Trommler <ptrommler@acm.org>2018-12-11 16:43:49 +0100
committerPeter Trommler <ptrommler@acm.org>2019-02-27 19:09:38 +0100
commit9758dcadac31f9c9a0b4e84acaaabdc8c99fcdf1 (patch)
treeed4ae7e3d7c9fec308e7646623fb046ebe01e158 /includes/CodeGen.Platform.hs
parent2e8f664957dc3763dc4375894b8dc4d046d2e95b (diff)
downloadhaskell-wip/ppc-reg-alloc.tar.gz
PPC NCG: Use liveness information in CmmCallwip/ppc-reg-alloc
We make liveness information for global registers available on `JMP` and `BCTR`, which were the last instructions missing. With complete liveness information we do not need to reserve global registers in `freeReg` anymore and moreover assign R9 and R10 and HpLim to callee save registers. We change the calling convention so R1 to R10 occupy a contiguous range of registers. Cleanup by removing `Reg_Su`, which was unused, from `freeReg` and removing unused register definitions. The calculation of the number of floating point registers is too conservative. Just follow X86 and specify the constants directly. Overall this results in 0.3 % smaller code size in nofib while runtime is sligtly better in some tests.
Diffstat (limited to 'includes/CodeGen.Platform.hs')
-rw-r--r--includes/CodeGen.Platform.hs72
1 files changed, 0 insertions, 72 deletions
diff --git a/includes/CodeGen.Platform.hs b/includes/CodeGen.Platform.hs
index 6c00597764..2a373283d4 100644
--- a/includes/CodeGen.Platform.hs
+++ b/includes/CodeGen.Platform.hs
@@ -904,78 +904,9 @@ freeReg 30 = False
# if defined(REG_Base)
freeReg REG_Base = False
# endif
-# if defined(REG_R1)
-freeReg REG_R1 = False
-# endif
-# if defined(REG_R2)
-freeReg REG_R2 = False
-# endif
-# if defined(REG_R3)
-freeReg REG_R3 = False
-# endif
-# if defined(REG_R4)
-freeReg REG_R4 = False
-# endif
-# if defined(REG_R5)
-freeReg REG_R5 = False
-# endif
-# if defined(REG_R6)
-freeReg REG_R6 = False
-# endif
-# if defined(REG_R7)
-freeReg REG_R7 = False
-# endif
-# if defined(REG_R8)
-freeReg REG_R8 = False
-# endif
-# if defined(REG_R9)
-freeReg REG_R9 = False
-# endif
-# if defined(REG_R10)
-freeReg REG_R10 = False
-# endif
-# if defined(REG_F1)
-freeReg REG_F1 = False
-# endif
-# if defined(REG_F2)
-freeReg REG_F2 = False
-# endif
-# if defined(REG_F3)
-freeReg REG_F3 = False
-# endif
-# if defined(REG_F4)
-freeReg REG_F4 = False
-# endif
-# if defined(REG_F5)
-freeReg REG_F5 = False
-# endif
-# if defined(REG_F6)
-freeReg REG_F6 = False
-# endif
-# if defined(REG_D1)
-freeReg REG_D1 = False
-# endif
-# if defined(REG_D2)
-freeReg REG_D2 = False
-# endif
-# if defined(REG_D3)
-freeReg REG_D3 = False
-# endif
-# if defined(REG_D4)
-freeReg REG_D4 = False
-# endif
-# if defined(REG_D5)
-freeReg REG_D5 = False
-# endif
-# if defined(REG_D6)
-freeReg REG_D6 = False
-# endif
# if defined(REG_Sp)
freeReg REG_Sp = False
# endif
-# if defined(REG_Su)
-freeReg REG_Su = False
-# endif
# if defined(REG_SpLim)
freeReg REG_SpLim = False
# endif
@@ -1119,9 +1050,6 @@ freeReg REG_D6_2 = False
# if defined(REG_Sp)
freeReg REG_Sp = False
# endif
-# if defined(REG_Su)
-freeReg REG_Su = False
-# endif
# if defined(REG_SpLim)
freeReg REG_SpLim = False
# endif