aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.ibm.com>2019-04-02 10:50:03 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2019-04-02 10:50:03 +0000
commit511ea1538b58d7d44a53d0264fc041de5991270a (patch)
tree3b70d51d4f7f0371cb3f9b343704e32e5cad8613 /gcc
parent6de6b21052e0ca0f54cb494a3a59fee389ac6fdf (diff)
downloadgcc-511ea1538b58d7d44a53d0264fc041de5991270a.zip
gcc-511ea1538b58d7d44a53d0264fc041de5991270a.tar.gz
gcc-511ea1538b58d7d44a53d0264fc041de5991270a.tar.bz2
S/390: arch13: Add arch13 as architecture option
This patch enables the command line options and provides the proper macros for checking. gcc/ChangeLog: 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com> * common/config/s390/s390-common.c (processor_flags_table): New entry for arch13. * config.gcc: Support arch13 with the --with-arch= configure flag. * config/s390/driver-native.c (s390_host_detect_local_cpu): * config/s390/s390-opts.h (enum processor_type): Add PROCESSOR_ARCH13. * config/s390/s390.c (s390_get_sched_attrmask) (s390_get_unit_mask): Add PROCESSOR_ARCH13. * config/s390/s390.h (enum processor_flags): Add PF_VXE2 and PF_ARCH13. * config/s390/s390.md (TARGET_CPU_ARCH13, TARGET_CPU_ARCH13_P) (TARGET_CPU_VXE2, TARGET_CPU_VXE2_P, TARGET_ARCH13) (TARGET_ARCH13_P, TARGET_VXE2, TARGET_VXE2_P): New macro definitions. * config/s390/s390.opt: Support arch13 as processor type in command line options. gcc/testsuite/ChangeLog: 2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com> * gcc.target/s390/s390.exp: Run tests in arch13 subdir. * lib/target-supports.exp (check_effective_target_s390_vxe2): New runtime check for the vxe2 hardware feature on IBM Z. From-SVN: r270077
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog17
-rw-r--r--gcc/common/config/s390/s390-common.c21
-rw-r--r--gcc/config.gcc2
-rw-r--r--gcc/config/s390/driver-native.c2
-rw-r--r--gcc/config/s390/s390-opts.h1
-rw-r--r--gcc/config/s390/s390.c3
-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/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.target/s390/s390.exp3
-rw-r--r--gcc/testsuite/lib/target-supports.exp16
12 files changed, 90 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 63c1223..2ab9586 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,20 @@
+2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * common/config/s390/s390-common.c (processor_flags_table): New
+ entry for arch13.
+ * config.gcc: Support arch13 with the --with-arch= configure flag.
+ * config/s390/driver-native.c (s390_host_detect_local_cpu):
+ * config/s390/s390-opts.h (enum processor_type): Add PROCESSOR_ARCH13.
+ * config/s390/s390.c (s390_get_sched_attrmask)
+ (s390_get_unit_mask): Add PROCESSOR_ARCH13.
+ * config/s390/s390.h (enum processor_flags): Add PF_VXE2 and PF_ARCH13.
+ * config/s390/s390.md (TARGET_CPU_ARCH13, TARGET_CPU_ARCH13_P)
+ (TARGET_CPU_VXE2, TARGET_CPU_VXE2_P, TARGET_ARCH13)
+ (TARGET_ARCH13_P, TARGET_VXE2, TARGET_VXE2_P): New macro
+ definitions.
+ * config/s390/s390.opt: Support arch13 as processor type in
+ command line options.
+
2019-04-02 Martin Liska <mliska@suse.cz>
PR translation/89912
diff --git a/gcc/common/config/s390/s390-common.c b/gcc/common/config/s390/s390-common.c
index 95699fb..f9c3a95 100644
--- a/gcc/common/config/s390/s390-common.c
+++ b/gcc/common/config/s390/s390-common.c
@@ -32,21 +32,24 @@ EXPORTED_CONST int processor_flags_table[] =
/* 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,
+ | PF_EXTIMM,
/* z9-ec */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
- | PF_EXTIMM | PF_DFP,
+ | PF_EXTIMM | PF_DFP,
/* z10 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
- | PF_EXTIMM | PF_DFP | PF_Z10,
+ | PF_EXTIMM | PF_DFP | PF_Z10,
/* z196 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
- | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196,
+ | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196,
/* zEC12 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT
- | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX,
+ | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX,
/* z13 */ 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_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX
+ | PF_Z13 | PF_VX,
/* z14 */ 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_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX
+ | PF_Z13 | PF_VX | PF_VXE | PF_Z14,
+ /* arch13 */ 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_ARCH13
};
/* Change optimizations to be performed, depending on the
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 3eb2e80..0a8830a 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -4727,7 +4727,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 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12)
+ "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 )
# OK
;;
*)
diff --git a/gcc/config/s390/driver-native.c b/gcc/config/s390/driver-native.c
index 95b85f0..0352a79 100644
--- a/gcc/config/s390/driver-native.c
+++ b/gcc/config/s390/driver-native.c
@@ -120,7 +120,7 @@ s390_host_detect_local_cpu (int argc, const char **argv)
cpu = "z14";
break;
default:
- cpu = "z14";
+ cpu = "arch13";
break;
}
}
diff --git a/gcc/config/s390/s390-opts.h b/gcc/config/s390/s390-opts.h
index e58eee4..db9dc62 100644
--- a/gcc/config/s390/s390-opts.h
+++ b/gcc/config/s390/s390-opts.h
@@ -37,6 +37,7 @@ enum processor_type
PROCESSOR_2827_ZEC12,
PROCESSOR_2964_Z13,
PROCESSOR_3906_Z14,
+ PROCESSOR_ARCH13,
PROCESSOR_NATIVE,
PROCESSOR_max
};
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 5f26437..5c55ebe 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -337,6 +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 },
{ "native", "", PROCESSOR_NATIVE, NULL, 0 }
};
@@ -14313,6 +14314,7 @@ 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))
@@ -14349,6 +14351,7 @@ 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;
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index fcb85d6..c7aa67c 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -39,7 +39,9 @@ enum processor_flags
PF_Z13 = 512,
PF_VX = 1024,
PF_Z14 = 2048,
- PF_VXE = 4096
+ PF_VXE = 4096,
+ PF_VXE2 = 8192,
+ PF_ARCH13 = 16384
};
/* This is necessary to avoid a warning about comparing different enum
@@ -98,6 +100,14 @@ enum processor_flags
(s390_arch_flags & PF_VXE)
#define TARGET_CPU_VXE_P(opts) \
(opts->x_s390_arch_flags & PF_VXE)
+#define TARGET_CPU_ARCH13 \
+ (s390_arch_flags & PF_ARCH13)
+#define TARGET_CPU_ARCH13_P(opts) \
+ (opts->x_s390_arch_flags & PF_ARCH13)
+#define TARGET_CPU_VXE2 \
+ (s390_arch_flags & PF_VXE2)
+#define TARGET_CPU_VXE2_P(opts) \
+ (opts->x_s390_arch_flags & PF_VXE2)
#define TARGET_HARD_FLOAT_P(opts) (!TARGET_SOFT_FLOAT_P(opts))
@@ -150,6 +160,13 @@ enum processor_flags
(TARGET_VX && TARGET_CPU_VXE)
#define TARGET_VXE_P(opts) \
(TARGET_VX_P (opts) && TARGET_CPU_VXE_P (opts))
+#define TARGET_ARCH13 (TARGET_ZARCH && TARGET_CPU_ARCH13)
+#define TARGET_ARCH13_P(opts) \
+ (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_ARCH13_P (opts))
+#define TARGET_VXE2 \
+ (TARGET_VX && TARGET_CPU_VXE2)
+#define TARGET_VXE2_P(opts) \
+ (TARGET_VX_P (opts) && TARGET_CPU_VXE2_P (opts))
#ifdef HAVE_AS_MACHINE_MACHINEMODE
#define S390_USE_TARGET_ATTRIBUTE 1
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index b455b63..bbe1ea5 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -510,7 +510,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"
+ "standard,ieee,zarch,cpu_zarch,longdisp,extimm,dfp,z10,z196,zEC12,vx,z13,z14,vxe,arch13,vxe2"
(const_string "standard"))
(define_attr "enabled" ""
@@ -567,6 +567,14 @@
(and (eq_attr "cpu_facility" "vxe")
(match_test "TARGET_VXE"))
(const_int 1)
+
+ (and (eq_attr "cpu_facility" "arch13")
+ (match_test "TARGET_ARCH13"))
+ (const_int 1)
+
+ (and (eq_attr "cpu_facility" "vxe2")
+ (match_test "TARGET_VXE2"))
+ (const_int 1)
]
(const_int 0)))
diff --git a/gcc/config/s390/s390.opt b/gcc/config/s390/s390.opt
index b6d987c..0fb738f 100644
--- a/gcc/config/s390/s390.opt
+++ b/gcc/config/s390/s390.opt
@@ -110,6 +110,9 @@ EnumValue
Enum(processor_type) String(arch12) Value(PROCESSOR_3906_Z14)
EnumValue
+Enum(processor_type) String(arch13) Value(PROCESSOR_ARCH13)
+
+EnumValue
Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly
mbackchain
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 54b2e39..35eb6fe 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-04-02 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.target/s390/s390.exp: Run tests in arch13 subdir.
+ * lib/target-supports.exp (check_effective_target_s390_vxe2): New
+ runtime check for the vxe2 hardware feature on IBM Z.
+
2019-04-01 H.J. Lu <hongjiu.lu@intel.com>
PR testsuite/89907
diff --git a/gcc/testsuite/gcc.target/s390/s390.exp b/gcc/testsuite/gcc.target/s390/s390.exp
index 4dfb8b5..86f7e43 100644
--- a/gcc/testsuite/gcc.target/s390/s390.exp
+++ b/gcc/testsuite/gcc.target/s390/s390.exp
@@ -215,6 +215,9 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/target-attribute/*.{c,S}]] \
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/arch12/*.{c,S}]] \
"" "-O3 -march=arch12 -mzarch"
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/arch13/*.{c,S}]] \
+ "" "-O3 -march=arch13 -mzarch"
+
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vxe/*.{c,S}]] \
"" "-O3 -march=arch12 -mzarch"
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 90efaea..0dc1e18 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -8961,6 +8961,22 @@ proc check_effective_target_s390_vxe { } {
} "-march=z14 -mzarch" ]
}
+# Same as above but for the arch13 vector enhancement facility. Test
+# is performed with the vector shift left double by bit instruction.
+proc check_effective_target_s390_vxe2 { } {
+ if ![istarget s390*-*-*] then {
+ return 0;
+ }
+
+ return [check_runtime s390_check_vxe2 {
+ int main (void)
+ {
+ asm ("vsld %%v24, %%v26, %%v28, 3" : : : "v24", "v26", "v28");
+ return 0;
+ }
+ } "-march=arch13 -mzarch" ]
+}
+
#For versions of ARM architectures that have hardware div insn,
#disable the divmod transform