1 // { dg-additional-options "-fdump-tree-gimple" }
2 
3 // Remove the comments from the reduction test
4 // after the FE learns that reduction variables may appear in data clauses too.
5 
6 void
test()7 test ()
8 {
9   int a[100], i, j, z;
10 
11   // acc parallel
12 
13   #pragma acc parallel loop collapse (2)
14   for (i = 0; i < 100; i++)
15     for (j = 0; j < 10; j++)
16       ;
17 
18   #pragma acc parallel loop gang
19   for (i = 0; i < 100; i++)
20     ;
21 
22   #pragma acc parallel loop worker
23   for (i = 0; i < 100; i++)
24     for (j = 0; j < 10; j++)
25       ;
26 
27   #pragma acc parallel loop vector
28   for (i = 0; i < 100; i++)
29     for (j = 0; j < 10; j++)
30       ;
31 
32   #pragma acc parallel loop seq
33   for (i = 0; i < 100; i++)
34     for (j = 0; j < 10; j++)
35       ;
36 
37   #pragma acc parallel loop auto
38   for (i = 0; i < 100; i++)
39     for (j = 0; j < 10; j++)
40       ;
41 
42   #pragma acc parallel loop tile (2, 3)
43   for (i = 0; i < 100; i++)
44     for (j = 0; j < 10; j++)
45       ;
46 
47   #pragma acc parallel loop independent
48   for (i = 0; i < 100; i++)
49     ;
50 
51   #pragma acc parallel loop private (z)
52   for (i = 0; i < 100; i++)
53     z = 0;
54 
55 //  #pragma acc parallel loop reduction (+:z) copy (z)
56 //  for (i = 0; i < 100; i++)
57 //    ;
58 
59   // acc kernels
60 
61   #pragma acc kernels loop collapse (2)
62   for (i = 0; i < 100; i++)
63     for (j = 0; j < 10; j++)
64       ;
65 
66   #pragma acc kernels loop gang
67   for (i = 0; i < 100; i++)
68     ;
69 
70   #pragma acc kernels loop worker
71   for (i = 0; i < 100; i++)
72     for (j = 0; j < 10; j++)
73       ;
74 
75   #pragma acc kernels loop vector
76   for (i = 0; i < 100; i++)
77     for (j = 0; j < 10; j++)
78       ;
79 
80   #pragma acc kernels loop seq
81   for (i = 0; i < 100; i++)
82     for (j = 0; j < 10; j++)
83       ;
84 
85   #pragma acc kernels loop auto
86   for (i = 0; i < 100; i++)
87     for (j = 0; j < 10; j++)
88       ;
89 
90   #pragma acc kernels loop tile (2, 3)
91   for (i = 0; i < 100; i++)
92     for (j = 0; j < 10; j++)
93       ;
94 
95   #pragma acc kernels loop independent
96   for (i = 0; i < 100; i++)
97     ;
98 
99   #pragma acc kernels loop private (z)
100   for (i = 0; i < 100; i++)
101     z = 0;
102 
103 //  #pragma acc kernels loop reduction (+:z) copy (z)
104 //  for (i = 0; i < 100; i++)
105 //    ;
106 }
107 
108 // { dg-final { scan-tree-dump-times "acc loop collapse.2. private.j. private.i" 2 "gimple" } }
109 // { dg-final { scan-tree-dump-times "acc loop gang" 2 "gimple" } }
110 // { dg-final { scan-tree-dump-times "acc loop worker" 2 "gimple" } }
111 // { dg-final { scan-tree-dump-times "acc loop vector" 2 "gimple" } }
112 // { dg-final { scan-tree-dump-times "acc loop seq" 2 "gimple" } }
113 // { dg-final { scan-tree-dump-times "acc loop auto" 2 "gimple" } }
114 // { dg-final { scan-tree-dump-times "acc loop tile.2, 3" 2 "gimple" } }
115 // { dg-final { scan-tree-dump-times "acc loop independent private.i" 2 "gimple" } }
116 // { dg-final { scan-tree-dump-times "private.z" 2 "gimple" } }
117