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>
PR rtl-optimization/87763
......
......@@ -119,6 +119,10 @@ s390_host_detect_local_cpu (int argc, const char **argv)
case 0x3907:
cpu = "z14";
break;
case 0x8561:
case 0x8562:
cpu = "arch13";
break;
default:
cpu = "arch13";
break;
......
......@@ -37,7 +37,7 @@ enum processor_type
PROCESSOR_2827_ZEC12,
PROCESSOR_2964_Z13,
PROCESSOR_3906_Z14,
PROCESSOR_ARCH13,
PROCESSOR_8561_ARCH13,
PROCESSOR_NATIVE,
PROCESSOR_max
};
......
......@@ -337,7 +337,7 @@ const struct s390_processor processor_table[] =
{ "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost, 10 },
{ "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost, 11 },
{ "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 }
};
......@@ -14419,7 +14419,6 @@ s390_get_sched_attrmask (rtx_insn *insn)
mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
break;
case PROCESSOR_3906_Z14:
case PROCESSOR_ARCH13:
if (get_attr_z14_cracked (insn))
mask |= S390_SCHED_ATTR_MASK_CRACKED;
if (get_attr_z14_expanded (insn))
......@@ -14431,6 +14430,18 @@ s390_get_sched_attrmask (rtx_insn *insn)
if (get_attr_z14_groupoftwo (insn))
mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
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:
gcc_unreachable ();
}
......@@ -14456,7 +14467,6 @@ s390_get_unit_mask (rtx_insn *insn, int *units)
mask |= 1 << 3;
break;
case PROCESSOR_3906_Z14:
case PROCESSOR_ARCH13:
*units = 4;
if (get_attr_z14_unit_lsu (insn))
mask |= 1 << 0;
......@@ -14467,6 +14477,17 @@ s390_get_unit_mask (rtx_insn *insn, int *units)
if (get_attr_z14_unit_vfu (insn))
mask |= 1 << 3;
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:
gcc_unreachable ();
}
......@@ -14479,7 +14500,8 @@ s390_is_fpd (rtx_insn *insn)
if (insn == NULL_RTX)
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
......@@ -14488,7 +14510,8 @@ s390_is_fxd (rtx_insn *insn)
if (insn == NULL_RTX)
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. */
......
......@@ -46,7 +46,7 @@ enum processor_flags
/* This is necessary to avoid a warning about comparing different enum
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
providing the respective hardware facility regardless of the
......
......@@ -513,7 +513,7 @@
;; Processor type. This attribute must exactly match the processor_type
;; 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")))
(define_attr "cpu_facility"
......@@ -613,6 +613,9 @@
;; Pipeline description for z14
(include "3906.md")
;; Pipeline description for arch13
(include "8561.md")
;; Predicates
(include "predicates.md")
......
......@@ -110,7 +110,7 @@ EnumValue
Enum(processor_type) String(arch12) Value(PROCESSOR_3906_Z14)
EnumValue
Enum(processor_type) String(arch13) Value(PROCESSOR_ARCH13)
Enum(processor_type) String(arch13) Value(PROCESSOR_8561_ARCH13)
EnumValue
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