Commit 375a6bc6 by Robin Dapp Committed by Robin Dapp

S/390: Add arch13 pipeline and model number

This patch adds the pipeline description and the CPU model number for
arch13.

From-SVN: r270272
parent c15ec5df
2019-04-11 Robin Dapp <rdapp@linux.ibm.com>
* config/s390/8561.md: New file.
* config/s390/driver-native.c (s390_host_detect_local_cpu):
Add arch13 cpu model.
* config/s390/s390-opts.h (enum processor_type): Likewise.
* config/s390/s390.c (s390_get_sched_attrmask): Add arch13.
(s390_get_unit_mask): Likewise.
(s390_is_fpd): Likewise.
(s390_is_fxd): Likewise.
* config/s390/s390.h (s390_tune_attr): Likewise.
* config/s390/s390.md: Include arch13 pipeline description.
* config/s390/s390.opt: Add arch13.
2018-04-10 Steve Ellcey <sellcey@marvell.com> 2018-04-10 Steve Ellcey <sellcey@marvell.com>
PR rtl-optimization/87763 PR rtl-optimization/87763
......
...@@ -119,6 +119,10 @@ s390_host_detect_local_cpu (int argc, const char **argv) ...@@ -119,6 +119,10 @@ s390_host_detect_local_cpu (int argc, const char **argv)
case 0x3907: case 0x3907:
cpu = "z14"; cpu = "z14";
break; break;
case 0x8561:
case 0x8562:
cpu = "arch13";
break;
default: default:
cpu = "arch13"; cpu = "arch13";
break; break;
......
...@@ -37,7 +37,7 @@ enum processor_type ...@@ -37,7 +37,7 @@ enum processor_type
PROCESSOR_2827_ZEC12, PROCESSOR_2827_ZEC12,
PROCESSOR_2964_Z13, PROCESSOR_2964_Z13,
PROCESSOR_3906_Z14, PROCESSOR_3906_Z14,
PROCESSOR_ARCH13, PROCESSOR_8561_ARCH13,
PROCESSOR_NATIVE, PROCESSOR_NATIVE,
PROCESSOR_max PROCESSOR_max
}; };
......
...@@ -337,7 +337,7 @@ const struct s390_processor processor_table[] = ...@@ -337,7 +337,7 @@ const struct s390_processor processor_table[] =
{ "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost, 10 }, { "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost, 10 },
{ "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost, 11 }, { "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost, 11 },
{ "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost, 12 }, { "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost, 12 },
{ "arch13", "", PROCESSOR_ARCH13, &zEC12_cost, 13 }, { "arch13", "", PROCESSOR_8561_ARCH13, &zEC12_cost, 13 },
{ "native", "", PROCESSOR_NATIVE, NULL, 0 } { "native", "", PROCESSOR_NATIVE, NULL, 0 }
}; };
...@@ -14419,7 +14419,6 @@ s390_get_sched_attrmask (rtx_insn *insn) ...@@ -14419,7 +14419,6 @@ s390_get_sched_attrmask (rtx_insn *insn)
mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO; mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
break; break;
case PROCESSOR_3906_Z14: case PROCESSOR_3906_Z14:
case PROCESSOR_ARCH13:
if (get_attr_z14_cracked (insn)) if (get_attr_z14_cracked (insn))
mask |= S390_SCHED_ATTR_MASK_CRACKED; mask |= S390_SCHED_ATTR_MASK_CRACKED;
if (get_attr_z14_expanded (insn)) if (get_attr_z14_expanded (insn))
...@@ -14431,6 +14430,18 @@ s390_get_sched_attrmask (rtx_insn *insn) ...@@ -14431,6 +14430,18 @@ s390_get_sched_attrmask (rtx_insn *insn)
if (get_attr_z14_groupoftwo (insn)) if (get_attr_z14_groupoftwo (insn))
mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO; mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
break; break;
case PROCESSOR_8561_ARCH13:
if (get_attr_arch13_cracked (insn))
mask |= S390_SCHED_ATTR_MASK_CRACKED;
if (get_attr_arch13_expanded (insn))
mask |= S390_SCHED_ATTR_MASK_EXPANDED;
if (get_attr_arch13_endgroup (insn))
mask |= S390_SCHED_ATTR_MASK_ENDGROUP;
if (get_attr_arch13_groupalone (insn))
mask |= S390_SCHED_ATTR_MASK_GROUPALONE;
if (get_attr_arch13_groupoftwo (insn))
mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
break;
default: default:
gcc_unreachable (); gcc_unreachable ();
} }
...@@ -14456,7 +14467,6 @@ s390_get_unit_mask (rtx_insn *insn, int *units) ...@@ -14456,7 +14467,6 @@ s390_get_unit_mask (rtx_insn *insn, int *units)
mask |= 1 << 3; mask |= 1 << 3;
break; break;
case PROCESSOR_3906_Z14: case PROCESSOR_3906_Z14:
case PROCESSOR_ARCH13:
*units = 4; *units = 4;
if (get_attr_z14_unit_lsu (insn)) if (get_attr_z14_unit_lsu (insn))
mask |= 1 << 0; mask |= 1 << 0;
...@@ -14467,6 +14477,17 @@ s390_get_unit_mask (rtx_insn *insn, int *units) ...@@ -14467,6 +14477,17 @@ s390_get_unit_mask (rtx_insn *insn, int *units)
if (get_attr_z14_unit_vfu (insn)) if (get_attr_z14_unit_vfu (insn))
mask |= 1 << 3; mask |= 1 << 3;
break; break;
case PROCESSOR_8561_ARCH13:
*units = 4;
if (get_attr_arch13_unit_lsu (insn))
mask |= 1 << 0;
if (get_attr_arch13_unit_fxa (insn))
mask |= 1 << 1;
if (get_attr_arch13_unit_fxb (insn))
mask |= 1 << 2;
if (get_attr_arch13_unit_vfu (insn))
mask |= 1 << 3;
break;
default: default:
gcc_unreachable (); gcc_unreachable ();
} }
...@@ -14479,7 +14500,8 @@ s390_is_fpd (rtx_insn *insn) ...@@ -14479,7 +14500,8 @@ s390_is_fpd (rtx_insn *insn)
if (insn == NULL_RTX) if (insn == NULL_RTX)
return false; return false;
return get_attr_z13_unit_fpd (insn) || get_attr_z14_unit_fpd (insn); return get_attr_z13_unit_fpd (insn) || get_attr_z14_unit_fpd (insn)
|| get_attr_arch13_unit_fpd (insn);
} }
static bool static bool
...@@ -14488,7 +14510,8 @@ s390_is_fxd (rtx_insn *insn) ...@@ -14488,7 +14510,8 @@ s390_is_fxd (rtx_insn *insn)
if (insn == NULL_RTX) if (insn == NULL_RTX)
return false; return false;
return get_attr_z13_unit_fxd (insn) || get_attr_z14_unit_fxd (insn); return get_attr_z13_unit_fxd (insn) || get_attr_z14_unit_fxd (insn)
|| get_attr_arch13_unit_fxd (insn);
} }
/* Returns TRUE if INSN is a long-running instruction. */ /* Returns TRUE if INSN is a long-running instruction. */
......
...@@ -46,7 +46,7 @@ enum processor_flags ...@@ -46,7 +46,7 @@ enum processor_flags
/* This is necessary to avoid a warning about comparing different enum /* This is necessary to avoid a warning about comparing different enum
types. */ types. */
#define s390_tune_attr ((enum attr_cpu)(s390_tune > PROCESSOR_3906_Z14 ? PROCESSOR_3906_Z14 : s390_tune )) #define s390_tune_attr ((enum attr_cpu)(s390_tune > PROCESSOR_8561_ARCH13 ? PROCESSOR_8561_ARCH13 : s390_tune ))
/* These flags indicate that the generated code should run on a cpu /* These flags indicate that the generated code should run on a cpu
providing the respective hardware facility regardless of the providing the respective hardware facility regardless of the
......
...@@ -513,7 +513,7 @@ ...@@ -513,7 +513,7 @@
;; Processor type. This attribute must exactly match the processor_type ;; Processor type. This attribute must exactly match the processor_type
;; enumeration in s390.h. ;; enumeration in s390.h.
(define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14" (define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,arch13"
(const (symbol_ref "s390_tune_attr"))) (const (symbol_ref "s390_tune_attr")))
(define_attr "cpu_facility" (define_attr "cpu_facility"
...@@ -613,6 +613,9 @@ ...@@ -613,6 +613,9 @@
;; Pipeline description for z14 ;; Pipeline description for z14
(include "3906.md") (include "3906.md")
;; Pipeline description for arch13
(include "8561.md")
;; Predicates ;; Predicates
(include "predicates.md") (include "predicates.md")
......
...@@ -110,7 +110,7 @@ EnumValue ...@@ -110,7 +110,7 @@ EnumValue
Enum(processor_type) String(arch12) Value(PROCESSOR_3906_Z14) Enum(processor_type) String(arch12) Value(PROCESSOR_3906_Z14)
EnumValue EnumValue
Enum(processor_type) String(arch13) Value(PROCESSOR_ARCH13) Enum(processor_type) String(arch13) Value(PROCESSOR_8561_ARCH13)
EnumValue EnumValue
Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly
......
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