aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/gomp/declare-variant-8.c
blob: 9cd706e896f9724f1e9cb24b30be361848000441 (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
/* { dg-do compile } */
/* { dg-additional-options "-fdump-tree-gimple" } */

void f01 (void);
#pragma omp declare variant (f01) match (user={condition(6 == 7)},implementation={vendor(gnu)})
void f02 (void);
void f03 (void);
#pragma omp declare variant (f03) match (user={condition(6 == 6)},implementation={atomic_default_mem_order(seq_cst)})
void f04 (void);
void f05 (void);
#pragma omp declare variant (f05) match (user={condition(1)},implementation={atomic_default_mem_order(relaxed)})
void f06 (void);
#pragma omp requires atomic_default_mem_order(seq_cst)
void f07 (void);
#pragma omp declare variant (f07) match (construct={parallel,for},device={kind("any")})
void f08 (void);
void f09 (void);
#pragma omp declare variant (f09) match (construct={parallel,for},implementation={vendor("gnu")})
void f10 (void);
void f11 (void);
#pragma omp declare variant (f11) match (construct={parallel,for})
void f12 (void);
void f13 (void);
#pragma omp declare variant (f13) match (construct={parallel,for})
void f14 (void);
#pragma omp declare target to (f13, f14)
void f15 (void);
#pragma omp declare variant (f15) match (implementation={vendor(llvm)})
void f16 (void);
void f17 (void);
#pragma omp declare variant (f17) match (construct={target,parallel})
void f18 (void);
void f19 (void);
#pragma omp declare variant (f19) match (construct={target,parallel})
void f20 (void);
void f21 (void);
#pragma omp declare variant (f21) match (construct={teams,parallel})
void f22 (void);
void f23 (void);
#pragma omp declare variant (f23) match (construct={teams,parallel,for})
void f24 (void);
void f25 (void);
#pragma omp declare variant (f25) match (construct={teams,parallel})
void f26 (void);
void f27 (void);
#pragma omp declare variant (f27) match (construct={teams,parallel,for})
void f28 (void);
void f29 (void);
#pragma omp declare variant (f29) match (implementation={vendor(gnu)})
void f30 (void);
void f31 (void);
#pragma omp declare variant (f31) match (construct={teams,parallel,for})
void f32 (void);
void f33 (void);
#pragma omp declare variant (f33) match (device={kind("any\0any")})	/* { dg-warning "unknown property '.any.000any.' of 'kind' selector" } */
void f34 (void);
void f35 (void);
#pragma omp declare variant (f35) match (implementation={vendor("gnu\0")})	/* { dg-warning "unknown property '.gnu.000.' of 'vendor' selector" } */
void f36 (void);

void
test1 (void)
{
  int i;
  f02 ();	/* { dg-final { scan-tree-dump-times "f02 \\\(\\\);" 1 "gimple" } } */
  f04 ();	/* { dg-final { scan-tree-dump-times "f03 \\\(\\\);" 1 "gimple" } } */
  f06 ();	/* { dg-final { scan-tree-dump-times "f06 \\\(\\\);" 1 "gimple" } } */
  #pragma omp parallel
  #pragma omp for
  for (i = 0; i < 1; i++)
    f08 ();	/* { dg-final { scan-tree-dump-times "f07 \\\(\\\);" 1 "gimple" } } */
  #pragma omp parallel for
  for (i = 0; i < 1; i++)
    f10 ();	/* { dg-final { scan-tree-dump-times "f09 \\\(\\\);" 1 "gimple" } } */
  #pragma omp for
  for (i = 0; i < 1; i++)
    #pragma omp parallel
    f12 ();	/* { dg-final { scan-tree-dump-times "f12 \\\(\\\);" 1 "gimple" } } */
  #pragma omp parallel
  #pragma omp target
  #pragma omp for
  for (i = 0; i < 1; i++)
    f14 ();	/* { dg-final { scan-tree-dump-times "f14 \\\(\\\);" 1 "gimple" } } */
  f16 ();	/* { dg-final { scan-tree-dump-times "f16 \\\(\\\);" 1 "gimple" } } */
  f34 ();	/* { dg-final { scan-tree-dump-times "f34 \\\(\\\);" 1 "gimple" } } */
  f36 ();	/* { dg-final { scan-tree-dump-times "f36 \\\(\\\);" 1 "gimple" } } */
}

#pragma omp declare target
void
test2 (void)
{
  #pragma omp parallel
  f18 ();	/* { dg-final { scan-tree-dump-times "f17 \\\(\\\);" 1 "gimple" } } */
}
#pragma omp end declare target

void test3 (void);
#pragma omp declare target to (test3)

void
test3 (void)
{
  #pragma omp parallel
  f20 ();	/* { dg-final { scan-tree-dump-times "f19 \\\(\\\);" 1 "gimple" } } */
}

void
f21 (void)
{
  int i;
  #pragma omp for
  for (i = 0; i < 1; i++)
    f24 ();	/* { dg-final { scan-tree-dump-times "f23 \\\(\\\);" 1 "gimple" } } */
}

void
f26 (void)
{
  int i;
  #pragma omp for
  for (i = 0; i < 1; i++)
    f28 ();	/* { dg-final { scan-tree-dump-times "f28 \\\(\\\);" 1 "gimple" } } */
}

void
f29 (void)
{
  int i;
  #pragma omp for
  for (i = 0; i < 1; i++)
    f32 ();	/* { dg-final { scan-tree-dump-times "f32 \\\(\\\);" 1 "gimple" } } */
}