s390: Add scheduler description for z16.

This patch adds the scheduler description for the z16 machine.

gcc/ChangeLog:

	* config/s390/s390.cc (s390_get_sched_attrmask): Add z16.
	(s390_get_unit_mask): Likewise.
	(s390_is_fpd): Likewise.
	(s390_is_fxd): Likewise.
	* config/s390/s390.h (s390_tune_attr): Set max tune level to z16.
	* config/s390/s390.md (z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15):
	Add z16.
	(z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15,z16):
	Likewise.
	* config/s390/3931.md: New file.
This commit is contained in:
Robin Dapp 2022-04-12 18:05:34 +02:00
parent 41a72a744a
commit db4ce4a3d7
4 changed files with 2592 additions and 6 deletions

2562
gcc/config/s390/3931.md Normal file

File diff suppressed because it is too large Load diff

View file

@ -14873,7 +14873,6 @@ s390_get_sched_attrmask (rtx_insn *insn)
mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
break;
case PROCESSOR_8561_Z15:
case PROCESSOR_3931_Z16:
if (get_attr_z15_cracked (insn))
mask |= S390_SCHED_ATTR_MASK_CRACKED;
if (get_attr_z15_expanded (insn))
@ -14885,6 +14884,18 @@ s390_get_sched_attrmask (rtx_insn *insn)
if (get_attr_z15_groupoftwo (insn))
mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
break;
case PROCESSOR_3931_Z16:
if (get_attr_z16_cracked (insn))
mask |= S390_SCHED_ATTR_MASK_CRACKED;
if (get_attr_z16_expanded (insn))
mask |= S390_SCHED_ATTR_MASK_EXPANDED;
if (get_attr_z16_endgroup (insn))
mask |= S390_SCHED_ATTR_MASK_ENDGROUP;
if (get_attr_z16_groupalone (insn))
mask |= S390_SCHED_ATTR_MASK_GROUPALONE;
if (get_attr_z16_groupoftwo (insn))
mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
break;
default:
gcc_unreachable ();
}
@ -14921,7 +14932,6 @@ s390_get_unit_mask (rtx_insn *insn, int *units)
mask |= 1 << 3;
break;
case PROCESSOR_8561_Z15:
case PROCESSOR_3931_Z16:
*units = 4;
if (get_attr_z15_unit_lsu (insn))
mask |= 1 << 0;
@ -14932,6 +14942,17 @@ s390_get_unit_mask (rtx_insn *insn, int *units)
if (get_attr_z15_unit_vfu (insn))
mask |= 1 << 3;
break;
case PROCESSOR_3931_Z16:
*units = 4;
if (get_attr_z16_unit_lsu (insn))
mask |= 1 << 0;
if (get_attr_z16_unit_fxa (insn))
mask |= 1 << 1;
if (get_attr_z16_unit_fxb (insn))
mask |= 1 << 2;
if (get_attr_z16_unit_vfu (insn))
mask |= 1 << 3;
break;
default:
gcc_unreachable ();
}
@ -14945,7 +14966,7 @@ s390_is_fpd (rtx_insn *insn)
return false;
return get_attr_z13_unit_fpd (insn) || get_attr_z14_unit_fpd (insn)
|| get_attr_z15_unit_fpd (insn);
|| get_attr_z15_unit_fpd (insn) || get_attr_z16_unit_fpd (insn);
}
static bool
@ -14955,7 +14976,7 @@ s390_is_fxd (rtx_insn *insn)
return false;
return get_attr_z13_unit_fxd (insn) || get_attr_z14_unit_fxd (insn)
|| get_attr_z15_unit_fxd (insn);
|| get_attr_z15_unit_fxd (insn) || get_attr_z16_unit_fxd (insn);
}
/* Returns TRUE if INSN is a long-running instruction. */

View file

@ -48,7 +48,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_8561_Z15 ? PROCESSOR_8561_Z15 : s390_tune ))
#define s390_tune_attr ((enum attr_cpu)(s390_tune > PROCESSOR_3931_Z16 ? PROCESSOR_3931_Z16 : s390_tune ))
/* These flags indicate that the generated code should run on a cpu
providing the respective hardware facility regardless of the

View file

@ -518,7 +518,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,z15"
(define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15,z16"
(const (symbol_ref "s390_tune_attr")))
(define_attr "cpu_facility"
@ -629,6 +629,9 @@
;; Pipeline description for z15
(include "8561.md")
;; Pipeline description for z16
(include "3931.md")
;; Predicates
(include "predicates.md")