aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2015-12-02 07:53:03 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2015-12-02 07:53:03 +0000
commita4a443cee2ea9c2db55e2802d46a4d5b6cbe1784 (patch)
treee6347c3ab91a44625029eaa54e311fdcef8f7a08
parent6f5a59d1d1a4a602ef5fbd581be09dff976cabdf (diff)
downloadgcc-a4a443cee2ea9c2db55e2802d46a4d5b6cbe1784.zip
gcc-a4a443cee2ea9c2db55e2802d46a4d5b6cbe1784.tar.gz
gcc-a4a443cee2ea9c2db55e2802d46a4d5b6cbe1784.tar.bz2
S/390: Fix vrepi constraint letter.
gcc/ChangeLog: 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * config/s390/vector.md ("*vec_splats<mode>"): Fix constraint latter I->K. gcc/testsuite/ChangeLog: 2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * gcc.target/s390/zvector/vec-splat-1.c: New test. From-SVN: r231153
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/s390/vector.md4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/s390/zvector/vec-splat-1.c42
4 files changed, 53 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2976dfc..8b6fdbc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+ * config/s390/vector.md ("*vec_splats<mode>"): Fix constraint
+ latter I->K.
+
+2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
* config/s390/s390.md ("bswap<mode>2"): Add support for strv and
strvg.
("bswaphi2"): New pattern.
diff --git a/gcc/config/s390/vector.md b/gcc/config/s390/vector.md
index 16276e0..d8b9b07 100644
--- a/gcc/config/s390/vector.md
+++ b/gcc/config/s390/vector.md
@@ -370,11 +370,11 @@
(define_insn "*vec_splats<mode>"
[(set (match_operand:V_HW 0 "register_operand" "=v,v,v,v")
- (vec_duplicate:V_HW (match_operand:<non_vec> 1 "general_operand" "QR,I,v,d")))]
+ (vec_duplicate:V_HW (match_operand:<non_vec> 1 "general_operand" "QR,K,v,d")))]
"TARGET_VX"
"@
vlrep<bhfgq>\t%v0,%1
- vrepi<bhfgq>\t%v0,%1
+ vrepi<bhfgq>\t%v0,%h1
vrep<bhfgq>\t%v0,%v1,0
#"
[(set_attr "op_type" "VRX,VRI,VRI,*")])
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9118682..79e4596 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,9 @@
2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+ * gcc.target/s390/zvector/vec-splat-1.c: New test.
+
+2015-12-02 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
* gcc.target/s390/bswap-1.c (foo64c, foo32a, foo32c): New functions.
* gcc.target/s390/bswaphi-1.c: New test.
diff --git a/gcc/testsuite/gcc.target/s390/zvector/vec-splat-1.c b/gcc/testsuite/gcc.target/s390/zvector/vec-splat-1.c
new file mode 100644
index 0000000..bab2e2d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/zvector/vec-splat-1.c
@@ -0,0 +1,42 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -mzarch -march=z13 -mzvector" } */
+
+#include <vecintrin.h>
+
+vector signed char v16qi;
+vector short v8hi;
+vector int v4si;
+vector long long v2di;
+
+vector unsigned char uv16qi;
+vector unsigned short uv8hi;
+vector unsigned int uv4si;
+vector unsigned long long uv2di;
+
+int
+foo ()
+{
+ v16qi = vec_splats ((signed char)0x77);
+ uv16qi = vec_splats ((unsigned char)0x77);
+
+ v8hi = vec_splats ((short int)0x7f0f);
+ uv8hi = vec_splats ((unsigned short int)0x7f0f);
+
+ v4si = vec_splats ((int)0x7f0f);
+ uv4si = vec_splats ((unsigned int)0x7f0f);
+
+ v2di = vec_splats ((long long)0x7f0f);
+ uv2di = vec_splats ((unsigned long long)0x7f0f);
+}
+
+/* { dg-final { scan-assembler-times "vrepib\t%v.*,119" 1 } } */
+/* { dg-final { scan-assembler-times "vrepib\t%v.*,119" 1 } } */
+
+/* { dg-final { scan-assembler-times "vrepih\t%v.*,32527" 1 } } */
+/* { dg-final { scan-assembler-times "vrepih\t%v.*,32527" 1 } } */
+
+/* { dg-final { scan-assembler-times "vrepif\t%v.*,32527" 1 } } */
+/* { dg-final { scan-assembler-times "vrepif\t%v.*,32527" 1 } } */
+
+/* { dg-final { scan-assembler-times "vrepig\t%v.*,32527" 1 } } */
+/* { dg-final { scan-assembler-times "vrepig\t%v.*,32527" 1 } } */