From 7ddb87782d08b109ccf7c137aab6d8b207c87dd9 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 3 Sep 2007 15:19:17 +0000 Subject: [PATCH] no-tree-scev-cprop-vect-iv-1.c: Restored. 2007-09-03 H.J. Lu * gcc.dg/vect/no-tree-scev-cprop-vect-iv-1.c: Restored. Moved to ... * gcc.dg/vect/no-scevccp-vect-iv-1.c: New test. * gcc.dg/vect/no-tree-scev-cprop-vect-iv-2.c: Restored. Moved to ... * gcc.dg/vect/no-scevccp-vect-iv-2.c: New test. * gcc.dg/vect/no-tree-scev-cprop-vect-iv-3.c: Restored. Moved to ... * gcc.dg/vect/no-scevccp-vect-iv-3.c: New test. From-SVN: r128045 --- gcc/testsuite/ChangeLog | 12 +++++ .../gcc.dg/vect/no-scevccp-vect-iv-1.c | 34 +++++++++++++ .../gcc.dg/vect/no-scevccp-vect-iv-2.c | 49 +++++++++++++++++++ .../gcc.dg/vect/no-scevccp-vect-iv-3.c | 27 ++++++++++ .../vect/no-tree-scev-cprop-vect-iv-1.c | 0 .../vect/no-tree-scev-cprop-vect-iv-2.c | 0 .../vect/no-tree-scev-cprop-vect-iv-3.c | 0 7 files changed, 122 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-1.c create mode 100644 gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c create mode 100644 gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-3.c delete mode 100644 gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-1.c delete mode 100644 gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-2.c delete mode 100644 gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-3.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 66a28e9bdfd..4d35334dd22 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2007-09-03 H.J. Lu + + * gcc.dg/vect/no-tree-scev-cprop-vect-iv-1.c: Restored. Moved + to ... + * gcc.dg/vect/no-scevccp-vect-iv-1.c: New test. + * gcc.dg/vect/no-tree-scev-cprop-vect-iv-2.c: Restored. Moved + to ... + * gcc.dg/vect/no-scevccp-vect-iv-2.c: New test. + * gcc.dg/vect/no-tree-scev-cprop-vect-iv-3.c: Restored. Moved + to ... + * gcc.dg/vect/no-scevccp-vect-iv-3.c: New test. + 2007-09-03 Jesper Nilsson * gcc.target/cris/builtin_bswap_v3.c: New testcase. diff --git a/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-1.c b/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-1.c new file mode 100644 index 00000000000..60c6ff59b0f --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-1.c @@ -0,0 +1,34 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#include "tree-vect.h" + +#define N 26 + +int main1 (int X) +{ + int s = X; + int i; + + /* vectorization of reduction with induction. + Need -fno-tree-scev-cprop or else the loop is eliminated. */ + for (i = 0; i < N; i++) + s += i; + + return s; +} + +int main (void) +{ + int s; + check_vect (); + + s = main1 (3); + if (s != 328) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c b/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c new file mode 100644 index 00000000000..5e1c7b89bac --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c @@ -0,0 +1,49 @@ +/* { dg-require-effective-target vect_int } */ + +#include +#include "tree-vect.h" + +#define N 16 + +int main1 () +{ + int arr1[N]; + int k = 0; + int m = 3, i = 0; + + /* Vectorization of induction that is used after the loop. + Currently vectorizable because scev_ccp disconnects the + use-after-the-loop from the iv def inside the loop. */ + + do { + k = k + 2; + arr1[i] = k; + m = m + k; + i++; + } while (i < N); + + /* check results: */ + for (i = 0; i < N; i++) + { + if (arr1[i] != 2+2*i) + abort (); + } + + return m + k; +} + +int main (void) +{ + int res; + + check_vect (); + + res = main1 (); + if (res != 32 + 275) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-3.c b/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-3.c new file mode 100644 index 00000000000..cdfaa6ff493 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-3.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_int } */ + +#include +#include "tree-vect.h" + +#define N 26 + +unsigned int main1 () +{ + unsigned short i; + unsigned int intsum = 0; + + /* vectorization of reduction with induction, and widenning sum: + sum shorts into int. + Need -fno-tree-scev-cprop or else the loop is eliminated. */ + for (i = 0; i < N; i++) + { + intsum += i; + } + + return intsum; +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_sum_hi_to_si } } } */ +/* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" { target vect_widen_sum_hi_to_si } } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-1.c b/gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-1.c deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-2.c b/gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-2.c deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-3.c b/gcc/testsuite/gcc.dg/vect/no-tree-scev-cprop-vect-iv-3.c deleted file mode 100644 index e69de29bb2d..00000000000 -- 2.30.2