aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2015-05-17 23:45:40 +0200
committerUros Bizjak <uros@gcc.gnu.org>2015-05-17 23:45:40 +0200
commitfd02576de9998e0207d1477903ab3a8c4de3f88f (patch)
tree39379d31131a690b578f10b61e4dbd6811c25cb3
parentf5a64dbf01a2f588cfe0b372c45d6258dfe873b8 (diff)
downloadgcc-fd02576de9998e0207d1477903ab3a8c4de3f88f.zip
gcc-fd02576de9998e0207d1477903ab3a8c4de3f88f.tar.gz
gcc-fd02576de9998e0207d1477903ab3a8c4de3f88f.tar.bz2
pr66174.c: New test.
* gcc.target/i386/pr66174.c: New test. From-SVN: r223275
-rw-r--r--gcc/testsuite/gcc.target/i386/pr66174.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/pr66174.c b/gcc/testsuite/gcc.target/i386/pr66174.c
new file mode 100644
index 0000000..f591f4b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr66174.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-vectorize -mavx512f" } */
+
+extern void abort (void);
+
+typedef struct {
+ unsigned int a;
+ unsigned int b;
+} ii;
+
+void foo (unsigned short *arr, ii *iarr)
+{
+ ii *iptr = iarr;
+ unsigned short res[128];
+ ii ires[128];
+ int i;
+ for (i = 0; i < 128; i++)
+ {
+ ires[i].a = iptr->b - iptr->a;
+ ires[i].b = iptr->b + iptr->a;
+ iptr++;
+ }
+ for (i = 0; i < 128; i++)
+ {
+ if (res[i] != arr[i]
+ || ires[i].a != iarr[i].b - iarr[i].a
+ || ires[i].b != iarr[i].b + iarr[i].a)
+ abort ();
+ }
+}