rs6000: Renumber the registers

Programming / Compilers / GCC - segher [138bc75d-0d04-0410-961f-82ee72b054a4] - 6 May 2019 23:50 EDT

This renumbers the registers.

It moves the VRs to 64..95, right after the GPRs and the FPRS. This means that the VSRs (which are aliases to the FPRs and the VRs, in that order) are consecutive now.

It removes MQ, which has been just a stub for ages (it is a leftover from RIOS, old POWER).

It moves the CR fields to 100..107, which is a bit easier to read than the 68..75 is was before.

The rest fills the holes. It should be easy to move anything else after this series, so the exact order isn't very important anymore, we aren't stuck with it if we dislike it.

Many things still want the GPRs to be at 0..31, and some things want the FPRs at 32..63. I don't think we'll ever want to change that, so I left it be.

Small things... It removes DWARF_FRAME_REGISTERS, it used to save 1000 or so words of memory, but it has been just a handful for a while, and now it is one. Some whitespace fixes. Testing showed one or two places where register allocation was different (not worse, not better, just different).



- config/rs6000/rs6000.md (FIRST_ALTIVEC_REGNO, LAST_ALTIVEC_REGNO) (LR_REGNO, CTR_REGNO, CA_REGNO, ARG_POINTER_REGNUM, CR0_REGNO) (CR1_REGNO, CR2_REGNO, CR3_REGNO, CR4_REGNO, CR5_REGNO, CR6_REGNO) (CR7_REGNO, MAX_CR_REGNO, VRSAVE_REGNO, VSCR_REGNO) (FRAME_POINTER_REGNUM): Change numbering.
- config/rs6000/rs6000.c (rs6000_reg_names): Adjust. (alt_reg_names): Adjust. (rs6000_conditional_register_usage): Don't mark hard register 64 as fixed.
- config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Adjust. (DWARF_FRAME_REGISTERS): Delete. (DWARF2_FRAME_REG_OUT): Fix whitespace. (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS): Adjust. (REG_ALLOC_ORDER): Adjust. (FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM): Adjust. (REG_CLASS_CONTENTS): Adjust. (RETURN_ADDR_RTX): Change comment. (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P): Use ARG_POINTER_REGNUM instead of 67. (REGISTER_NAMES): Adjust. (ADDITIONAL_REGISTER_NAMES): Adjust.
- config/rs6000/darwin.h (REGISTER_NAMES): Adjust.

2d07e891386 rs6000: Renumber the registers
gcc/ChangeLog | 26 +++++
gcc/config/rs6000/darwin.h | 20 ++--
gcc/config/rs6000/rs6000.c | 64 +++++------
gcc/config/rs6000/rs6000.h | 270 +++++++++++++++++++++++---------------------
gcc/config/rs6000/rs6000.md | 36 +++---
5 files changed, 228 insertions(+), 188 deletions(-)

Upstream: gcc.gnu.org


  • Share