]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
S/390: Fix zvector vec_double builtin
authorAndreas Krebbel <krebbel@linux.ibm.com>
Thu, 13 Dec 2018 12:07:58 +0000 (12:07 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Thu, 13 Dec 2018 12:07:58 +0000 (12:07 +0000)
The (unsigned) long int to double vector conversion instructions
expect 2 immediate parameters. One for the inexact suppression
control and another one for the rounding mode.  However, the
vec_double builtin has just the vector source operand.  The 2
addtional operands need to be added with an intermediate expander.
The expanders were already there but unfortunately not wired up
correctly to the builtin.

gcc/ChangeLog:

2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>

Backport from mainline
2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtins.def (s390_vec_double_s64): Map to
s390_vec_double_s64 instead of s390_vcdgb.
(s390_vec_double_u64): Map to s390_vec_double_u64 instead of
s390_vcdlgb.

gcc/testsuite/ChangeLog:

2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>

Backport from mainline
2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/zvector/vec-double-1.c: New test.
* gcc.target/s390/zvector/vec-double-2.c: New test.

From-SVN: r267088

gcc/ChangeLog
gcc/config/s390/s390-builtins.def
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/s390/zvector/vec-double-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/zvector/vec-double-2.c [new file with mode: 0644]

index 27c17ddfac7ab68c290bbeff0d83c2634905f450..1adedcc527ce8af945af3ed32eb06257b8b47e28 100644 (file)
@@ -1,3 +1,13 @@
+2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       Backport from mainline
+       2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       * config/s390/s390-builtins.def (s390_vec_double_s64): Map to
+       s390_vec_double_s64 instead of s390_vcdgb.
+       (s390_vec_double_u64): Map to s390_vec_double_u64 instead of
+       s390_vcdlgb.
+
 2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>
 
        Backport from mainline
index c2f278dc9c33e3a986ba510138b8ca0cf7213be8..5f9d1d98485b2cf59da65ba00ee506653b619769 100644 (file)
@@ -2804,8 +2804,8 @@ B_DEF      (s390_vfsqsb,                sqrtv4sf2,          0,
 B_DEF      (s390_vfsqdb,                sqrtv2df2,          0,                  B_VX,               0,                  BT_FN_V2DF_V2DF)
 
 OB_DEF     (s390_vec_double,            s390_vec_double_s64,s390_vec_double_u64,B_VX,               BT_FN_OV4SI_OV4SI)
-OB_DEF_VAR (s390_vec_double_s64,        s390_vcdgb,         0,                  0,                  BT_OV_V2DF_V2DI)
-OB_DEF_VAR (s390_vec_double_u64,        s390_vcdlgb,        0,                  0,                  BT_OV_V2DF_UV2DI)
+OB_DEF_VAR (s390_vec_double_s64,        s390_vec_double_s64,0,                  0,                  BT_OV_V2DF_V2DI)
+OB_DEF_VAR (s390_vec_double_u64,        s390_vec_double_u64,0,                  0,                  BT_OV_V2DF_UV2DI)
 
 B_DEF      (s390_vec_double_s64,        vec_double_s64,     0,                  B_INT | B_VX,       0,                  BT_FN_V2DF_V2DI)  /* vcdgb */
 B_DEF      (s390_vec_double_u64,        vec_double_u64,     0,                  B_INT | B_VX,       0,                  BT_FN_V2DF_UV2DI) /* vcdlgb */
index c63a9cce9f02d6278c3267cf3b0dbf0b3d4486ea..4b0bb82997a0edd727f5b40780bdc8785fef5920 100644 (file)
@@ -1,3 +1,11 @@
+2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       Backport from mainline
+       2018-12-13  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       * gcc.target/s390/zvector/vec-double-1.c: New test.
+       * gcc.target/s390/zvector/vec-double-2.c: New test.
+
 2018-12-12  Peter Bergner  <bergner@linux.ibm.com>
 
        Backport from mainline
diff --git a/gcc/testsuite/gcc.target/s390/zvector/vec-double-1.c b/gcc/testsuite/gcc.target/s390/zvector/vec-double-1.c
new file mode 100644 (file)
index 0000000..39b6d84
--- /dev/null
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -mzarch -march=z13 -mzvector" } */
+
+#include <vecintrin.h>
+
+vector double
+test (vector unsigned long long x)
+{
+  return vec_double (x);
+}
+
+/* { dg-final { scan-assembler-times "vcdlgb\t" 1 } } */
diff --git a/gcc/testsuite/gcc.target/s390/zvector/vec-double-2.c b/gcc/testsuite/gcc.target/s390/zvector/vec-double-2.c
new file mode 100644 (file)
index 0000000..c592ea2
--- /dev/null
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -mzarch -march=z13 -mzvector" } */
+
+#include <vecintrin.h>
+
+vector double
+test (vector long long x)
+{
+  return vec_double (x);
+}
+
+/* { dg-final { scan-assembler-times "vcdgb\t" 1 } } */