diff options
author | Peter Trommler <ptrommler@acm.org> | 2018-12-11 16:43:49 +0100 |
---|---|---|
committer | Peter Trommler <ptrommler@acm.org> | 2019-02-27 19:09:38 +0100 |
commit | 9758dcadac31f9c9a0b4e84acaaabdc8c99fcdf1 (patch) | |
tree | ed4ae7e3d7c9fec308e7646623fb046ebe01e158 /includes/CodeGen.Platform.hs | |
parent | 2e8f664957dc3763dc4375894b8dc4d046d2e95b (diff) | |
download | haskell-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.hs | 72 |
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 |