S/390: Remove support for g5 and g6 machines

g5 and g6 were deprecated since gcc 6.1.0 (commit 3bd8520f).

gcc/ChangeLog:

2018-08-08  Ilya Leoshkevich  <iii@linux.ibm.com>

	* common/config/s390/s390-common.c (processor_flags_table):
        Remove flags.
	* config.gcc: Remove with_arch/with_tune support.
	* config/s390/2064.md: Remove cpu attribute comparisons.
	* config/s390/driver-native.c (s390_host_detect_local_cpu):
        Remove MTN.
	* config/s390/linux.h (ASM_SPEC):
        Remove -march support.
	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal):
        Use a table to get an arch level.
	* config/s390/s390-opts.h (enum processor_type):
        Remove enum values.
	* config/s390/s390.c
        (processor_table): Remove entries, add arch_level values.
        (s390_issue_rate): Remove cases.
        (s390_option_override): Adjust
        s390_option_override_internal() call.
	(s390_option_override_internal): Remove deprecation warning.
        (s390_valid_target_attribute_tree): Adjust
        s390_option_override_internal() call.
	* config/s390/s390.h (struct s390_processor):
        Share with s390-c.c, add arch_level field.
	* config/s390/s390.md:
        Remove occurrences in cpu attribute.
	* config/s390/s390.opt: Remove -march/-mtune support.
	* config/s390/tpf.h (ASM_SPEC): Remove -march support.
	* doc/invoke.texi: Remove deprecation warning.

gcc/testsuite/ChangeLog:

2018-08-08  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/hotpatch-8.c: Remove.
	* gcc.target/s390/hotpatch-9.c: Remove.
	* gcc.target/s390/mnop-mcount-m31-fpic.c: Remove.
	* gcc.target/s390/mnop-mcount-m31.c: Remove.

From-SVN: r263393
This commit is contained in:
Ilya Leoshkevich 2018-08-08 10:55:56 +00:00 committed by Andreas Krebbel
parent e408261123
commit 52d4aa4fcf
19 changed files with 84 additions and 162 deletions

View file

@ -1,3 +1,33 @@
2018-08-08 Ilya Leoshkevich <iii@linux.ibm.com>
* common/config/s390/s390-common.c (processor_flags_table):
Remove flags.
* config.gcc: Remove with_arch/with_tune support.
* config/s390/2064.md: Remove cpu attribute comparisons.
* config/s390/driver-native.c (s390_host_detect_local_cpu):
Remove MTN.
* config/s390/linux.h (ASM_SPEC):
Remove -march support.
* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal):
Use a table to get an arch level.
* config/s390/s390-opts.h (enum processor_type):
Remove enum values.
* config/s390/s390.c
(processor_table): Remove entries, add arch_level values.
(s390_issue_rate): Remove cases.
(s390_option_override): Adjust
s390_option_override_internal() call.
(s390_option_override_internal): Remove deprecation warning.
(s390_valid_target_attribute_tree): Adjust
s390_option_override_internal() call.
* config/s390/s390.h (struct s390_processor):
Share with s390-c.c, add arch_level field.
* config/s390/s390.md:
Remove occurrences in cpu attribute.
* config/s390/s390.opt: Remove -march/-mtune support.
* config/s390/tpf.h (ASM_SPEC): Remove -march support.
* doc/invoke.texi: Remove deprecation warning.
2018-08-08 Luis Machado <luis.machado@linaro.org>
* config/aarch64/aarch64.c (qdf24xx_vector_cost): New static

View file

