2018-11-11 Richard Biener <rguenther@suse.de>
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c / nested-function-2.c
blob2c3f3feb7f84c1b423ec257d40c1100b8fc53831
1 /* Exercise nested function decomposition, gcc/tree-nested.c. */
3 int
4 main (void)
6 int p1 = 2, p2 = 6, p3 = 0, p4 = 4, p5 = 13, p6 = 18, p7 = 1, p8 = 1, p9 = 1;
8 void test1 ()
10 int i, j, k;
11 int a[4][4][4];
13 __builtin_memset (a, '\0', sizeof (a));
15 #pragma acc parallel
16 #pragma acc loop collapse(3)
17 for (i = 1; i <= 3; i++)
18 for (j = 1; j <= 3; j++)
19 for (k = 2; k <= 3; k++)
20 a[i][j][k] = 1;
22 for (i = 1; i <= 3; i++)
23 for (j = 1; j <= 3; j++)
24 for (k = 2; k <= 3; k++)
25 if (a[i][j][k] != 1)
26 __builtin_abort();
29 void test2 (int v1, int v2, int v3, int v4, int v5, int v6)
31 int i, j, k, l = 0, r = 0;
32 int a[7][5][19];
33 int b[7][5][19];
35 __builtin_memset (a, '\0', sizeof (a));
36 __builtin_memset (b, '\0', sizeof (b));
38 #pragma acc parallel reduction (||:l)
39 #pragma acc loop reduction (||:l) collapse(3)
40 for (i = v1; i <= v2; i++)
41 for (j = v3; j <= v4; j++)
42 for (k = v5; k <= v6; k++)
44 l = l || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
45 if (!l)
46 a[i][j][k] += 1;
49 for (i = v1; i <= v2; i++)
50 for (j = v3; j <= v4; j++)
51 for (k = v5; k <= v6; k++)
53 r = r || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
54 if (!r)
55 b[i][j][k] += 1;
58 if (l != r)
59 __builtin_abort ();
61 for (i = v1; i <= v2; i++)
62 for (j = v3; j <= v4; j++)
63 for (k = v5; k <= v6; k++)
64 if (b[i][j][k] != a[i][j][k])
65 __builtin_abort ();
68 void test3 (int v1, int v2, int v3, int v4, int v5, int v6, int v7, int v8,
69 int v9)
71 int i, j, k, l = 0, r = 0;
72 int a[7][5][19];
73 int b[7][5][19];
75 __builtin_memset (a, '\0', sizeof (a));
76 __builtin_memset (b, '\0', sizeof (b));
78 #pragma acc parallel reduction (||:l)
79 #pragma acc loop reduction (||:l) collapse(3)
80 for (i = v1; i <= v2; i += v7)
81 for (j = v3; j <= v4; j += v8)
82 for (k = v5; k <= v6; k += v9)
84 l = l || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
85 if (!l)
86 a[i][j][k] += 1;
89 for (i = v1; i <= v2; i += v7)
90 for (j = v3; j <= v4; j += v8)
91 for (k = v5; k <= v6; k += v9)
93 r = r || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
94 if (!r)
95 b[i][j][k] += 1;
98 if (l != r)
99 __builtin_abort ();
101 for (i = v1; i <= v2; i++)
102 for (j = v3; j <= v4; j++)
103 for (k = v5; k <= v6; k++)
104 if (b[i][j][k] != a[i][j][k])
105 __builtin_abort ();
108 void test4 ()
110 int i, j, k, l = 0, r = 0;
111 int a[7][5][19];
112 int b[7][5][19];
113 int v1 = p1, v2 = p2, v3 = p3, v4 = p4, v5 = p5, v6 = p6, v7 = p7, v8 = p8,
114 v9 = p9;
116 __builtin_memset (a, '\0', sizeof (a));
117 __builtin_memset (b, '\0', sizeof (b));
119 #pragma acc parallel reduction (||:l)
120 #pragma acc loop reduction (||:l) collapse(3)
121 for (i = v1; i <= v2; i += v7)
122 for (j = v3; j <= v4; j += v8)
123 for (k = v5; k <= v6; k += v9)
125 l = l || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
126 if (!l)
127 a[i][j][k] += 1;
130 for (i = v1; i <= v2; i += v7)
131 for (j = v3; j <= v4; j += v8)
132 for (k = v5; k <= v6; k += v9)
134 r = r || i < 2 || i > 6 || j < 0 || j > 4 || k < 13 || k > 18;
135 if (!r)
136 b[i][j][k] += 1;
139 if (l != r)
140 __builtin_abort ();
142 for (i = v1; i <= v2; i++)
143 for (j = v3; j <= v4; j++)
144 for (k = v5; k <= v6; k++)
145 if (b[i][j][k] != a[i][j][k])
146 __builtin_abort ();
149 test1 ();
150 test2 (p1, p2, p3, p4, p5, p6);
151 test3 (p1, p2, p3, p4, p5, p6, p7, p8, p9);
152 test4 ();
154 return 0;