aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/pr92080-16.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/i386/pr92080-16.c')
-rw-r--r--gcc/testsuite/gcc.target/i386/pr92080-16.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/pr92080-16.c b/gcc/testsuite/gcc.target/i386/pr92080-16.c
new file mode 100644
index 0000000..c8ab084
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr92080-16.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -march=x86-64-v4" } */
+/* { dg-final { scan-assembler-times "vpbroadcastd" 1 } } */
+
+typedef int v4si __attribute__((vector_size(16)));
+typedef int v8si __attribute__((vector_size(32)));
+typedef int v16si __attribute__((vector_size(64)));
+
+extern v4si *s1;
+extern v8si *s2;
+extern v16si *s3;
+
+int
+foo (int i, int j)
+{
+ if (j == 1)
+ {
+ s1[i] = __extension__(v4si){34, 34, 34, 34};
+ s2[j] = __extension__(v8si){34, 34, 34, 34, 34, 34, 34, 34};
+ s3[i + j] = __extension__(v16si){34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34};
+ }
+ if ((i + j) == 1234)
+ i = foo (j, i);
+ return i - j;
+}