@ -29,8 +29,6 @@ along with GCC; see the file COPYING3. If not see
EXPORTED_CONST int processor_flags_table[] =
{
/* g5 */ PF_IEEE_FLOAT,
/* g6 */ PF_IEEE_FLOAT,
/* z900 */ PF_IEEE_FLOAT | PF_ZARCH,
/* z990 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT,
/* z9-109 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT

View file

@ -4574,7 +4574,7 @@ case "${target}" in
for which in arch tune; do
eval "val=\$with_$which"
case ${val} in
"" | native | g5 | g6 | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | arch3 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12)
"" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12)
# OK
;;
*)

View file

@ -39,63 +39,61 @@
;; |
;; wr
;; This scheduler description is also used for the g5 and g6.
(define_automaton "z_ipu")
(define_cpu_unit "z_e1" "z_ipu")
(define_cpu_unit "z_wr" "z_ipu")
(define_insn_reservation "z_la" 1
(and (eq_attr "cpu" "z900,g5,g6")
(and (eq_attr "cpu" "z900")
(eq_attr "type" "la"))
"z_e1,z_wr")
(define_insn_reservation "z_larl" 1
(and (eq_attr "cpu" "z900,g5,g6")
(and (eq_attr "cpu" "z900")
(eq_attr "type" "larl"))
"z_e1,z_wr")
(define_insn_reservation "z_load" 1
(and (eq_attr "cpu" "z900,g5,g6")
(and (eq_attr "cpu" "z900")
(eq_attr "type" "load"))
"z_e1,z_wr")
(define_insn_reservation "z_store" 1
(and (eq_attr "cpu" "z900,g5,g6")
(and (eq_attr "cpu" "z900")
(eq_attr "type" "store"))
"z_e1,z_wr")
(define_insn_reservation "z_sem" 2
(and (eq_attr "cpu" "z900,g5,g6")
(and (eq_attr "cpu" "z900")
(eq_attr "type" "sem"))
"z_e1*2,z_wr")
(define_insn_reservation "z_call" 5
(and (eq_attr "cpu" "z900,g5,g6")
(and (eq_attr "cpu" "z900")
(eq_attr "type" "jsr"))
"z_e1*5,z_wr")
(define_insn_reservation "z_mul" 5
(and (eq_attr "cpu" "g5,g6,z900")
(and (eq_attr "cpu" "z900")
(eq_attr "type" "imulsi,imulhi"))
"z_e1*5,z_wr")
(define_insn_reservation "z_inf" 10
(and (eq_attr "cpu" "g5,g6,z900")
(and (eq_attr "cpu" "z900")
(eq_attr "type" "idiv,imuldi"))
"z_e1*10,z_wr")
;; For everything else we check the atype flag.
(define_insn_reservation "z_int" 1
(and (eq_attr "cpu" "z900,g5,g6")
(and (eq_attr "cpu" "z900")
(and (not (eq_attr "type" "la,larl,load,store,jsr"))
(eq_attr "atype" "reg")))
"z_e1,z_wr")
(define_insn_reservation "z_agen" 1
(and (eq_attr "cpu" "z900,g5,g6")
(and (eq_attr "cpu" "z900")
(and (not (eq_attr "type" "la,larl,load,store,jsr"))
(eq_attr "atype" "agen")))
"z_e1,z_wr")

View file

@ -86,8 +86,6 @@ s390_host_detect_local_cpu (int argc, const char **argv)
machine_id = strtol (p, NULL, 16);
switch (machine_id)
{
/* g5 and g6 default to z900 */
case 0x9672:
case 0x2064:
case 0x2066:
cpu = "z900";

View file

@ -55,7 +55,6 @@ along with GCC; see the file COPYING3. If not see
#undef ASM_SPEC
#define ASM_SPEC \
"%{m31&m64}%{mesa&mzarch}%{march=z*}" \
"%{march=arch3:-march=g5}" \
"%{march=arch5:-march=z900}" \
"%{march=arch6:-march=z990}" \
"%{march=arch7:-march=z9-ec}" \

View file

@ -335,15 +335,8 @@ s390_cpu_cpp_builtins_internal (cpp_reader *pfile,
"__bool");
{
char macro_def[64];
int arch_level;
gcc_assert (s390_arch != PROCESSOR_NATIVE);
arch_level = (int)s390_arch + 3;
if (s390_arch >= PROCESSOR_2094_Z9_EC)
/* Z9_EC has the same level as Z9_109. */
arch_level--;
/* Review when a new arch is added and increase the value. */
char dummy[(PROCESSOR_max > 12) ? -1 : 1] __attribute__((unused));
sprintf (macro_def, "__ARCH__=%d", arch_level);
sprintf (macro_def, "__ARCH__=%d", processor_table[s390_arch].arch_level);
cpp_undef (pfile, "__ARCH__");
cpp_define (pfile, macro_def);
}

View file

@ -20,16 +20,14 @@ along with GCC; see the file COPYING3. If not see
#ifndef S390_OPTS_H
#define S390_OPTS_H
/* Which processor to generate code or schedule for. The cpu attribute
/* Which processor to generate code or schedule for. The `cpu' attribute
defines a list that mirrors this list, so changes to s390.md must be
made at the same time. The enumeration must also be kept in snyc with
processor_table in s390.c (the enumeration values are used as indices into
the table). */
made at the same time. The enumeration must also be kept in sync with
`processor_table' and `processor_flags_table' in s390.c (the enumeration
values are used as indices into these tables). */
enum processor_type
{
PROCESSOR_9672_G5,
PROCESSOR_9672_G6,
PROCESSOR_2064_Z900,
PROCESSOR_2084_Z990,
PROCESSOR_2094_Z9_109,

View file

@ -326,29 +326,18 @@ struct processor_costs zEC12_cost =
COSTS_N_INSNS (160), /* DSGR cracked */
};
static struct
const struct s390_processor processor_table[] =
{
/* The preferred name to be used in user visible output. */
const char *const name;
/* CPU name as it should be passed to Binutils via .machine */
const char *const binutils_name;
const enum processor_type processor;
const struct processor_costs *cost;
}
const processor_table[] =
{
{ "g5", "g5", PROCESSOR_9672_G5, &z900_cost },
{ "g6", "g6", PROCESSOR_9672_G6, &z900_cost },
{ "z900", "z900", PROCESSOR_2064_Z900, &z900_cost },
{ "z990", "z990", PROCESSOR_2084_Z990, &z990_cost },
{ "z9-109", "z9-109", PROCESSOR_2094_Z9_109, &z9_109_cost },
{ "z9-ec", "z9-ec", PROCESSOR_2094_Z9_EC, &z9_109_cost },
{ "z10", "z10", PROCESSOR_2097_Z10, &z10_cost },
{ "z196", "z196", PROCESSOR_2817_Z196, &z196_cost },
{ "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost },
{ "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost },
{ "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost },
{ "native", "", PROCESSOR_NATIVE, NULL }
{ "z900", "z900", PROCESSOR_2064_Z900, &z900_cost, 5 },
{ "z990", "z990", PROCESSOR_2084_Z990, &z990_cost, 6 },
{ "z9-109", "z9-109", PROCESSOR_2094_Z9_109, &z9_109_cost, 7 },
{ "z9-ec", "z9-ec", PROCESSOR_2094_Z9_EC, &z9_109_cost, 7 },
{ "z10", "z10", PROCESSOR_2097_Z10, &z10_cost, 8 },
{ "z196", "z196", PROCESSOR_2817_Z196, &z196_cost, 9 },
{ "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost, 10 },
{ "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost, 11 },
{ "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost, 12 },
{ "native", "", PROCESSOR_NATIVE, NULL, 0 }
};
extern int reload_completed;
@ -8190,8 +8179,6 @@ s390_issue_rate (void)
return 3;
case PROCESSOR_2097_Z10:
return 2;
case PROCESSOR_9672_G5:
case PROCESSOR_9672_G6:
case PROCESSOR_2064_Z900:
/* Starting with EC12 we use the sched_reorder hook to take care
of instruction dispatch constraints. The algorithm only
@ -15457,27 +15444,9 @@ s390_override_options_after_change (void)
}
static void
s390_option_override_internal (bool main_args_p,
struct gcc_options *opts,
s390_option_override_internal (struct gcc_options *opts,
const struct gcc_options *opts_set)
{
const char *prefix;
const char *suffix;
/* Set up prefix/suffix so the error messages refer to either the command
line argument, or the attribute(target). */
if (main_args_p)
{
prefix = "-m";
suffix = "";
}
else
{
prefix = "option(\"";
suffix = "\")";
}
/* Architecture mode defaults according to ABI. */
if (!(opts_set->x_target_flags & MASK_ZARCH))
{
@ -15490,24 +15459,12 @@ s390_option_override_internal (bool main_args_p,
/* Set the march default in case it hasn't been specified on cmdline. */
if (!opts_set->x_s390_arch)
opts->x_s390_arch = PROCESSOR_2064_Z900;
else if (opts->x_s390_arch == PROCESSOR_9672_G5
|| opts->x_s390_arch == PROCESSOR_9672_G6)
warning (OPT_Wdeprecated, "%sarch=%s%s is deprecated and will be removed "
"in future releases; use at least %sarch=z900%s",
prefix, opts->x_s390_arch == PROCESSOR_9672_G5 ? "g5" : "g6",
suffix, prefix, suffix);
opts->x_s390_arch_flags = processor_flags_table[(int) opts->x_s390_arch];
/* Determine processor to tune for. */
if (!opts_set->x_s390_tune)
opts->x_s390_tune = opts->x_s390_arch;
else if (opts->x_s390_tune == PROCESSOR_9672_G5
|| opts->x_s390_tune == PROCESSOR_9672_G6)
warning (OPT_Wdeprecated, "%stune=%s%s is deprecated and will be removed "
"in future releases; use at least %stune=z900%s",
prefix, opts->x_s390_tune == PROCESSOR_9672_G5 ? "g5" : "g6",
suffix, prefix, suffix);
opts->x_s390_tune_flags = processor_flags_table[opts->x_s390_tune];
@ -15763,7 +15720,7 @@ s390_option_override (void)
/* Set up function hooks. */
init_machine_status = s390_init_machine_status;
s390_option_override_internal (true, &global_options, &global_options_set);
s390_option_override_internal (&global_options, &global_options_set);
/* Save the initial options in case the user does function specific
options. */
@ -16068,7 +16025,7 @@ s390_valid_target_attribute_tree (tree args,
dest[i] |= src[i];
/* Do any overrides, such as arch=xxx, or tune=xxx support. */
s390_option_override_internal (false, opts, &new_opts_set);
s390_option_override_internal (opts, &new_opts_set);
/* Save the current options unless we are validating options for
#pragma. */
t = build_target_option_node (opts);

View file

@ -1029,6 +1029,19 @@ do { \
extern const int processor_flags_table[];
struct s390_processor
{
/* The preferred name to be used in user visible output. */
const char *const name;
/* CPU name as it should be passed to Binutils via .machine */
const char *const binutils_name;
const enum processor_type processor;
const struct processor_costs *cost;
int arch_level;
};
extern const struct s390_processor processor_table[];
/* The truth element value for vector comparisons. Our instructions
always generate -1 in that case. */
#define VECTOR_STORE_FLAG_VALUE(MODE) CONSTM1_RTX (GET_MODE_INNER (MODE))

View file

@ -492,11 +492,9 @@
;; Processor type. This attribute must exactly match the processor_type
;; enumeration in s390.h. The current machine description does not
;; distinguish between g5 and g6, but there are differences between the two
;; CPUs could in theory be modeled.
;; enumeration in s390.h.
(define_attr "cpu" "g5,g6,z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,arch12"
(define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,arch12"
(const (symbol_ref "s390_tune_attr")))
(define_attr "cpu_facility"
@ -561,8 +559,7 @@
]
(const_int 0)))
;; Pipeline description for z900. For lack of anything better,
;; this description is also used for the g5 and g6.
;; Pipeline description for z900.
(include "2064.md")
;; Pipeline description for z990, z9-109 and z9-ec.

View file

@ -58,15 +58,6 @@ Generate code for given CPU.
Enum
Name(processor_type) Type(enum processor_type)
EnumValue
Enum(processor_type) String(g5) Value(PROCESSOR_9672_G5)
EnumValue
Enum(processor_type) String(arch3) Value(PROCESSOR_9672_G5)
EnumValue
Enum(processor_type) String(g6) Value(PROCESSOR_9672_G6)
EnumValue
Enum(processor_type) String(z900) Value(PROCESSOR_2064_Z900)

View file

@ -94,7 +94,6 @@ along with GCC; see the file COPYING3. If not see
#undef ASM_SPEC
#define ASM_SPEC \
"%{m31&m64}%{mesa&mzarch}%{march=z*}" \
"%{march=arch3:-march=g5}" \
"%{march=arch5:-march=z900}" \
"%{march=arch6:-march=z990}" \
"%{march=arch7:-march=z9-ec}" \

View file

@ -24857,8 +24857,7 @@ system representing a certain processor type. Possible values for
@samp{z196}/@samp{arch9}, @samp{zEC12}, @samp{z13}/@samp{arch11}, and
@samp{native}.
The default is @option{-march=z900}. @samp{g5}/@samp{arch3} and
@samp{g6} are deprecated and will be removed with future releases.
The default is @option{-march=z900}.
Specifying @samp{native} as cpu type can be used to select the best
architecture option for the host processor.

View file

@ -1,3 +1,10 @@
2018-08-08 Ilya Leoshkevich <iii@linux.ibm.com>
* gcc.target/s390/hotpatch-8.c: Remove.
* gcc.target/s390/hotpatch-9.c: Remove.
* gcc.target/s390/mnop-mcount-m31-fpic.c: Remove.
* gcc.target/s390/mnop-mcount-m31.c: Remove.
2018-08-08 Jakub Jelinek <jakub@redhat.com>
P0595R1 - is_constant_evaluated

View file

@ -1,20 +0,0 @@
/* Functional tests for the function hotpatching feature. */
/* { dg-do compile { target { ! lp64 } } } */
/* { dg-options "-mesa -march=g5 -Wno-deprecated -mhotpatch=0,3" } */
/* { dg-skip-if "" { *-*-* } { "*" } { "-O*" } } */
#include <stdio.h>
void hp1(void)
{
printf("hello, world!\n");
}
/* Check number of occurences of certain instructions. */
/* { dg-final { scan-assembler-not "pre-label NOPs" } } */
/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(3 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */
/* { dg-final { scan-assembler-times "nopr\t%r0" 1 } } */
/* { dg-final { scan-assembler-times "nop\t0" 1 } } */
/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
/* { dg-final { scan-assembler-not "alignment for hotpatch" } } */

View file

@ -1,19 +0,0 @@
/* Functional tests for the function hotpatching feature. */
/* { dg-do compile { target { ! lp64 } } } */
/* { dg-options "-mesa -march=g5 -Wno-deprecated -mhotpatch=0,4" } */
/* { dg-skip-if "" { *-*-* } { "*" } { "-O*" } } */
#include <stdio.h>
void hp1(void)
{
printf("hello, world!\n");
}
/* Check number of occurences of certain instructions. */
/* { dg-final { scan-assembler-not "pre-label NOPs" } } */
/* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(4 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nop\t0" } } */
/* { dg-final { scan-assembler-not "nopr\t%r0" } } */
/* { dg-final { scan-assembler-times "nop\t0" 2 } } */
/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */

View file

@ -1,8 +0,0 @@
/* { dg-do compile } */
/* { dg-options "-m31 -mesa -march=g5 -fPIC -pg -mnop-mcount -Wno-deprecated" } */
void
profileme (void)
{
/* { dg-final { scan-assembler "NOPs for -mnop-mcount \\(16 halfwords\\)\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0" } } */
}

View file

@ -1,8 +0,0 @@
/* { dg-do compile } */
/* { dg-options "-m31 -mesa -march=g5 -pg -mnop-mcount -Wno-deprecated" } */
void
profileme (void)
{
/* { dg-final { scan-assembler "NOPs for -mnop-mcount \\(15 halfwords\\)\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bc\t0,0\n.*bcr\t0,0" } } */
}