aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-05-11 13:38:49 +0600
committerJakub Jelinek <jakub@gcc.gnu.org>2018-05-11 09:38:49 +0200
commit5a599c460e3846df80aaabd2b4629544337167ba (patch)
tree6e1b0fef494b7c8af393089dd92554f917016e10 /gcc/testsuite/gcc.target
parent19916065b7fb26bbb36f7bbe5688ae2c1661dec3 (diff)
downloadgcc-5a599c460e3846df80aaabd2b4629544337167ba.zip
gcc-5a599c460e3846df80aaabd2b4629544337167ba.tar.gz
gcc-5a599c460e3846df80aaabd2b4629544337167ba.tar.bz2
re PR tree-optimization/85692 (Two source permute not used for vector initialization)
PR tree-optimization/85692 * tree-ssa-forwprop.c (simplify_vector_constructor): Try two source permute as well. * gcc.target/i386/pr85692.c: New test. Co-Authored-By: Jakub Jelinek <jakub@redhat.com> From-SVN: r260155
Diffstat (limited to 'gcc/testsuite/gcc.target')
-rw-r--r--gcc/testsuite/gcc.target/i386/pr85692.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/pr85692.c b/gcc/testsuite/gcc.target/i386/pr85692.c
new file mode 100644
index 0000000..45594ff
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr85692.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse4.1" } */
+/* { dg-final { scan-assembler "unpcklps" } } */
+/* { dg-final { scan-assembler "blendps" } } */
+/* { dg-final { scan-assembler-not "shufps" } } */
+/* { dg-final { scan-assembler-not "unpckhps" } } */
+
+typedef float v4sf __attribute__ ((vector_size (16)));
+
+v4sf unpcklps(v4sf a, v4sf b)
+{
+ return (v4sf){a[0],b[0],a[1],b[1]};
+}
+
+v4sf blendps(v4sf a, v4sf b)
+{
+ return (v4sf){a[0],b[1],a[2],b[3]};
+}