Commit f137aa63 by Andreas Krebbel Committed by Andreas Krebbel

2084.md: Enable all insn reservations also for z9_ec cpu attribute value.

2011-03-23  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/2084.md: Enable all insn reservations also for z9_ec
	cpu attribute value.
	* config/s390/s390-opts.h (enum s390_arch_option): Remove.
	(enum processor_type): Add PROCESSOR_2094_Z9_EC.
	* config/s390/s390.c (processor_flags_table): New constant array.
	(s390_handle_arch_option): Remove.
	(s390_handle_option): Remove s390_handle_arch_option invocations
	and OPT_mwarn_framesize_ handling.
	(s390_option_override): Remove s390_handle_arch_option invocation.
	(s390_emit_prologue): Remove use of HOST_WIDE_INT_PRINT_DEC in
	warnings.
	* config/s390/s390.md (cpu attribute): Add z9_ec value.
	* config/s390/s390.opt (s390_tune, s390_arch)
	(march=): Replace s390_arch_option enum and values with
	processor_type.  Set variable name to s390_arch.  Set
	initialization value.
	(mtune=): Replace s390_arch_option with processor_type.  Set
	variable name to s390_tune.  Set initialization value.

From-SVN: r171350
parent 8d985ccd
2011-03-23 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/s390/2084.md: Enable all insn reservations also for z9_ec
cpu attribute value.
* config/s390/s390-opts.h (enum s390_arch_option): Remove.
(enum processor_type): Add PROCESSOR_2094_Z9_EC.
* config/s390/s390.c (processor_flags_table): New constant array.
(s390_handle_arch_option): Remove.
(s390_handle_option): Remove s390_handle_arch_option invocations
and OPT_mwarn_framesize_ handling.
(s390_option_override): Remove s390_handle_arch_option invocation.
(s390_emit_prologue): Remove use of HOST_WIDE_INT_PRINT_DEC in
warnings.
* config/s390/s390.md (cpu attribute): Add z9_ec value.
* config/s390/s390.opt (s390_tune, s390_arch)
(march=): Replace s390_arch_option enum and values with
processor_type. Set variable name to s390_arch. Set
initialization value.
(mtune=): Replace s390_arch_option with processor_type. Set
variable name to s390_tune. Set initialization value.
2011-03-23 Julian Brown <julian@codesourcery.com> 2011-03-23 Julian Brown <julian@codesourcery.com>
* expr.c (expand_expr_real_1): Only use BLKmode for volatile * expr.c (expand_expr_real_1): Only use BLKmode for volatile
......
...@@ -62,69 +62,69 @@ ...@@ -62,69 +62,69 @@
;; ;;
(define_insn_reservation "x_int" 1 (define_insn_reservation "x_int" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(and (eq_attr "type" "integer") (and (eq_attr "type" "integer")
(eq_attr "atype" "reg"))) (eq_attr "atype" "reg")))
"x-e1-st,x-wr-st") "x-e1-st,x-wr-st")
(define_insn_reservation "x_agen" 1 (define_insn_reservation "x_agen" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(and (eq_attr "type" "integer") (and (eq_attr "type" "integer")
(eq_attr "atype" "agen"))) (eq_attr "atype" "agen")))
"x-e1-st,x-wr-st") "x-e1-st,x-wr-st")
(define_insn_reservation "x_lr" 1 (define_insn_reservation "x_lr" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "lr")) (eq_attr "type" "lr"))
"x-e1-st,x-wr-st") "x-e1-st,x-wr-st")
(define_insn_reservation "x_la" 1 (define_insn_reservation "x_la" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "la")) (eq_attr "type" "la"))
"x-e1-st,x-wr-st") "x-e1-st,x-wr-st")
(define_insn_reservation "x_larl" 1 (define_insn_reservation "x_larl" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "larl")) (eq_attr "type" "larl"))
"x-e1-st,x-wr-st") "x-e1-st,x-wr-st")
(define_insn_reservation "x_load" 1 (define_insn_reservation "x_load" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "load")) (eq_attr "type" "load"))
"x-e1-st+x-mem,x-wr-st") "x-e1-st+x-mem,x-wr-st")
(define_insn_reservation "x_store" 1 (define_insn_reservation "x_store" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "store")) (eq_attr "type" "store"))
"x-e1-st+x_store_tok,x-wr-st") "x-e1-st+x_store_tok,x-wr-st")
(define_insn_reservation "x_branch" 1 (define_insn_reservation "x_branch" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "branch")) (eq_attr "type" "branch"))
"x_e1_r,x_wr_r") "x_e1_r,x_wr_r")
(define_insn_reservation "x_call" 5 (define_insn_reservation "x_call" 5
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "jsr")) (eq_attr "type" "jsr"))
"x-e1-np*5,x-wr-np") "x-e1-np*5,x-wr-np")
(define_insn_reservation "x_mul_hi" 2 (define_insn_reservation "x_mul_hi" 2
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "imulhi")) (eq_attr "type" "imulhi"))
"x-e1-np*2,x-wr-np") "x-e1-np*2,x-wr-np")
(define_insn_reservation "x_mul_sidi" 4 (define_insn_reservation "x_mul_sidi" 4
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "imulsi,imuldi")) (eq_attr "type" "imulsi,imuldi"))
"x-e1-np*4,x-wr-np") "x-e1-np*4,x-wr-np")
(define_insn_reservation "x_div" 10 (define_insn_reservation "x_div" 10
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "idiv")) (eq_attr "type" "idiv"))
"x-e1-np*10,x-wr-np") "x-e1-np*10,x-wr-np")
(define_insn_reservation "x_sem" 17 (define_insn_reservation "x_sem" 17
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "sem")) (eq_attr "type" "sem"))
"x-e1-np+x-mem,x-e1-np*16,x-wr-st") "x-e1-np+x-mem,x-e1-np*16,x-wr-st")
...@@ -133,27 +133,27 @@ ...@@ -133,27 +133,27 @@
;; ;;
(define_insn_reservation "x_cs" 1 (define_insn_reservation "x_cs" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "cs")) (eq_attr "type" "cs"))
"x-e1-np,x-wr-np") "x-e1-np,x-wr-np")
(define_insn_reservation "x_vs" 1 (define_insn_reservation "x_vs" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "vs")) (eq_attr "type" "vs"))
"x-e1-np*10,x-wr-np") "x-e1-np*10,x-wr-np")
(define_insn_reservation "x_stm" 1 (define_insn_reservation "x_stm" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "stm")) (eq_attr "type" "stm"))
"(x-e1-np+x_store_tok)*10,x-wr-np") "(x-e1-np+x_store_tok)*10,x-wr-np")
(define_insn_reservation "x_lm" 1 (define_insn_reservation "x_lm" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "lm")) (eq_attr "type" "lm"))
"x-e1-np*10,x-wr-np") "x-e1-np*10,x-wr-np")
(define_insn_reservation "x_other" 1 (define_insn_reservation "x_other" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "other")) (eq_attr "type" "other"))
"x-e1-np,x-wr-np") "x-e1-np,x-wr-np")
...@@ -162,88 +162,88 @@ ...@@ -162,88 +162,88 @@
;; ;;
(define_insn_reservation "x_fsimptf" 7 (define_insn_reservation "x_fsimptf" 7
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "fsimptf,fhex")) (eq_attr "type" "fsimptf,fhex"))
"x_e1_t*2,x-wr-fp") "x_e1_t*2,x-wr-fp")
(define_insn_reservation "x_fsimpdf" 6 (define_insn_reservation "x_fsimpdf" 6
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "fsimpdf,fmuldf,fmadddf,fhex")) (eq_attr "type" "fsimpdf,fmuldf,fmadddf,fhex"))
"x_e1_t,x-wr-fp") "x_e1_t,x-wr-fp")
(define_insn_reservation "x_fsimpsf" 6 (define_insn_reservation "x_fsimpsf" 6
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "fsimpsf,fmulsf,fmaddsf,fhex")) (eq_attr "type" "fsimpsf,fmulsf,fmaddsf,fhex"))
"x_e1_t,x-wr-fp") "x_e1_t,x-wr-fp")
(define_insn_reservation "x_fmultf" 33 (define_insn_reservation "x_fmultf" 33
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "fmultf")) (eq_attr "type" "fmultf"))
"x_e1_t*27,x-wr-fp") "x_e1_t*27,x-wr-fp")
(define_insn_reservation "x_fdivtf" 82 (define_insn_reservation "x_fdivtf" 82
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "fdivtf,fsqrttf")) (eq_attr "type" "fdivtf,fsqrttf"))
"x_e1_t*76,x-wr-fp") "x_e1_t*76,x-wr-fp")
(define_insn_reservation "x_fdivdf" 36 (define_insn_reservation "x_fdivdf" 36
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "fdivdf,fsqrtdf")) (eq_attr "type" "fdivdf,fsqrtdf"))
"x_e1_t*30,x-wr-fp") "x_e1_t*30,x-wr-fp")
(define_insn_reservation "x_fdivsf" 36 (define_insn_reservation "x_fdivsf" 36
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "fdivsf,fsqrtsf")) (eq_attr "type" "fdivsf,fsqrtsf"))
"x_e1_t*30,x-wr-fp") "x_e1_t*30,x-wr-fp")
(define_insn_reservation "x_floadtf" 6 (define_insn_reservation "x_floadtf" 6
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "floadtf")) (eq_attr "type" "floadtf"))
"x_e1_t,x-wr-fp") "x_e1_t,x-wr-fp")
(define_insn_reservation "x_floaddf" 6 (define_insn_reservation "x_floaddf" 6
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "floaddf")) (eq_attr "type" "floaddf"))
"x_e1_t,x-wr-fp") "x_e1_t,x-wr-fp")
(define_insn_reservation "x_floadsf" 6 (define_insn_reservation "x_floadsf" 6
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "floadsf")) (eq_attr "type" "floadsf"))
"x_e1_t,x-wr-fp") "x_e1_t,x-wr-fp")
(define_insn_reservation "x_fstoredf" 1 (define_insn_reservation "x_fstoredf" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "fstoredf")) (eq_attr "type" "fstoredf"))
"x_e1_t,x-wr-fp") "x_e1_t,x-wr-fp")
(define_insn_reservation "x_fstoresf" 1 (define_insn_reservation "x_fstoresf" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "fstoresf")) (eq_attr "type" "fstoresf"))
"x_e1_t,x-wr-fp") "x_e1_t,x-wr-fp")
(define_insn_reservation "x_ftrunctf" 16 (define_insn_reservation "x_ftrunctf" 16
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "ftrunctf")) (eq_attr "type" "ftrunctf"))
"x_e1_t*10,x-wr-fp") "x_e1_t*10,x-wr-fp")
(define_insn_reservation "x_ftruncdf" 11 (define_insn_reservation "x_ftruncdf" 11
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "ftruncdf")) (eq_attr "type" "ftruncdf"))
"x_e1_t*5,x-wr-fp") "x_e1_t*5,x-wr-fp")
(define_insn_reservation "x_ftoi" 1 (define_insn_reservation "x_ftoi" 1
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "ftoi")) (eq_attr "type" "ftoi"))
"x_e1_t*3,x-wr-fp") "x_e1_t*3,x-wr-fp")
(define_insn_reservation "x_itof" 7 (define_insn_reservation "x_itof" 7
(and (eq_attr "cpu" "z990,z9_109") (and (eq_attr "cpu" "z990,z9_109,z9_ec")
(eq_attr "type" "itoftf,itofdf,itofsf")) (eq_attr "type" "itoftf,itofdf,itofsf"))
"x_e1_t*3,x-wr-fp") "x_e1_t*3,x-wr-fp")
......
...@@ -32,26 +32,10 @@ enum processor_type ...@@ -32,26 +32,10 @@ enum processor_type
PROCESSOR_2064_Z900, PROCESSOR_2064_Z900,
PROCESSOR_2084_Z990, PROCESSOR_2084_Z990,
PROCESSOR_2094_Z9_109, PROCESSOR_2094_Z9_109,
PROCESSOR_2094_Z9_EC,
PROCESSOR_2097_Z10, PROCESSOR_2097_Z10,
PROCESSOR_2817_Z196, PROCESSOR_2817_Z196,
PROCESSOR_max PROCESSOR_max
}; };
/* This enumeration must match processor_alias_table in
s390_handle_arch_option. It is different from enum processor_type
because some processors differ for option handling but not for
scheduling. */
enum s390_arch_option
{
s390_arch_g5,
s390_arch_g6,
s390_arch_z900,
s390_arch_z990,
s390_arch_z9_109,
s390_arch_z9_ec,
s390_arch_z10,
s390_arch_z196
};
#endif #endif
...@@ -55,6 +55,21 @@ along with GCC; see the file COPYING3. If not see ...@@ -55,6 +55,21 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h" #include "cfgloop.h"
#include "opts.h" #include "opts.h"
static 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
| PF_EXTIMM,
/* z9-ec */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
| PF_EXTIMM | PF_DFP,
/* z10 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
| PF_EXTIMM | PF_DFP | PF_Z10,
/* z196 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
| PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196
};
/* Define the specific costs for a given cpu. */ /* Define the specific costs for a given cpu. */
...@@ -1530,47 +1545,12 @@ s390_option_init_struct (struct gcc_options *opts) ...@@ -1530,47 +1545,12 @@ s390_option_init_struct (struct gcc_options *opts)
opts->x_flag_asynchronous_unwind_tables = 1; opts->x_flag_asynchronous_unwind_tables = 1;
} }
/* Set *TYPE and *FLAGS to the associated processor_type and
processor_flags for processor ARCH. */
static void
s390_handle_arch_option (enum s390_arch_option arch,
enum processor_type *type,
int *flags)
{
/* This must match enum s390_arch_option in s390-opts.h. */
static struct pta
{
const enum processor_type processor;
const int flags; /* From enum processor_flags. */
}
const processor_alias_table[] =
{
{PROCESSOR_9672_G5, PF_IEEE_FLOAT},
{PROCESSOR_9672_G6, PF_IEEE_FLOAT},
{PROCESSOR_2064_Z900, PF_IEEE_FLOAT | PF_ZARCH},
{PROCESSOR_2084_Z990, PF_IEEE_FLOAT | PF_ZARCH
| PF_LONG_DISPLACEMENT},
{PROCESSOR_2094_Z9_109, PF_IEEE_FLOAT | PF_ZARCH
| PF_LONG_DISPLACEMENT | PF_EXTIMM},
{PROCESSOR_2094_Z9_109, PF_IEEE_FLOAT | PF_ZARCH
| PF_LONG_DISPLACEMENT | PF_EXTIMM | PF_DFP },
{PROCESSOR_2097_Z10, PF_IEEE_FLOAT | PF_ZARCH
| PF_LONG_DISPLACEMENT | PF_EXTIMM | PF_DFP | PF_Z10},
{PROCESSOR_2817_Z196, PF_IEEE_FLOAT | PF_ZARCH
| PF_LONG_DISPLACEMENT | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 },
};
*type = processor_alias_table[(int) arch].processor;
*flags = processor_alias_table[(int) arch].flags;
}
/* Implement TARGET_HANDLE_OPTION. */ /* Implement TARGET_HANDLE_OPTION. */
static bool static bool
s390_handle_option (struct gcc_options *opts, s390_handle_option (struct gcc_options *opts,
struct gcc_options *opts_set ATTRIBUTE_UNUSED, struct gcc_options *opts_set ATTRIBUTE_UNUSED,
const struct cl_decoded_option *decoded, const struct cl_decoded_option *decoded,
location_t loc) location_t loc)
{ {
size_t code = decoded->opt_index; size_t code = decoded->opt_index;
...@@ -1580,9 +1560,7 @@ s390_handle_option (struct gcc_options *opts, ...@@ -1580,9 +1560,7 @@ s390_handle_option (struct gcc_options *opts,
switch (code) switch (code)
{ {
case OPT_march_: case OPT_march_:
s390_handle_arch_option ((enum s390_arch_option) value, opts->x_s390_arch_flags = processor_flags_table[value];
&opts->x_s390_arch,
&opts->x_s390_arch_flags);
opts->x_s390_arch_string = arg; opts->x_s390_arch_string = arg;
return true; return true;
...@@ -1597,9 +1575,7 @@ s390_handle_option (struct gcc_options *opts, ...@@ -1597,9 +1575,7 @@ s390_handle_option (struct gcc_options *opts,
return true; return true;
case OPT_mtune_: case OPT_mtune_:
s390_handle_arch_option ((enum s390_arch_option) value, opts->x_s390_tune_flags = processor_flags_table[value];
&opts->x_s390_tune,
&opts->x_s390_tune_flags);
return true; return true;
case OPT_mwarn_framesize_: case OPT_mwarn_framesize_:
...@@ -1626,20 +1602,15 @@ s390_option_override (void) ...@@ -1626,20 +1602,15 @@ s390_option_override (void)
target_flags &= ~MASK_ZARCH; target_flags &= ~MASK_ZARCH;
} }
/* Determine processor architectural level. */ /* Set the march default in case it hasn't been specified on
if (!s390_arch_string) cmdline. */
if (s390_arch == PROCESSOR_max)
{ {
s390_arch_string = TARGET_ZARCH? "z900" : "g5"; s390_arch_string = TARGET_ZARCH? "z900" : "g5";
s390_handle_arch_option ((TARGET_ZARCH ? s390_arch_z900 : s390_arch_g5), s390_arch = TARGET_ZARCH ? PROCESSOR_2064_Z900 : PROCESSOR_9672_G5;
&s390_arch, &s390_arch_flags); s390_arch_flags = processor_flags_table[(int)s390_arch];
} }
/* This check is triggered when the user specified a wrong -march=
string and prevents subsequent error messages from being
issued. */
if (s390_arch == PROCESSOR_max)
return;
/* Determine processor to tune for. */ /* Determine processor to tune for. */
if (s390_tune == PROCESSOR_max) if (s390_tune == PROCESSOR_max)
{ {
...@@ -8160,8 +8131,7 @@ s390_emit_prologue (void) ...@@ -8160,8 +8131,7 @@ s390_emit_prologue (void)
not match the test under mask pattern. */ not match the test under mask pattern. */
if (stack_guard >= s390_stack_size) if (stack_guard >= s390_stack_size)
{ {
warning (0, "frame size of function %qs is " warning (0, "frame size of function %qs is %wd"
HOST_WIDE_INT_PRINT_DEC
" bytes which is more than half the stack size. " " bytes which is more than half the stack size. "
"The dynamic check would not be reliable. " "The dynamic check would not be reliable. "
"No check emitted for this function.", "No check emitted for this function.",
...@@ -8189,7 +8159,7 @@ s390_emit_prologue (void) ...@@ -8189,7 +8159,7 @@ s390_emit_prologue (void)
if (s390_warn_framesize > 0 if (s390_warn_framesize > 0
&& cfun_frame_layout.frame_size >= s390_warn_framesize) && cfun_frame_layout.frame_size >= s390_warn_framesize)
warning (0, "frame size of %qs is " HOST_WIDE_INT_PRINT_DEC " bytes", warning (0, "frame size of %qs is %wd bytes",
current_function_name (), cfun_frame_layout.frame_size); current_function_name (), cfun_frame_layout.frame_size);
if (s390_warn_dynamicstack_p && cfun->calls_alloca) if (s390_warn_dynamicstack_p && cfun->calls_alloca)
......
...@@ -272,7 +272,7 @@ ...@@ -272,7 +272,7 @@
;; distinguish between g5 and g6, but there are differences between the two ;; distinguish between g5 and g6, but there are differences between the two
;; CPUs could in theory be modeled. ;; CPUs could in theory be modeled.
(define_attr "cpu" "g5,g6,z900,z990,z9_109,z10,z196" (define_attr "cpu" "g5,g6,z900,z990,z9_109,z9_ec,z10,z196"
(const (symbol_ref "s390_tune_attr"))) (const (symbol_ref "s390_tune_attr")))
(define_attr "cpu_facility" "standard,ieee,zarch,longdisp,extimm,dfp,z10,z196" (define_attr "cpu_facility" "standard,ieee,zarch,longdisp,extimm,dfp,z10,z196"
......
...@@ -25,17 +25,9 @@ config/s390/s390-opts.h ...@@ -25,17 +25,9 @@ config/s390/s390-opts.h
Variable Variable
const char *s390_arch_string const char *s390_arch_string
; Which cpu are we tuning for.
Variable
enum processor_type s390_tune = PROCESSOR_max
Variable Variable
int s390_tune_flags int s390_tune_flags
; Which instruction set architecture to use.
Variable
enum processor_type s390_arch
Variable Variable
int s390_arch_flags int s390_arch_flags
...@@ -51,35 +43,35 @@ Target Report RejectNegative Negative(m31) Mask(64BIT) ...@@ -51,35 +43,35 @@ Target Report RejectNegative Negative(m31) Mask(64BIT)
64 bit ABI 64 bit ABI
march= march=
Target RejectNegative Joined Enum(s390_arch_option) Target RejectNegative Joined Enum(processor_type) Var(s390_arch) Init(PROCESSOR_max)
Generate code for given CPU Generate code for given CPU
Enum Enum
Name(s390_arch_option) Type(enum s390_arch_option) Name(processor_type) Type(enum processor_type)
EnumValue EnumValue
Enum(s390_arch_option) String(g5) Value(s390_arch_g5) Enum(processor_type) String(g5) Value(PROCESSOR_9672_G5)
EnumValue EnumValue
Enum(s390_arch_option) String(g6) Value(s390_arch_g6) Enum(processor_type) String(g6) Value(PROCESSOR_9672_G6)
EnumValue EnumValue
Enum(s390_arch_option) String(z900) Value(s390_arch_z900) Enum(processor_type) String(z900) Value(PROCESSOR_2064_Z900)
EnumValue EnumValue
Enum(s390_arch_option) String(z990) Value(s390_arch_z990) Enum(processor_type) String(z990) Value(PROCESSOR_2084_Z990)
EnumValue EnumValue
Enum(s390_arch_option) String(z9-109) Value(s390_arch_z9_109) Enum(processor_type) String(z9-109) Value(PROCESSOR_2094_Z9_109)
EnumValue EnumValue
Enum(s390_arch_option) String(z9-ec) Value(s390_arch_z9_ec) Enum(processor_type) String(z9-ec) Value(PROCESSOR_2094_Z9_EC)
EnumValue EnumValue
Enum(s390_arch_option) String(z10) Value(s390_arch_z10) Enum(processor_type) String(z10) Value(PROCESSOR_2097_Z10)
EnumValue EnumValue
Enum(s390_arch_option) String(z196) Value(s390_arch_z196) Enum(processor_type) String(z196) Value(PROCESSOR_2817_Z196)
mbackchain mbackchain
Target Report Mask(BACKCHAIN) Target Report Mask(BACKCHAIN)
...@@ -130,7 +122,7 @@ Target RejectNegative Joined UInteger Var(s390_stack_size) ...@@ -130,7 +122,7 @@ Target RejectNegative Joined UInteger Var(s390_stack_size)
Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit
mtune= mtune=
Target RejectNegative Joined Enum(s390_arch_option) Target RejectNegative Joined Enum(processor_type) Var(s390_tune) Init(PROCESSOR_max)
Schedule code for given CPU Schedule code for given CPU
mmvcle mmvcle
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment