https://gcc.gnu.org/g:be9d1542324190545ef14f01c68cceabb085bdc0
commit be9d1542324190545ef14f01c68cceabb085bdc0 Author: Michael Meissner <meiss...@linux.ibm.com> Date: Tue May 14 21:25:16 2024 -0400 Revert previous changes Diff: --- gcc/ChangeLog.tar | 101 +-------------------- gcc/config/rs6000/constraints.md | 5 +- gcc/config/rs6000/rs6000-cpus.def | 13 +-- gcc/config/rs6000/rs6000.cc | 84 ++--------------- gcc/config/rs6000/rs6000.h | 31 +++---- gcc/config/rs6000/rs6000.md | 23 +++-- gcc/config/rs6000/rs6000.opt | 12 --- gcc/doc/invoke.texi | 12 +-- gcc/lra-constraints.cc | 9 +- gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c | 4 +- gcc/testsuite/gcc.target/powerpc/pr51513.c | 4 +- .../gcc.target/powerpc/safe-indirect-jump-3.c | 2 +- 12 files changed, 49 insertions(+), 251 deletions(-) diff --git a/gcc/ChangeLog.tar b/gcc/ChangeLog.tar index ad0c80ed7acc..5e1035a5f9f6 100644 --- a/gcc/ChangeLog.tar +++ b/gcc/ChangeLog.tar @@ -1,99 +1,8 @@ -==================== Branch work165-tar, patch #204 ==================== - -Add -mintspr. Default -mtar for power10, not power9. - -2024-05-14 Michael Meissner <meiss...@linux.ibm.com> - - * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Don't set TAR - options here. - (OTHER_POWER10_MASKS): Set TAR options here. Add -mintspr. - (POWERPC_MASKS): Add -mintspr. - * config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached): Add - support for -mintspr. - (rs6000_option_override_internal): Require -mcpu=power9 or -mcpu=power10 - to use -mtar. - (rs6000_opt_masks): Add -mmfspr and -mintspr. - * config/rs6000/rs6000.opt (-mintspr): New option. - -==================== Branch work165-tar, patch #203 ==================== - -Limit SPR registers to hold only DImode/SImode. - -2024-05-08 Michael Meissner <meiss...@linux.ibm.com> - - * config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached): Limit - SPR registers to only hold SImode/DImode. - -==================== Branch work165-tar, patch #202 ==================== - -Add -mfspr option. - -2024-05-08 Michael Meissner <meiss...@linux.ibm.com> - - * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Add -mfspr - support. - (POWERPC_MASKS): Likewise. - * config/rs6000/rs6000.cc (rs6000_register_move_cost): Likewise. - * config/rs6000/rs6000.opt (-mfspr): Likewise. - -==================== Branch work165-tar, patch #201 ==================== - -Fix tests if -mtar is used. - -2024-05-06 Michael Meissner <meiss...@linux.ibm.com> - -gcc/testsuite/ - - * gcc.target/powerpc/ppc-switch-1.c: Add support for using the TAR - register. - * gcc.target/powerpc/pr51513.c: Likewise. - * gcc.target/powerpc/safe-indirect-jump-3.c: Likewise. - -==================== Branch work165-tar, patch #200 ==================== - -Add support for -mtar - -2024-05-03 Michael Meissner <meiss...@linux.ibm.com> - -gcc/ - - * config/rs6000/constraints.md (h constraint): Add tar register to - documentation. - (wt constraint): New constraint. - * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Add -mtar. - (POWERPC_MASKS): Likewise. - * config/rs6000/rs6000.cc (rs6000_reg_names): Add new tar register. - (alt_reg_names): Likewise. - (rs6000_debug_reg_global): Likewise. - (rs6000_init_hard_regno_mode_ok): Likewise. - (rs6000_option_override_internal): Likewise. - (rs6000_conditional_register_usage): Likewise. - (print_operand): Likewise. - (rs6000_debugger_regno): Likewise. - (rs6000_opt_masks): Likewise. - * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Likewise. - (FiXED_REGISTERS): Likewise. - (CALL_REALLY_USED_REGISTERS): Likewise. - (REG_ALLOC_ORDER): Likewise. - (reg_class): Add new TAR_REGS register class. - (REG_CLASS_NAMES): Likewise. - (REG_CLASS_CONTENTS): Likewise. - (r6000_reg_class_enum): Add RS6000_CONSTRAINT_wt. - (REG_NAMES): Add tar register. - * config/rs6000/rs6000.md (TAR_REGNO): New constant. - (mov<mode>_internal): Add support for tar register. - (movcc_<mode>): Likewise. - (movsf_hardfloat): Likewise. - (movsd_hardfloat): Likewise. - (mov<mode>_softfloat): Likewise. - (mov<mode>_hardfloat64): Likewise. - (mov<mode>_softfloat64): Likewise. - (@tablejump<mode>_insn_normal); Likewise. - (@tablejump<mode>_insn_nospec); Likewise. - * config/rs6000/rs6000.opt (-mtar): New option. - * doc/invoke.texi (RS/6000 options): Document -mtar. - * lra-constraints.md (lra_constraints): Print out insn that we can't - generate reloads for. +==================== Branch work165-tar, patch #204 was reverted ==================== +==================== Branch work165-tar, patch #203 was reverted ==================== +==================== Branch work165-tar, patch #202 was reverted ==================== +==================== Branch work165-tar, patch #201 was reverted ==================== +==================== Branch work165-tar, patch #200 was reverted ==================== ==================== Branch work165-tar, baseline ==================== diff --git a/gcc/config/rs6000/constraints.md b/gcc/config/rs6000/constraints.md index 14f0465d7ae5..369a7b75042d 100644 --- a/gcc/config/rs6000/constraints.md +++ b/gcc/config/rs6000/constraints.md @@ -57,7 +57,7 @@ "@internal A compatibility alias for @code{wa}.") (define_register_constraint "h" "SPECIAL_REGS" - "@internal A special register (@code{vrsave}, @code{ctr}, @code{lr} or @code{tar}).") + "@internal A special register (@code{vrsave}, @code{ctr}, or @code{lr}).") (define_register_constraint "c" "CTR_REGS" "The count register, @code{ctr}.") @@ -91,9 +91,6 @@ "@internal Like @code{r}, if @option{-mpowerpc64} is used; otherwise, @code{NO_REGS}.") -(define_register_constraint "wt" "rs6000_constraints[RS6000_CONSTRAINT_wt]" - "The tar register, @code{tar}.") - (define_register_constraint "wx" "rs6000_constraints[RS6000_CONSTRAINT_wx]" "@internal Like @code{d}, if @option{-mpowerpc-gfxopt} is used; otherwise, @code{NO_REGS}.") diff --git a/gcc/config/rs6000/rs6000-cpus.def b/gcc/config/rs6000/rs6000-cpus.def index 46e26b0df5ec..d625dbeb91fd 100644 --- a/gcc/config/rs6000/rs6000-cpus.def +++ b/gcc/config/rs6000/rs6000-cpus.def @@ -59,12 +59,9 @@ | OPTION_MASK_P8_FUSION_SIGN) /* Add ISEL back into ISA 3.0, since it is supposed to be a win. Do not add - FLOAT128_HW here until we are ready to make -mfloat128 on by default. While - ISA 2.07 (power9) supports the TAR register, don't enable it here, because - it doesn't seem to help. */ + FLOAT128_HW here until we are ready to make -mfloat128 on by default. */ #define ISA_3_0_MASKS_SERVER ((ISA_2_7_MASKS_SERVER \ | OPTION_MASK_ISEL \ - | OPTION_MASK_MFSPR \ | OPTION_MASK_MODULO \ | OPTION_MASK_P9_MINMAX \ | OPTION_MASK_P9_MISC \ @@ -81,12 +78,9 @@ /* We comment out PCREL_OPT here to disable it by default because SPEC2017 performance was degraded by it. */ #define OTHER_POWER10_MASKS (OPTION_MASK_MMA \ - | OPTION_MASK_INTSPR \ - | OPTION_MASK_MFSPR \ | OPTION_MASK_PCREL \ /* | OPTION_MASK_PCREL_OPT */ \ - | OPTION_MASK_PREFIXED \ - | OPTION_MASK_TAR) + | OPTION_MASK_PREFIXED) #define ISA_3_1_MASKS_SERVER (ISA_3_0_MASKS_SERVER \ | OPTION_MASK_POWER10 \ @@ -139,10 +133,8 @@ | OPTION_MASK_POWER11 \ | OPTION_MASK_P10_FUSION \ | OPTION_MASK_HTM \ - | OPTION_MASK_INTSPR \ | OPTION_MASK_ISEL \ | OPTION_MASK_MFCRF \ - | OPTION_MASK_MFSPR \ | OPTION_MASK_MMA \ | OPTION_MASK_MODULO \ | OPTION_MASK_MULHW \ @@ -166,7 +158,6 @@ | OPTION_MASK_RECIP_PRECISION \ | OPTION_MASK_SOFT_FLOAT \ | OPTION_MASK_STRICT_ALIGN_OPTIONAL \ - | OPTION_MASK_TAR \ | OPTION_MASK_VSX) #endif diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 7f4ee65c42c4..5bb66dca81dc 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -1224,8 +1224,8 @@ char rs6000_reg_names[][8] = "lr", "ctr", "ca", "ap", /* cr0..cr7 */ "0", "1", "2", "3", "4", "5", "6", "7", - /* vrsave vscr sfp, tar */ - "vrsave", "vscr", "sfp", "tar", + /* vrsave vscr sfp */ + "vrsave", "vscr", "sfp", }; #ifdef TARGET_REGNAMES @@ -1250,8 +1250,8 @@ static const char alt_reg_names[][8] = "lr", "ctr", "ca", "ap", /* cr0..cr7 */ "%cr0", "%cr1", "%cr2", "%cr3", "%cr4", "%cr5", "%cr6", "%cr7", - /* vrsave vscr sfp, tar */ - "vrsave", "vscr", "sfp", "tar" + /* vrsave vscr sfp */ + "vrsave", "vscr", "sfp", }; #endif @@ -1848,7 +1848,6 @@ static int rs6000_hard_regno_mode_ok_uncached (int regno, machine_mode mode) { int last_regno = regno + rs6000_hard_regno_nregs[mode][regno] - 1; - machine_mode orig_mode = mode; if (COMPLEX_MODE_P (mode)) mode = GET_MODE_INNER (mode); @@ -1930,23 +1929,8 @@ rs6000_hard_regno_mode_ok_uncached (int regno, machine_mode mode) if (CR_REGNO_P (regno)) return GET_MODE_CLASS (mode) == MODE_CC; - /* If desired, limit SPR registers to integer modes that can fit in a single - register. Do not allow complex modes. */ - switch (regno) - { - case LR_REGNO: - case CTR_REGNO: - case TAR_REGNO: - case VRSAVE_REGNO: - case VSCR_REGNO: - case CA_REGNO: - return (GET_MODE_SIZE (mode) <= GET_MODE_SIZE (Pmode) - && !COMPLEX_MODE_P (orig_mode) - && (!TARGET_INTSPR || SCALAR_INT_MODE_P (mode))); - - default: - break; - } + if (CA_REGNO_P (regno)) + return mode == Pmode || mode == SImode; /* AltiVec only in AldyVec registers. */ if (ALTIVEC_REGNO_P (regno)) @@ -2320,7 +2304,6 @@ rs6000_debug_reg_global (void) "vs"); rs6000_debug_reg_print (LR_REGNO, LR_REGNO, "lr"); rs6000_debug_reg_print (CTR_REGNO, CTR_REGNO, "ctr"); - rs6000_debug_reg_print (TAR_REGNO, TAR_REGNO, "tar"); rs6000_debug_reg_print (CR0_REGNO, CR7_REGNO, "cr"); rs6000_debug_reg_print (CA_REGNO, CA_REGNO, "ca"); rs6000_debug_reg_print (VRSAVE_REGNO, VRSAVE_REGNO, "vrsave"); @@ -2337,7 +2320,6 @@ rs6000_debug_reg_global (void) "wa reg_class = %s\n" "we reg_class = %s\n" "wr reg_class = %s\n" - "wt reg_class = %s\n" "wx reg_class = %s\n" "wA reg_class = %s\n" "\n", @@ -2346,7 +2328,6 @@ rs6000_debug_reg_global (void) reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wa]], reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_we]], reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wr]], - reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wt]], reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wx]], reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wA]]); @@ -2797,7 +2778,6 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) rs6000_regno_regclass[LR_REGNO] = LINK_REGS; rs6000_regno_regclass[CTR_REGNO] = CTR_REGS; - rs6000_regno_regclass[TAR_REGNO] = TAR_REGS; rs6000_regno_regclass[CA_REGNO] = NO_REGS; rs6000_regno_regclass[VRSAVE_REGNO] = VRSAVE_REGS; rs6000_regno_regclass[VSCR_REGNO] = VRSAVE_REGS; @@ -2817,7 +2797,6 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) reg_class_to_reg_type[(int)VSCR_REGS] = SPR_REG_TYPE; reg_class_to_reg_type[(int)LINK_REGS] = SPR_REG_TYPE; reg_class_to_reg_type[(int)CTR_REGS] = SPR_REG_TYPE; - reg_class_to_reg_type[(int)TAR_REGS] = SPR_REG_TYPE; reg_class_to_reg_type[(int)LINK_OR_CTR_REGS] = SPR_REG_TYPE; reg_class_to_reg_type[(int)CR_REGS] = CR_REG_TYPE; reg_class_to_reg_type[(int)CR0_REGS] = CR_REG_TYPE; @@ -3007,10 +2986,6 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) if (TARGET_DIRECT_MOVE_128) rs6000_constraints[RS6000_CONSTRAINT_we] = VSX_REGS; - /* Power9 adds a TAR register that can hold the target of a jump. */ - if (TARGET_TAR) - rs6000_constraints[RS6000_CONSTRAINT_wt] = TAR_REGS; - /* Set up the reload helper and direct move functions. */ if (TARGET_VSX || TARGET_ALTIVEC) { @@ -4218,15 +4193,6 @@ rs6000_option_override_internal (bool global_init_p) rs6000_isa_flags &= ~OPTION_MASK_FLOAT128_HW; } - /* If -mtar, make sure we have at least a power9. */ - if (TARGET_TAR && !TARGET_P9_MISC) - { - if ((rs6000_isa_flags_explicit & OPTION_MASK_TAR) != 0) - error ("%qs requires %qs", "-mtar", "-mcpu=power9"); - - rs6000_isa_flags &= ~OPTION_MASK_TAR; - } - /* Enable -mprefixed by default on power10 systems. */ if (TARGET_POWER10 && (rs6000_isa_flags_explicit & OPTION_MASK_PREFIXED) == 0) rs6000_isa_flags |= OPTION_MASK_PREFIXED; @@ -4370,15 +4336,6 @@ rs6000_option_override_internal (bool global_init_p) SUB3TARGET_OVERRIDE_OPTIONS; #endif - /* TAR register was introduced in power9. */ - if (TARGET_TAR && !TARGET_P9_MISC) - { - if ((rs6000_isa_flags_explicit & OPTION_MASK_TAR) != 0) - error ("%qs requires at least %qs", "-mtar", "-mcpu=power9"); - - rs6000_isa_flags &= ~OPTION_MASK_TAR; - } - /* If the ABI has support for PC-relative relocations, enable it by default. This test depends on the sub-target tests above setting the code model to medium for ELF v2 systems. */ @@ -10250,9 +10207,6 @@ rs6000_conditional_register_usage (void) for (i = FIRST_ALTIVEC_REGNO + 20; i < FIRST_ALTIVEC_REGNO + 32; ++i) fixed_regs[i] = call_used_regs[i] = 1; } - - if (TARGET_TAR) - fixed_regs[TAR_REGNO] = 0; } @@ -14401,13 +14355,10 @@ print_operand (FILE *file, rtx x, int code) if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_PLTSEQ) x = XVECEXP (x, 0, 0); if (!REG_P (x) || (REGNO (x) != LR_REGNO - && REGNO (x) != CTR_REGNO - && REGNO (x) != TAR_REGNO)) + && REGNO (x) != CTR_REGNO)) output_operand_lossage ("invalid %%T value"); else if (REGNO (x) == LR_REGNO) fputs ("lr", file); - else if (REGNO (x) == TAR_REGNO) - fputs ("tar", file); else fputs ("ctr", file); return; @@ -22829,18 +22780,6 @@ rs6000_register_move_cost (machine_mode mode, ret = 2 * hard_regno_nregs (reg, mode); } - /* Make moves from the CTR/TAR registers more expensive so that the register - allocator does not think of these registers are useful for saving - results. */ - else if (TARGET_MFSPR - && reg_classes_intersect_p (to, GENERAL_REGS) - && (reg_classes_intersect_p (from, CTR_REGS) - || reg_classes_intersect_p (from, TAR_REGS))) - { - rclass = from; - ret = 32; - } - /* Moves from/to GENERAL_REGS. */ else if ((rclass = from, reg_classes_intersect_p (to, GENERAL_REGS)) || (rclass = to, reg_classes_intersect_p (from, GENERAL_REGS))) @@ -24245,8 +24184,6 @@ rs6000_debugger_regno (unsigned int regno, unsigned int format) return 108; if (regno == CTR_REGNO) return 109; - if (regno == TAR_REGNO) - return 111; if (regno == CA_REGNO) return 101; /* XER */ /* Special handling for CR for .debug_frame: rs6000_emit_prologue has @@ -24264,7 +24201,7 @@ rs6000_debugger_regno (unsigned int regno, unsigned int format) /* These do not make much sense. */ if (regno == FRAME_POINTER_REGNUM) - return FIRST_PSEUDO_REGISTER; + return 111; if (regno == ARG_POINTER_REGNUM) return 67; if (regno == 64) @@ -24287,8 +24224,6 @@ rs6000_debugger_regno (unsigned int regno, unsigned int format) return 65; if (regno == CTR_REGNO) return 66; - if (regno == TAR_REGNO) - return 111; if (regno == CA_REGNO) return 76; /* XER */ if (CR_REGNO_P (regno)) @@ -24525,11 +24460,9 @@ static struct rs6000_opt_mask const rs6000_opt_masks[] = { "power11", OPTION_MASK_POWER11, false, false }, { "hard-dfp", OPTION_MASK_DFP, false, true }, { "htm", OPTION_MASK_HTM, false, true }, - { "intspr", OPTION_MASK_INTSPR, false, true }, { "isel", OPTION_MASK_ISEL, false, true }, { "mfcrf", OPTION_MASK_MFCRF, false, true }, { "mfpgpr", 0, false, true }, - { "mfspr", OPTION_MASK_MFSPR, false, true }, { "mma", OPTION_MASK_MMA, false, true }, { "modulo", OPTION_MASK_MODULO, false, true }, { "mulhw", OPTION_MASK_MULHW, false, true }, @@ -24553,7 +24486,6 @@ static struct rs6000_opt_mask const rs6000_opt_masks[] = { "recip-precision", OPTION_MASK_RECIP_PRECISION, false, true }, { "save-toc-indirect", OPTION_MASK_SAVE_TOC_INDIRECT, false, true }, { "string", 0, false, true }, - { "tar", OPTION_MASK_TAR, false, true }, { "update", OPTION_MASK_NO_UPDATE, true , true }, { "vsx", OPTION_MASK_VSX, false, true }, #ifdef OPTION_MASK_64BIT diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index ae9aff951956..2e60a0395adc 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -788,7 +788,7 @@ enum data_align { align_abi, align_opt, align_both }; Another pseudo (not included in DWARF_FRAME_REGISTERS) is soft frame pointer, which is eventually eliminated in favor of SP or FP. */ -#define FIRST_PSEUDO_REGISTER 112 +#define FIRST_PSEUDO_REGISTER 111 /* Use standard DWARF numbering for DWARF debugging information. */ #define DEBUGGER_REGNO(REGNO) rs6000_debugger_regno ((REGNO), 0) @@ -824,8 +824,8 @@ enum data_align { align_abi, align_opt, align_both }; 0, 0, 1, 1, \ /* cr0..cr7 */ \ 0, 0, 0, 0, 0, 0, 0, 0, \ - /* vrsave vscr sfp, tar */ \ - 1, 1, 1, 1 \ + /* vrsave vscr sfp */ \ + 1, 1, 1 \ } /* Like `CALL_USED_REGISTERS' except this macro doesn't require that @@ -848,8 +848,8 @@ enum data_align { align_abi, align_opt, align_both }; 1, 1, 1, 1, \ /* cr0..cr7 */ \ 1, 1, 0, 0, 0, 1, 1, 1, \ - /* vrsave vscr sfp, tar */ \ - 0, 0, 0, 1 \ + /* vrsave vscr sfp */ \ + 0, 0, 0 \ } #define TOTAL_ALTIVEC_REGS (LAST_ALTIVEC_REGNO - FIRST_ALTIVEC_REGNO + 1) @@ -878,7 +878,6 @@ enum data_align { align_abi, align_opt, align_both }; r0 (not saved; cannot be base reg) r31 - r13 (saved; order given to save least number) r12 (not saved; if used for DImode or DFmode would use r13) - tar (not saved; tar is preferred over ctr or lr) ctr (not saved; when we have the choice ctr is better) lr (saved) r1, r2, ap, ca (fixed) @@ -921,7 +920,7 @@ enum data_align { align_abi, align_opt, align_both }; 3, EARLY_R12 11, 0, \ 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, \ 18, 17, 16, 15, 14, 13, LATE_R12 \ - 111, 97, 96, \ + 97, 96, \ 1, MAYBE_R2_FIXED 99, 98, \ /* AltiVec registers. */ \ 64, 65, \ @@ -1096,7 +1095,6 @@ enum reg_class GEN_OR_VSX_REGS, LINK_REGS, CTR_REGS, - TAR_REGS, LINK_OR_CTR_REGS, SPECIAL_REGS, SPEC_OR_GEN_REGS, @@ -1126,7 +1124,6 @@ enum reg_class "GEN_OR_VSX_REGS", \ "LINK_REGS", \ "CTR_REGS", \ - "TAR_REGS", \ "LINK_OR_CTR_REGS", \ "SPECIAL_REGS", \ "SPEC_OR_GEN_REGS", \ @@ -1167,24 +1164,22 @@ enum reg_class { 0x00000000, 0x00000000, 0x00000000, 0x00000001 }, \ /* CTR_REGS. */ \ { 0x00000000, 0x00000000, 0x00000000, 0x00000002 }, \ - /* TAR_REGS. */ \ - { 0x00000000, 0x00000000, 0x00000000, 0x00008000 }, \ /* LINK_OR_CTR_REGS. */ \ - { 0x00000000, 0x00000000, 0x00000000, 0x00008003 }, \ + { 0x00000000, 0x00000000, 0x00000000, 0x00000003 }, \ /* SPECIAL_REGS. */ \ - { 0x00000000, 0x00000000, 0x00000000, 0x00009003 }, \ + { 0x00000000, 0x00000000, 0x00000000, 0x00001003 }, \ /* SPEC_OR_GEN_REGS. */ \ - { 0xffffffff, 0x00000000, 0x00000000, 0x0000d00b }, \ + { 0xffffffff, 0x00000000, 0x00000000, 0x0000500b }, \ /* CR0_REGS. */ \ { 0x00000000, 0x00000000, 0x00000000, 0x00000010 }, \ /* CR_REGS. */ \ { 0x00000000, 0x00000000, 0x00000000, 0x00000ff0 }, \ /* NON_FLOAT_REGS. */ \ - { 0xffffffff, 0x00000000, 0x00000000, 0x0000cffb }, \ + { 0xffffffff, 0x00000000, 0x00000000, 0x00004ffb }, \ /* CA_REGS. */ \ { 0x00000000, 0x00000000, 0x00000000, 0x00000004 }, \ /* ALL_REGS. */ \ - { 0xffffffff, 0xffffffff, 0xffffffff, 0x0000ffff } \ + { 0xffffffff, 0xffffffff, 0xffffffff, 0x00007fff } \ } /* The same information, inverted: @@ -1206,7 +1201,6 @@ enum r6000_reg_class_enum { RS6000_CONSTRAINT_wa, /* Any VSX register */ RS6000_CONSTRAINT_we, /* VSX register if ISA 3.0 vector. */ RS6000_CONSTRAINT_wr, /* GPR register if 64-bit */ - RS6000_CONSTRAINT_wt, /* TAR register. */ RS6000_CONSTRAINT_wx, /* FPR register for STFIWX */ RS6000_CONSTRAINT_wA, /* BASE_REGS if 64-bit. */ RS6000_CONSTRAINT_MAX @@ -2085,8 +2079,7 @@ extern char rs6000_reg_names[][8]; /* register names (0 vs. %r0). */ &rs6000_reg_names[108][0], /* vrsave */ \ &rs6000_reg_names[109][0], /* vscr */ \ \ - &rs6000_reg_names[110][0], /* sfp */ \ - &rs6000_reg_names[111][0] /* tar */ \ + &rs6000_reg_names[110][0] /* sfp */ \ } /* Table of additional register names to use in user input. */ diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 5897da7d38de..41a5b86d3c63 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -51,7 +51,6 @@ (VRSAVE_REGNO 108) (VSCR_REGNO 109) (FRAME_POINTER_REGNUM 110) - (TAR_REGNO 111) ]) ;; @@ -8073,7 +8072,7 @@ [(set (match_operand:QHI 0 "nonimmediate_operand" "=r, r, wa, m, ?Z, r, wa, wa, wa, v, ?v, r, - wa, r, *wt*c*l, *h") + wa, r, *c*l, *h") (match_operand:QHI 1 "input_operand" "r, m, ?Z, r, wa, i, wa, O, wM, wB, wS, wa, @@ -8124,9 +8123,9 @@ (define_insn "*movcc_<mode>" [(set (match_operand:CC_any 0 "nonimmediate_operand" - "=y,x,?y,y,r,r,r,r, r,*wt*c*l,r,m") + "=y,x,?y,y,r,r,r,r, r,*c*l,r,m") (match_operand:CC_any 1 "general_operand" - " y,r, r,O,x,y,r,I,*h, r,m,r"))] + " y,r, r,O,x,y,r,I,*h, r,m,r"))] "register_operand (operands[0], <MODE>mode) || register_operand (operands[1], <MODE>mode)" "@ @@ -8214,7 +8213,7 @@ [(set (match_operand:SF 0 "nonimmediate_operand" "=!r, f, v, wa, m, wY, Z, m, wa, !r, f, wa, - !r, *wt*c*l, !r, *h, wa") + !r, *c*l, !r, *h, wa") (match_operand:SF 1 "input_operand" "m, m, wY, Z, f, v, wa, r, j, j, f, wa, @@ -8260,7 +8259,7 @@ (define_insn "movsd_hardfloat" [(set (match_operand:SD 0 "nonimmediate_operand" "=!r, d, m, ?Z, ?d, ?r, - f, !r, *wt*c*l, !r, *h") + f, !r, *c*l, !r, *h") (match_operand:SD 1 "input_operand" "m, ?Z, r, wx, r, d, f, r, r, *h, 0"))] @@ -8290,7 +8289,7 @@ ;; LIS G-const. F/n-const NOP (define_insn "*mov<mode>_softfloat" [(set (match_operand:FMOVE32 0 "nonimmediate_operand" - "=r, *wt*c*l, r, r, m, r, + "=r, *c*l, r, r, m, r, r, r, r, *h") (match_operand:FMOVE32 1 "input_operand" @@ -8604,7 +8603,7 @@ [(set (match_operand:FMOVE64 0 "nonimmediate_operand" "=m, d, d, <f64_p9>, wY, <f64_av>, Z, <f64_vsx>, <f64_vsx>, !r, - YZ, r, !r, *wt*c*l, !r, + YZ, r, !r, *c*l, !r, *h, r, <f64_dm>, wa") (match_operand:FMOVE64 1 "input_operand" "d, m, d, wY, <f64_p9>, @@ -8656,7 +8655,7 @@ (define_insn "*mov<mode>_softfloat64" [(set (match_operand:FMOVE64 0 "nonimmediate_operand" - "=Y, r, r, *wt*c*l,r, r, + "=Y, r, r, *c*l, r, r, r, r, *h") (match_operand:FMOVE64 1 "input_operand" @@ -13618,7 +13617,7 @@ (define_insn "@tablejump<mode>_insn_normal" [(set (pc) - (match_operand:P 0 "register_operand" "wt,c,*l")) + (match_operand:P 0 "register_operand" "c,*l")) (use (label_ref (match_operand 1)))] "rs6000_speculate_indirect_jumps" "b%T0" @@ -13626,9 +13625,9 @@ (define_insn "@tablejump<mode>_insn_nospec" [(set (pc) - (match_operand:P 0 "register_operand" "wt,c,*l")) + (match_operand:P 0 "register_operand" "c,*l")) (use (label_ref (match_operand 1))) - (clobber (match_operand:CC 2 "cc_reg_operand" "=y,y,y"))] + (clobber (match_operand:CC 2 "cc_reg_operand" "=y,y"))] "!rs6000_speculate_indirect_jumps" "crset %E2\;beq%T0- %2\;b $" [(set_attr "type" "jmpreg") diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt index 9e9efa60bea5..70fd7080bc52 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt @@ -607,18 +607,6 @@ mmma Target Mask(MMA) Var(rs6000_isa_flags) Generate (do not generate) MMA instructions. -mtar -Target Mask(TAR) Var(rs6000_isa_flags) -Generate (do not generate) code using the TAR register. - -mmfspr -Target Undocumented Mask(MFSPR) Var(rs6000_isa_flags) -Generate (do not generate) code making move from SPR register expensive. - -mintspr -Target Undocumented Mask(INTSPR) Var(rs6000_isa_flags) -Require (disallow) SPR registers to hold only integer modes and not floating point modes. - mrelative-jumptables Target Undocumented Var(rs6000_relative_jumptables) Init(1) Save diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index c0903d67615a..64e47803d2fd 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -1332,7 +1332,7 @@ See RS/6000 and PowerPC Options. -mstack-protector-guard=@var{guard} -mstack-protector-guard-reg=@var{reg} -mstack-protector-guard-offset=@var{offset} -mprefixed -mno-prefixed -mpcrel -mno-pcrel -mmma -mno-mmma -mrop-protect -mno-rop-protect --mprivileged -mno-privileged -mtar -mno-tar} +-mprivileged -mno-privileged} @emph{RX Options} @gccoptlist{-m64bit-doubles -m32bit-doubles -fpu -nofpu @@ -31351,7 +31351,7 @@ following options: -mcrypto -mhtm -mpower8-fusion -mquad-memory -mquad-memory-atomic -mfloat128 -mfloat128-hardware -mprefixed -mpcrel -mmma --mrop-protect -mtar} +-mrop-protect} The particular options set for any particular CPU varies between compiler versions, depending on what setting seems to produce optimal @@ -32354,14 +32354,6 @@ Generate (do not generate) ROP protection instructions when the target processor supports them. Currently this option disables the shrink-wrap optimization (@option{-fshrink-wrap}). -@opindex mtar -@opindex mno-tar -@item -mtar -@itemx -mno-tar -Generate (do not generate) code that uses the @code{TAR} register. -The @option{-mtar} option requires that the option -@option{-mcpu=power9} (or later) is enabled. - @opindex mprivileged @opindex mno-privileged @item -mprivileged diff --git a/gcc/lra-constraints.cc b/gcc/lra-constraints.cc index 4e72aa2d0782..10e3d4e40977 100644 --- a/gcc/lra-constraints.cc +++ b/gcc/lra-constraints.cc @@ -5346,12 +5346,9 @@ lra_constraints (bool first_p) continue; } if (new_insns_num > MAX_RELOAD_INSNS_NUMBER) - { - debug_rtx (curr_insn); - internal_error - ("maximum number of generated reload insns per insn achieved (%d)", - MAX_RELOAD_INSNS_NUMBER); - } + internal_error + ("maximum number of generated reload insns per insn achieved (%d)", + MAX_RELOAD_INSNS_NUMBER); new_insns_num++; if (DEBUG_INSN_P (curr_insn)) { diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c b/gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c index 7c1031d1b396..eb379a0f67d4 100644 --- a/gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c +++ b/gcc/testsuite/gcc.target/powerpc/ppc-switch-1.c @@ -1,8 +1,8 @@ /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } } */ /* { dg-options "-O2 --param case-values-threshold=2" } */ -/* { dg-final { scan-assembler "mt\(ctr\|tar\)" } } */ -/* { dg-final { scan-assembler "b\(ctr\|tar\)" } } */ +/* { dg-final { scan-assembler "mtctr" } } */ +/* { dg-final { scan-assembler "bctr" } } */ /* Force using a dispatch table even though by default we would generate ifs. */ diff --git a/gcc/testsuite/gcc.target/powerpc/pr51513.c b/gcc/testsuite/gcc.target/powerpc/pr51513.c index 43c06da8f320..1c72a75502a1 100644 --- a/gcc/testsuite/gcc.target/powerpc/pr51513.c +++ b/gcc/testsuite/gcc.target/powerpc/pr51513.c @@ -1,8 +1,8 @@ /* { dg-do compile { target { powerpc*-*-linux* } } } */ /* { dg-options "-O2 -fjump-tables --param case-values-threshold=1" } */ /* Verify we created a jump table. */ -/* { dg-final { scan-assembler-times "mt\(ctr\|tar\) " 1 } } */ -/* { dg-final { scan-assembler-times "b\(ctr\|tar\)" 1 } } */ +/* { dg-final { scan-assembler-times "mtctr " 1 } } */ +/* { dg-final { scan-assembler-times "bctr" 1 } } */ /* Verify we eliminated the range check. */ /* { dg-final { scan-assembler-not "cmpldi" } } */ /* { dg-final { scan-assembler-not "cmplwi" } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c b/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c index f61a4dbfad83..87881fb18fc5 100644 --- a/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c +++ b/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c @@ -47,5 +47,5 @@ int foo (int x) } /* { dg-final { scan-assembler "crset" } } */ -/* { dg-final { scan-assembler "beq\(ctr\|tar\)-" } } */ +/* { dg-final { scan-assembler "beqctr-" } } */ /* { dg-final { scan-assembler {b \$} } } */