s390-protos.h (s390_split_access_reg): Add prototype.
authorUlrich Weigand <uweigand@de.ibm.com>
Wed, 3 Nov 2004 21:39:48 +0000 (21:39 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Wed, 3 Nov 2004 21:39:48 +0000 (21:39 +0000)
commitc5aa1d125c72e027f99fce58cc5701ab3f269d9d
tree4b3981220f83df1f967208ac51682a2b2feba471
parent57f60923b282714a7a0cdc5965991b20fe07e5eb
s390-protos.h (s390_split_access_reg): Add prototype.

* config/s390/s390-protos.h (s390_split_access_reg): Add prototype.
* config/s390/s390.c (s390_split_access_reg): New function.
(regclass_map): Add access registers.
(get_thread_pointer): Use access register instead of UNSPEC_TP.
* config/s390/s390.h (FIRST_PSEUDO_REGISTER): Set to 38.
(ACCESS_REGNO_P, ACCESS_REG_P): New macros.
(TP_REGNUM): New define.
(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS,
REG_ALLOC_ORDER): Add access registers.
(HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, CLASS_MAX_NREGS,
CANNOT_CHANGE_MODE_CLASS): Support access registers.
(enum reg_class): Add ACCESS_REGS.
(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
(REG_CLASS_FROM_LETTER): Add 't' constraint.
(REGISTER_NAMES): Add access registers.
* config/s390/s390.md (UNSPEC_TP): Remove.
("*movdi_64"): Add access register alternatives.  Provide splitters
to split DImode access register <-> GPR moves into SImode moves.
("*movsi_zarch", "*movsi_esa"): Add access register alternatives.
("movstrictsi"): Likewise.
("get_tp_64", "get_tp_31"): Reimplement using access registers.
("set_tp_64", "set_tp_31"): Likewise.
("*set_tp"): New insn.

From-SVN: r90036
gcc/ChangeLog
gcc/config/s390/s390-protos.h
gcc/config/s390/s390.c
gcc/config/s390/s390.h
gcc/config/s390/s390.md