aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/common/config/s390/s390-common.cc6
-rw-r--r--gcc/config.gcc2
-rw-r--r--gcc/config/s390/driver-native.cc2
-rw-r--r--gcc/config/s390/s390-opts.h1
-rw-r--r--gcc/config/s390/s390.cc4
-rw-r--r--gcc/config/s390/s390.h19
-rw-r--r--gcc/config/s390/s390.md10
-rw-r--r--gcc/config/s390/s390.opt3
-rw-r--r--gcc/testsuite/gcc.target/s390/s390.exp3
9 files changed, 45 insertions, 5 deletions
diff --git a/gcc/common/config/s390/s390-common.cc b/gcc/common/config/s390/s390-common.cc
index b723871..4b0691d 100644
--- a/gcc/common/config/s390/s390-common.cc
+++ b/gcc/common/config/s390/s390-common.cc
@@ -53,7 +53,11 @@ EXPORTED_CONST int processor_flags_table[] =
/* z16 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
| PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX
| PF_Z13 | PF_VX | PF_VXE | PF_Z14 | PF_VXE2 | PF_Z15
- | PF_NNPA | PF_Z16
+ | PF_NNPA | PF_Z16,
+ /* arch15 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
+ | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX
+ | PF_Z13 | PF_VX | PF_VXE | PF_Z14 | PF_VXE2 | PF_Z15
+ | PF_NNPA | PF_Z16 | PF_VXE3 | PF_ARCH15
};
/* Change optimizations to be performed, depending on the
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 371143e..82227e8 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -5757,7 +5757,7 @@ case "${target}" in
for which in arch tune; do
eval "val=\$with_$which"
case ${val} in
- "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 )
+ "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | z16 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 | arch14 | arch15 )
# OK
;;
*)
diff --git a/gcc/config/s390/driver-native.cc b/gcc/config/s390/driver-native.cc
index c6b5693..49e8fa0 100644
--- a/gcc/config/s390/driver-native.cc
+++ b/gcc/config/s390/driver-native.cc
@@ -128,7 +128,7 @@ s390_host_detect_local_cpu (int argc, const char **argv)
cpu = "arch14";
break;
default:
- cpu = "arch14";
+ cpu = "arch15";
break;
}
}
diff --git a/gcc/config/s390/s390-opts.h b/gcc/config/s390/s390-opts.h
index c100725..437d3b9 100644
--- a/gcc/config/s390/s390-opts.h
+++ b/gcc/config/s390/s390-opts.h
@@ -39,6 +39,7 @@ enum processor_type
PROCESSOR_3906_Z14,
PROCESSOR_8561_Z15,
PROCESSOR_3931_Z16,
+ PROCESSOR_ARCH15,
PROCESSOR_NATIVE,
PROCESSOR_max
};
diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc
index f166a8a..327e44c 100644
--- a/gcc/config/s390/s390.cc
+++ b/gcc/config/s390/s390.cc
@@ -342,6 +342,7 @@ const struct s390_processor processor_table[] =
{ "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost, 12 },
{ "z15", "arch13", PROCESSOR_8561_Z15, &zEC12_cost, 13 },
{ "z16", "arch14", PROCESSOR_3931_Z16, &zEC12_cost, 14 },
+ { "arch15", "", PROCESSOR_ARCH15, &zEC12_cost, 15 },
{ "native", "", PROCESSOR_NATIVE, NULL, 0 }
};
@@ -9163,6 +9164,7 @@ s390_issue_rate (void)
case PROCESSOR_3906_Z14:
case PROCESSOR_8561_Z15:
case PROCESSOR_3931_Z16:
+ case PROCESSOR_ARCH15:
default:
return 1;
}
@@ -15590,6 +15592,7 @@ s390_get_sched_attrmask (rtx_insn *insn)
mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO;
break;
case PROCESSOR_3931_Z16:
+ case PROCESSOR_ARCH15:
if (get_attr_z16_cracked (insn))
mask |= S390_SCHED_ATTR_MASK_CRACKED;
if (get_attr_z16_expanded (insn))
@@ -15648,6 +15651,7 @@ s390_get_unit_mask (rtx_insn *insn, int *units)
mask |= 1 << 3;
break;
case PROCESSOR_3931_Z16:
+ case PROCESSOR_ARCH15:
*units = 4;
if (get_attr_z16_unit_lsu (insn))
mask |= 1 << 0;
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index d7fe699..2f5b95f 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -43,7 +43,9 @@ enum processor_flags
PF_VXE2 = 8192,
PF_Z15 = 16384,
PF_NNPA = 32768,
- PF_Z16 = 65536
+ PF_Z16 = 65536,
+ PF_VXE3 = 131072,
+ PF_ARCH15 = 262144
};
/* This is necessary to avoid a warning about comparing different enum
@@ -118,6 +120,14 @@ enum processor_flags
(s390_arch_flags & PF_NNPA)
#define TARGET_CPU_NNPA_P(opts) \
(opts->x_s390_arch_flags & PF_NNPA)
+#define TARGET_CPU_VXE3 \
+ (s390_arch_flags & PF_VXE3)
+#define TARGET_CPU_VXE3_P(opts) \
+ (opts->x_s390_arch_flags & PF_VXE3)
+#define TARGET_CPU_ARCH15 \
+ (s390_arch_flags & PF_ARCH15)
+#define TARGET_CPU_ARCH15_P(opts) \
+ (opts->x_s390_arch_flags & PF_ARCH15)
#define TARGET_HARD_FLOAT_P(opts) (!TARGET_SOFT_FLOAT_P(opts))
@@ -184,6 +194,13 @@ enum processor_flags
(TARGET_ZARCH && TARGET_CPU_NNPA)
#define TARGET_NNPA_P(opts) \
(TARGET_ZARCH_P (opts) && TARGET_CPU_NNPA_P (opts))
+#define TARGET_VXE3 \
+ (TARGET_VX && TARGET_CPU_VXE3)
+#define TARGET_VXE3_P(opts) \
+ (TARGET_VX_P (opts) && TARGET_CPU_VXE3_P (opts))
+#define TARGET_ARCH15 (TARGET_ZARCH && TARGET_CPU_ARCH15)
+#define TARGET_ARCH15_P(opts) \
+ (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_ARCH15_P (opts))
#if defined(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13)
#define TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS TARGET_Z13
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 5cab7af..6a660f1 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -521,7 +521,7 @@
(const (symbol_ref "s390_tune_attr")))
(define_attr "cpu_facility"
- "standard,ieee,zarch,cpu_zarch,longdisp,extimm,dfp,z10,z196,zEC12,vx,z13,z14,vxe,z15,vxe2,z16,nnpa"
+ "standard,ieee,zarch,cpu_zarch,longdisp,extimm,dfp,z10,z196,zEC12,vx,z13,z14,vxe,z15,vxe2,z16,nnpa,vxe3,arch15"
(const_string "standard"))
(define_attr "enabled" ""
@@ -594,6 +594,14 @@
(and (eq_attr "cpu_facility" "nnpa")
(match_test "TARGET_NNPA"))
(const_int 1)
+
+ (and (eq_attr "cpu_facility" "vxe3")
+ (match_test "TARGET_VXE3"))
+ (const_int 1)
+
+ (and (eq_attr "cpu_facility" "arch15")
+ (match_test "TARGET_ARCH15"))
+ (const_int 1)
]
(const_int 0)))
diff --git a/gcc/config/s390/s390.opt b/gcc/config/s390/s390.opt
index 94157f8..f064597 100644
--- a/gcc/config/s390/s390.opt
+++ b/gcc/config/s390/s390.opt
@@ -122,6 +122,9 @@ EnumValue
Enum(processor_type) String(z16) Value(PROCESSOR_3931_Z16)
EnumValue
+Enum(processor_type) String(arch15) Value(PROCESSOR_ARCH15)
+
+EnumValue
Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly
mbackchain
diff --git a/gcc/testsuite/gcc.target/s390/s390.exp b/gcc/testsuite/gcc.target/s390/s390.exp
index 3764b89..fbb3c17 100644
--- a/gcc/testsuite/gcc.target/s390/s390.exp
+++ b/gcc/testsuite/gcc.target/s390/s390.exp
@@ -257,6 +257,9 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vxe/*.{c,S}]] \
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vxe2/*.{c,S}]] \
"" "-O3 -march=arch13 -mzarch"
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vxe3/*.{c,S}]] \
+ "" "-O3 -march=arch15 -mzarch"
+
# Some md tests require libatomic
atomic_init
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/md/*.{c,S}]] \