1 /* { dg-do compile }  */
2 /* { dg-additional-options "-O2" }  */
3 
4 #include "../../../../include/gomp-constants.h"
5 
6 #pragma acc routine
7 int
foo(void)8 foo (void)
9 {
10   int res;
11 
12   __builtin_goacc_parlevel_id (GOMP_DIM_GANG);
13   __builtin_goacc_parlevel_id (GOMP_DIM_WORKER);
14   __builtin_goacc_parlevel_id (GOMP_DIM_VECTOR);
15 
16   __builtin_goacc_parlevel_size (GOMP_DIM_GANG);
17   __builtin_goacc_parlevel_size (GOMP_DIM_WORKER);
18   __builtin_goacc_parlevel_size (GOMP_DIM_VECTOR);
19 
20   res += __builtin_goacc_parlevel_id (GOMP_DIM_GANG);
21   res += __builtin_goacc_parlevel_id (GOMP_DIM_WORKER);
22   res += __builtin_goacc_parlevel_id (GOMP_DIM_VECTOR);
23 
24   res += __builtin_goacc_parlevel_size (GOMP_DIM_GANG);
25   res += __builtin_goacc_parlevel_size (GOMP_DIM_WORKER);
26   res += __builtin_goacc_parlevel_size (GOMP_DIM_VECTOR);
27 
28   return res;
29 }
30 
31 void
foo2(void)32 foo2 (void)
33 {
34   int res;
35 
36 #pragma acc parallel
37   {
38     __builtin_goacc_parlevel_id (GOMP_DIM_GANG);
39     __builtin_goacc_parlevel_id (GOMP_DIM_WORKER);
40     __builtin_goacc_parlevel_id (GOMP_DIM_VECTOR);
41 
42     __builtin_goacc_parlevel_size (GOMP_DIM_GANG);
43     __builtin_goacc_parlevel_size (GOMP_DIM_WORKER);
44     __builtin_goacc_parlevel_size (GOMP_DIM_VECTOR);
45 
46     res += __builtin_goacc_parlevel_id (GOMP_DIM_GANG);
47     res += __builtin_goacc_parlevel_id (GOMP_DIM_WORKER);
48     res += __builtin_goacc_parlevel_id (GOMP_DIM_VECTOR);
49 
50     res += __builtin_goacc_parlevel_size (GOMP_DIM_GANG);
51     res += __builtin_goacc_parlevel_size (GOMP_DIM_WORKER);
52     res += __builtin_goacc_parlevel_size (GOMP_DIM_VECTOR);
53   }
54 }
55 
56 void
foo3(void)57 foo3 (void)
58 {
59   int res;
60 
61 #pragma acc kernels
62   {
63     __builtin_goacc_parlevel_id (GOMP_DIM_GANG);
64     __builtin_goacc_parlevel_id (GOMP_DIM_WORKER);
65     __builtin_goacc_parlevel_id (GOMP_DIM_VECTOR);
66 
67     __builtin_goacc_parlevel_size (GOMP_DIM_GANG);
68     __builtin_goacc_parlevel_size (GOMP_DIM_WORKER);
69     __builtin_goacc_parlevel_size (GOMP_DIM_VECTOR);
70 
71     res += __builtin_goacc_parlevel_id (GOMP_DIM_GANG);
72     res += __builtin_goacc_parlevel_id (GOMP_DIM_WORKER);
73     res += __builtin_goacc_parlevel_id (GOMP_DIM_VECTOR);
74 
75     res += __builtin_goacc_parlevel_size (GOMP_DIM_GANG);
76     res += __builtin_goacc_parlevel_size (GOMP_DIM_WORKER);
77     res += __builtin_goacc_parlevel_size (GOMP_DIM_VECTOR);
78   }
79 }
80