aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2017-10-06 09:18:37 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2017-10-06 09:18:37 +0000
commit6fcb90c624db95f1b483e0d403e95215d4732bd6 (patch)
tree220413c5fde8142ea2819958451e6004c3df1d12 /gcc/testsuite/gcc.target
parent3d28cdc2cdab4fca880e737602c29e08ba01ef76 (diff)
downloadgcc-6fcb90c624db95f1b483e0d403e95215d4732bd6.zip
gcc-6fcb90c624db95f1b483e0d403e95215d4732bd6.tar.gz
gcc-6fcb90c624db95f1b483e0d403e95215d4732bd6.tar.bz2
PR82317: S/390: Fix vec_min/vec_max builtins for IBM z13.
With IBM z14 a hardware instruction for floating point min and max has been added while for IBM z13 we emulated min/max for vector double with compare and select. This testcase makes sure that we fall back to the emulated variant when compiling for z13. gcc/ChangeLog: 2017-10-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com> PR target/82317 * config/s390/s390-builtin-types.def: Regenerate. * config/s390/s390-builtins.def (s390_vfmaxdb_4, s390_vfmindb_4): Change flag from B_VXE to B_VX. (s390_vec_min_dbl): Remove B_VXE flag. gcc/testsuite/ChangeLog: 2017-10-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com> PR target/82317 * gcc.target/s390/zvector/pr82317.c: New test. From-SVN: r253480
Diffstat (limited to 'gcc/testsuite/gcc.target')
-rw-r--r--gcc/testsuite/gcc.target/s390/zvector/pr82317.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/s390/zvector/pr82317.c b/gcc/testsuite/gcc.target/s390/zvector/pr82317.c
new file mode 100644
index 0000000..4b7cc83
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/zvector/pr82317.c
@@ -0,0 +1,19 @@
+/* { dg-do compile { target { s390*-*-* } } } */
+/* { dg-options "-march=z13 -mzarch -mzvector" } */
+
+/* With IBM z14 a hardware instruction for floating point min and max
+ has been added while for IBM z13 we emulated min/max for vector
+ double with compare and select. This testcase makes sure that we
+ fall back to the emulated variant when compiling for z13. */
+
+#include <vecintrin.h>
+
+vector double
+foo (vector double a, vector double b) {
+ return vec_min (a, b);
+}
+
+vector double
+bar (vector double a, vector double b) {
+ return vec_max (a, b);
+}