aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-08-10 19:58:16 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2017-08-10 19:58:16 +0000
commitadc840379952b3a5649417d1d20d68f0d65e60ba (patch)
tree0f420f962ebfee166515cae7953d64374200dda6 /gcc
parent339922f4e10dde8a09dadcb8af2099f8ee7d30d8 (diff)
downloadgcc-adc840379952b3a5649417d1d20d68f0d65e60ba.zip
gcc-adc840379952b3a5649417d1d20d68f0d65e60ba.tar.gz
gcc-adc840379952b3a5649417d1d20d68f0d65e60ba.tar.bz2
PR81738: Split vect-alias-check-6.c
The second loop in the testcase only vectorises if we can reverse a vector and if aligned loads aren't required. 2017-08-10 Richard Sandiford <richard.sandiford@linaro.org> gcc/testsuite/ PR testsuite/81738 * gcc.dg/vect/vect-alias-check-6.c: Move second function to... * gcc.dg/vect/vect-alias-check-7.c: ...this new file. Require vect_perm and vect_element_align for vectorization. From-SVN: r251037
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-alias-check-6.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-alias-check-7.c16
3 files changed, 25 insertions, 9 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0c5ac58..da63e03 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2017-08-10 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR testsuite/81738
+ * gcc.dg/vect/vect-alias-check-6.c: Move second function to...
+ * gcc.dg/vect/vect-alias-check-7.c: ...this new file. Require
+ vect_perm and vect_element_align for vectorization.
+
2017-08-10 H.J. Lu <hongjiu.lu@intel.com>
PR target/81736
diff --git a/gcc/testsuite/gcc.dg/vect/vect-alias-check-6.c b/gcc/testsuite/gcc.dg/vect/vect-alias-check-6.c
index 0993c69..5bb78f8 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-alias-check-6.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-alias-check-6.c
@@ -12,12 +12,5 @@ f1 (struct s *a, struct s *b)
a->x[i + 1] += b->x[i];
}
-void
-f2 (struct s *a, struct s *b)
-{
- for (int i = 0; i < N; ++i)
- a->x[i] += b->x[N - i - 1];
-}
-
-/* { dg-final { scan-tree-dump-times {checking that [^\n]* and [^\n]* have different addresses} 2 "vect" } } */
-/* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
+/* { dg-final { scan-tree-dump {checking that [^\n]* and [^\n]* have different addresses} "vect" } } */
+/* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-alias-check-7.c b/gcc/testsuite/gcc.dg/vect/vect-alias-check-7.c
new file mode 100644
index 0000000..812349d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-alias-check-7.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+
+#define N 16
+
+struct s { int x[N]; };
+
+void
+f1 (struct s *a, struct s *b)
+{
+ for (int i = 0; i < N; ++i)
+ a->x[i] += b->x[N - i - 1];
+}
+
+/* { dg-final { scan-tree-dump {checking that [^\n]* and [^\n]* have different addresses} "vect" } } */
+/* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { vect_perm && vect_element_align } } } } */