aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg
diff options
context:
space:
mode:
authorSebastian Pop <sebpop@gmail.com>2009-12-23 07:51:19 +0000
committerSebastian Pop <spop@gcc.gnu.org>2009-12-23 07:51:19 +0000
commit1b3abda87deea44c55a7f5ad342f671d87775a8a (patch)
treea42beddafc6bd99cf71c189c67d72ba17d42e823 /gcc/testsuite/gcc.dg
parenta84a556d9739787b345228babd3e023b245df79d (diff)
downloadgcc-1b3abda87deea44c55a7f5ad342f671d87775a8a.zip
gcc-1b3abda87deea44c55a7f5ad342f671d87775a8a.tar.gz
gcc-1b3abda87deea44c55a7f5ad342f671d87775a8a.tar.bz2
Add missing testcases.
2009-12-23 Sebastian Pop <sebpop@gmail.com> * g++.dg/graphite/id-1.C: New. * g++.dg/graphite/pr41305.C: New. * gcc.dg/graphite/id-16.c: New. * gcc.dg/graphite/interchange-10.c: New. * gcc.dg/graphite/interchange-11.c: New. * gcc.dg/graphite/interchange-mvt.c: New. * gcc.dg/graphite/pr40281.c: New. * gcc.dg/graphite/run-id-2.c: New. * gcc.dg/graphite/scop-dsyr2k.c: New. * gcc.dg/graphite/scop-dsyrk.c: New. * gcc.dg/graphite/scop-mvt.c: New. * gcc.dg/graphite/scop-sor.c: New. * gfortran.dg/graphite/id-18.f90: New. * gfortran.dg/graphite/interchange-3.f90: New. * gfortran.dg/graphite/pr42050.f90: New. * testsuite/libgomp.graphite/pr4118.c: New. From-SVN: r155424
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r--gcc/testsuite/gcc.dg/graphite/id-16.c44
-rw-r--r--gcc/testsuite/gcc.dg/graphite/interchange-10.c19
-rw-r--r--gcc/testsuite/gcc.dg/graphite/interchange-11.c18
-rw-r--r--gcc/testsuite/gcc.dg/graphite/interchange-mvt.c24
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr40281.c12
-rw-r--r--gcc/testsuite/gcc.dg/graphite/run-id-2.c28
-rw-r--r--gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c21
-rw-r--r--gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c22
-rw-r--r--gcc/testsuite/gcc.dg/graphite/scop-mvt.c24
-rw-r--r--gcc/testsuite/gcc.dg/graphite/scop-sor.c18
10 files changed, 230 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/graphite/id-16.c b/gcc/testsuite/gcc.dg/graphite/id-16.c
new file mode 100644
index 0000000..faa685f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/id-16.c
@@ -0,0 +1,44 @@
+int transformation[(2*19 - 1) * (2*19 - 1)][8];
+
+const int transformation2[8][2][2] = {
+ {{1, 0}, {0, 1}},
+ {{0, 1}, {-1, 0}},
+ {{-1, 0}, {0, -1}},
+ {{0, -1}, {1, 0}},
+ {{0, -1}, {-1, 0}},
+ {{-1, 0}, {0, 1}},
+ {{0, 1}, {1, 0}},
+ {{1, 0}, {0, -1}}
+};
+
+void
+transformation_init (void)
+{
+ int k;
+ int dx;
+ int dy;
+
+ for (k = 0; k < 8; k++)
+ {
+ for (dy = -19 + 1; dy <= 19 - 1; dy++)
+ {
+ for (dx = -19 + 1; dx <= 19 - 1; dx++)
+ {
+ int tx;
+ int ty;
+ do
+ {
+ *&tx =
+ transformation2[k][0][0] * (dx) +
+ transformation2[k][0][1] * (dy);
+ *&ty =
+ transformation2[k][1][0] * (dx) +
+ transformation2[k][1][1] * (dy);
+ }
+ while (0);
+ transformation[((dy + 19 - 1) * (2 * 19 - 1) +
+ (dx + 19 - 1))][k] = ((tx) * (19 + 1) + (ty));
+ }
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-10.c b/gcc/testsuite/gcc.dg/graphite/interchange-10.c
new file mode 100644
index 0000000..0cd22a3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/interchange-10.c
@@ -0,0 +1,19 @@
+double u[1782225];
+int foo(int N, int *res)
+{
+ int i, j;
+ double sum = 0.0;
+
+ for (i = 0; i < N; i++)
+ for (j = 0; j < N; j++)
+ sum = sum + u[i + 1335 * j];
+
+ for (i = 0; i < N; i++)
+ for (j = 0; j < N; j++)
+ sum = sum + u[i + 1335 * j];
+
+ *res = sum + N;
+}
+
+/* { dg-final { scan-tree-dump-times "will be interchanged" 2 "graphite" } } */
+/* { dg-final { cleanup-tree-dump "graphite" } } */
diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-11.c b/gcc/testsuite/gcc.dg/graphite/interchange-11.c
new file mode 100644
index 0000000..dea8df7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/interchange-11.c
@@ -0,0 +1,18 @@
+double u[1782225];
+int foo(int N, int *res)
+{
+ int i, j;
+ double sum = 0.0;
+
+ for (i = 0; i < 1335; i++)
+ {
+ for (j = 0; j < 1335; j++)
+ sum = sum + u[i + 1335 * j];
+
+ u[1336 * i] *= 2;
+ }
+ *res = sum;
+}
+
+/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */
+/* { dg-final { cleanup-tree-dump "graphite" } } */
diff --git a/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c b/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c
new file mode 100644
index 0000000..915a7ac
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c
@@ -0,0 +1,24 @@
+#define NMAX 2000
+
+static double x1[NMAX], x2[NMAX], a[NMAX][NMAX], y_1[NMAX], y_2[NMAX];
+
+void mvt(long N) {
+
+ int i,j;
+
+ for (i=0; i<N; i++) {
+ for (j=0; j<N; j++) {
+ x1[i] = x1[i] + a[i][j] * y_1[j];
+ }
+ }
+
+ for (i=0; i<N; i++) {
+ for (j=0; j<N; j++) {
+ x2[i] = x2[i] + a[j][i] * y_2[j];
+ }
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */
+/* { dg-final { cleanup-tree-dump "graphite" } } */
+
diff --git a/gcc/testsuite/gcc.dg/graphite/pr40281.c b/gcc/testsuite/gcc.dg/graphite/pr40281.c
new file mode 100644
index 0000000..64b9a4c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr40281.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fprefetch-loop-arrays" } */
+
+void foo(int);
+void bar(int n)
+{
+ int a[2], i, j = 0;
+
+ for (i = 0; i < 2; i += j+1)
+ for (j = 0; j < (n ? 1 : 2); ++j)
+ foo(a[i] + a[j]);
+}
diff --git a/gcc/testsuite/gcc.dg/graphite/run-id-2.c b/gcc/testsuite/gcc.dg/graphite/run-id-2.c
new file mode 100644
index 0000000..acaa14c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/run-id-2.c
@@ -0,0 +1,28 @@
+int a[1] = {1};
+
+static int __attribute__((noinline)) foo(int n)
+{
+ int i, c = 0;
+ for (i = 0; i < n; i++)
+ c += a[i];
+ return c;
+}
+
+int b[2] = {2, 3};
+
+static int __attribute__((noinline)) bar(int n)
+{
+ int i, c = 0;
+ for (i = 0; i < n; i++)
+ c += b[i];
+ return c;
+}
+
+int main()
+{
+ return
+ foo(0) != 0 || foo(1) != 1 || bar(0) != 0 || bar(1) != 2 || bar(2) != 5;
+}
+
+/* { dg-do run } */
+/* { dg-final { cleanup-tree-dump "graphite" } } */
diff --git a/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c b/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c
new file mode 100644
index 0000000..f5d1df1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c
@@ -0,0 +1,21 @@
+#define NMAX 3000
+
+static double a[NMAX][NMAX], b[NMAX][NMAX], c[NMAX][NMAX];
+
+void dsyr2k(long N) {
+ int i,j,k;
+
+#pragma scop
+ for (i=0; i<N; i++) {
+ for (j=0; j<N; j++) {
+ for (k=j; k<N; k++) {
+ c[j][k] += a[i][j] * b[i][k] + b[i][j] * a[i][k];
+ }
+ }
+ }
+#pragma endscop
+}
+
+/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */
+/* { dg-final { cleanup-tree-dump "graphite" } } */
+
diff --git a/gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c b/gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c
new file mode 100644
index 0000000..a7bc5c4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c
@@ -0,0 +1,22 @@
+#define NMAX 3000
+#define MEASURE_TIME 1
+
+static double a[NMAX][NMAX], c[NMAX][NMAX];
+
+void dsyrk(long N)
+{
+ int i,j,k;
+
+#pragma scop
+ for (i=0; i<N; i++) {
+ for (j=0; j<N; j++) {
+ for (k=j; k<N; k++) {
+ c[j][k] += a[i][j] * a[i][k];
+ }
+ }
+ }
+#pragma endscop
+}
+
+/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" } } */
+/* { dg-final { cleanup-tree-dump "graphite" } } */
diff --git a/gcc/testsuite/gcc.dg/graphite/scop-mvt.c b/gcc/testsuite/gcc.dg/graphite/scop-mvt.c
new file mode 100644
index 0000000..1181cda
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/scop-mvt.c
@@ -0,0 +1,24 @@
+#define NMAX 2000
+
+static double x1[NMAX], x2[NMAX], a[NMAX][NMAX], y_1[NMAX], y_2[NMAX];
+
+void mvt(long N) {
+
+ int i,j;
+
+ for (i=0; i<N; i++) {
+ for (j=0; j<N; j++) {
+ x1[i] = x1[i] + a[i][j] * y_1[j];
+ }
+ }
+
+ for (i=0; i<N; i++) {
+ for (j=0; j<N; j++) {
+ x2[i] = x2[i] + a[j][i] * y_2[j];
+ }
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite" } } */
+/* { dg-final { cleanup-tree-dump "graphite" } } */
+
diff --git a/gcc/testsuite/gcc.dg/graphite/scop-sor.c b/gcc/testsuite/gcc.dg/graphite/scop-sor.c
new file mode 100644
index 0000000..32c1207
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/scop-sor.c
@@ -0,0 +1,18 @@
+#define SIZE 10000
+
+static double P[SIZE][SIZE];
+
+void sor(int N1, int N2){
+ int i, j, k;
+
+#pragma scop
+ for(i=1; i<N1-1; i++) {
+ for(j=1; j<N2-1; j++) {
+ P[i][j] = (P[i][j] + P[i][j-1] + P[i][j+1] + P[i-1][j] + P[i+1][j]) / 5;
+ }
+ }
+#pragma endscop
+}
+
+/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" } } */
+/* { dg-final { cleanup-tree-dump "graphite" } } */