aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/goacc/combined-directives.c
blob: 51232485fec8a8fef6f5477ba6130b302f84dbb8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
// { dg-additional-options "-fdump-tree-gimple" }

// Remove the comments from the reduction test
// after the FE learns that reduction variables may appear in data clauses too.

void
test ()
{
  int a[100], i, j, z;


  // acc parallel

  #pragma acc parallel loop collapse (2)
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc parallel loop gang
  for (i = 0; i < 100; i++)
    ;

  #pragma acc parallel loop worker
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc parallel loop vector
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc parallel loop seq
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc parallel loop auto
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc parallel loop tile (2, 3)
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc parallel loop independent
  for (i = 0; i < 100; i++)
    ;

  #pragma acc parallel loop private (z)
  for (i = 0; i < 100; i++)
    z = 0;

//  #pragma acc parallel loop reduction (+:z) copy (z)
//  for (i = 0; i < 100; i++)
//    ;


  // acc kernels

  #pragma acc kernels loop collapse (2)
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc kernels loop gang
  for (i = 0; i < 100; i++)
    ;

  #pragma acc kernels loop worker
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc kernels loop vector
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc kernels loop seq
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc kernels loop auto
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc kernels loop tile (2, 3)
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc kernels loop independent
  for (i = 0; i < 100; i++)
    ;

  #pragma acc kernels loop private (z)
  for (i = 0; i < 100; i++)
    z = 0;

//  #pragma acc kernels loop reduction (+:z) copy (z)
//  for (i = 0; i < 100; i++)
//    ;

  
  // acc serial

  #pragma acc serial loop collapse (2)
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc serial loop gang
  for (i = 0; i < 100; i++)
    ;

  #pragma acc serial loop worker
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc serial loop vector
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc serial loop seq
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc serial loop auto
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc serial loop tile (2, 3)
  for (i = 0; i < 100; i++)
    for (j = 0; j < 10; j++)
      ;

  #pragma acc serial loop independent
  for (i = 0; i < 100; i++)
    ;

  #pragma acc serial loop private (z)
  for (i = 0; i < 100; i++)
    z = 0;

//  #pragma acc serial loop reduction (+:z) copy (z)
//  for (i = 0; i < 100; i++)
//    ;
}


// { dg-final { scan-tree-dump-times "acc loop collapse.2. private.j. private.i" 3 "gimple" } }
// { dg-final { scan-tree-dump-times "acc loop gang" 3 "gimple" } }
// { dg-final { scan-tree-dump-times "acc loop worker" 3 "gimple" } }
// { dg-final { scan-tree-dump-times "acc loop vector" 3 "gimple" } }
// { dg-final { scan-tree-dump-times "acc loop seq" 3 "gimple" } }
// { dg-final { scan-tree-dump-times "acc loop auto" 3 "gimple" } }
// { dg-final { scan-tree-dump-times "acc loop tile.2, 3" 3 "gimple" } }
// { dg-final { scan-tree-dump-times "acc loop independent private.i" 3 "gimple" } }
// { dg-final { scan-tree-dump-times "private.z" 3 "gimple" } }