]>
Commit | Line | Data |
---|---|---|
8067caa8 | 1 | /* { dg-do compile } */ |
54bac0ce | 2 | /* { dg-options "-fopenmp -std=c23 -ffat-lto-objects -fdump-tree-gimple" } */ |
8067caa8 JJ |
3 | |
4 | extern void abort (); | |
5 | ||
6 | [[omp::decl (declare simd, linear (l))]] extern int f1 (int l); | |
7 | extern int f2 (int), f3 [[omp::decl (declare simd, uniform (m))]] (int m), f4 (int), z; | |
8 | [[omp::decl (declare simd, linear (l), simdlen(4))]] extern int f5 [[omp::decl (declare simd uniform (l) simdlen (8) notinbranch)]] (int l); | |
9 | ||
10 | int | |
11 | f1 (int l) | |
12 | { | |
13 | return l; | |
14 | } | |
15 | ||
16 | /* { dg-final { scan-assembler-times "_ZGVbM4l_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
17 | /* { dg-final { scan-assembler-times "_ZGVbN4l_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
18 | /* { dg-final { scan-assembler-times "_ZGVcM4l_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
19 | /* { dg-final { scan-assembler-times "_ZGVcN4l_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
20 | /* { dg-final { scan-assembler-times "_ZGVdM8l_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
21 | /* { dg-final { scan-assembler-times "_ZGVdN8l_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
22 | /* { dg-final { scan-assembler-times "_ZGVeM16l_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
23 | /* { dg-final { scan-assembler-times "_ZGVeN16l_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
24 | ||
25 | int | |
26 | f2 (int l) | |
27 | { | |
28 | return l + 1; | |
29 | } | |
30 | ||
31 | /* { dg-final { scan-assembler-not "_ZGV\[a-zA-Z0-9]_f2:" { target { i?86-*-* x86_64-*-* } } } } */ | |
32 | ||
33 | int | |
34 | f3 (int l) | |
35 | { | |
36 | return l + 2; | |
37 | } | |
38 | ||
39 | /* { dg-final { scan-assembler-times "_ZGVbM4u_f3:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
40 | /* { dg-final { scan-assembler-times "_ZGVbN4u_f3:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
41 | /* { dg-final { scan-assembler-times "_ZGVcM4u_f3:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
42 | /* { dg-final { scan-assembler-times "_ZGVcN4u_f3:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
43 | /* { dg-final { scan-assembler-times "_ZGVdM8u_f3:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
44 | /* { dg-final { scan-assembler-times "_ZGVdN8u_f3:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
45 | /* { dg-final { scan-assembler-times "_ZGVeM16u_f3:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
46 | /* { dg-final { scan-assembler-times "_ZGVeN16u_f3:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
47 | ||
48 | int | |
49 | f4 (int l) | |
50 | { | |
51 | return l + 3; | |
52 | } | |
53 | ||
54 | /* { dg-final { scan-assembler-not "_ZGV\[a-zA-Z0-9]_f4:" { target { i?86-*-* x86_64-*-* } } } } */ | |
55 | ||
56 | int | |
57 | f5 (int l) | |
58 | { /* { dg-warning "GCC does not currently support simdlen 8 for type 'int'" "" { target aarch64*-*-* } .-1 } */ | |
59 | return l + 4; | |
60 | } | |
61 | ||
62 | /* { dg-final { scan-assembler-times "_ZGVbM4l_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
63 | /* { dg-final { scan-assembler-times "_ZGVbN4l_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
64 | /* { dg-final { scan-assembler-times "_ZGVcM4l_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
65 | /* { dg-final { scan-assembler-times "_ZGVcN4l_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
66 | /* { dg-final { scan-assembler-times "_ZGVdM4l_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
67 | /* { dg-final { scan-assembler-times "_ZGVdN4l_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
68 | /* { dg-final { scan-assembler-times "_ZGVeM4l_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
69 | /* { dg-final { scan-assembler-times "_ZGVeN4l_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
70 | /* { dg-final { scan-assembler-times "_ZGVbN8u_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
71 | /* { dg-final { scan-assembler-times "_ZGVcN8u_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
72 | /* { dg-final { scan-assembler-times "_ZGVdN8u_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
73 | /* { dg-final { scan-assembler-times "_ZGVeN8u_f5:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
74 | /* { dg-final { scan-assembler-not "_ZGV\[bcde]M8u_f5:" { target { i?86-*-* x86_64-*-* } } } } */ | |
75 | ||
76 | [[omp::decl (declare simd, linear (l), simdlen(4), notinbranch), | |
77 | omp::decl (declare simd, uniform (l), simdlen(4), inbranch)]] | |
78 | int | |
79 | f6 [[omp::decl (declare simd uniform (l) simdlen (8), notinbranch), | |
80 | omp::decl (declare simd linear (l) simdlen (8) inbranch)]] (int l) | |
81 | { /* { dg-warning "GCC does not currently support simdlen 8 for type 'int'" "" { target aarch64*-*-* } .-2 } */ | |
82 | return l + 5; | |
83 | } | |
84 | ||
85 | /* { dg-final { scan-assembler-times "_ZGVbM4u_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
86 | /* { dg-final { scan-assembler-times "_ZGVbN4l_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
87 | /* { dg-final { scan-assembler-times "_ZGVbM8l_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
88 | /* { dg-final { scan-assembler-times "_ZGVbN8u_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
89 | /* { dg-final { scan-assembler-times "_ZGVcM4u_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
90 | /* { dg-final { scan-assembler-times "_ZGVcN4l_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
91 | /* { dg-final { scan-assembler-times "_ZGVcM8l_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
92 | /* { dg-final { scan-assembler-times "_ZGVcN8u_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
93 | /* { dg-final { scan-assembler-times "_ZGVdM4u_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
94 | /* { dg-final { scan-assembler-times "_ZGVdN4l_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
95 | /* { dg-final { scan-assembler-times "_ZGVdM8l_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
96 | /* { dg-final { scan-assembler-times "_ZGVdN8u_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
97 | /* { dg-final { scan-assembler-times "_ZGVeM4u_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
98 | /* { dg-final { scan-assembler-times "_ZGVeN4l_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
99 | /* { dg-final { scan-assembler-times "_ZGVeM8l_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
100 | /* { dg-final { scan-assembler-times "_ZGVeN8u_f6:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
101 | /* { dg-final { scan-assembler-not "_ZGV\[bcde]M4l_f6:" { target { i?86-*-* x86_64-*-* } } } } */ | |
102 | /* { dg-final { scan-assembler-not "_ZGV\[bcde]N4u_f6:" { target { i?86-*-* x86_64-*-* } } } } */ | |
103 | /* { dg-final { scan-assembler-not "_ZGV\[bcde]M8u_f6:" { target { i?86-*-* x86_64-*-* } } } } */ | |
104 | /* { dg-final { scan-assembler-not "_ZGV\[bcde]N8l_f6:" { target { i?86-*-* x86_64-*-* } } } } */ | |
105 | ||
106 | int | |
107 | f7 (int l) | |
108 | { | |
109 | return l + 6; | |
110 | } | |
111 | ||
112 | /* { dg-final { scan-assembler-not "_ZGV\[a-zA-Z0-9]_f7:" { target { i?86-*-* x86_64-*-* } } } } */ | |
113 | ||
114 | int | |
115 | f8 (int l) | |
116 | { | |
117 | return l + 7; | |
118 | } | |
119 | ||
120 | /* { dg-final { scan-assembler-not "_ZGV\[a-zA-Z0-9]_f8:" { target { i?86-*-* x86_64-*-* } } } } */ | |
121 | ||
122 | [[omp::decl (declare variant (f7), match (construct={parallel})), | |
123 | omp::decl (declare simd uniform (l), simdlen(4))]] | |
124 | int | |
125 | f9 [[omp::decl (declare simd uniform (l) simdlen (8)), | |
126 | omp::decl (declare variant (f8) match (construct={parallel,for}))]] (int l) | |
127 | { /* { dg-warning "GCC does not currently support simdlen 8 for type 'int'" "" { target aarch64*-*-* } .-2 } */ | |
128 | return l + 8; | |
129 | } | |
130 | ||
131 | /* { dg-final { scan-assembler-times "_ZGVbM4u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
132 | /* { dg-final { scan-assembler-times "_ZGVbN4u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
133 | /* { dg-final { scan-assembler-times "_ZGVcM4u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
134 | /* { dg-final { scan-assembler-times "_ZGVcN4u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
135 | /* { dg-final { scan-assembler-times "_ZGVdM4u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
136 | /* { dg-final { scan-assembler-times "_ZGVdN4u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
137 | /* { dg-final { scan-assembler-times "_ZGVeM4u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
138 | /* { dg-final { scan-assembler-times "_ZGVeN4u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
139 | /* { dg-final { scan-assembler-times "_ZGVbM8u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
140 | /* { dg-final { scan-assembler-times "_ZGVbN8u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
141 | /* { dg-final { scan-assembler-times "_ZGVcM8u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
142 | /* { dg-final { scan-assembler-times "_ZGVcN8u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
143 | /* { dg-final { scan-assembler-times "_ZGVdM8u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
144 | /* { dg-final { scan-assembler-times "_ZGVdN8u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
145 | /* { dg-final { scan-assembler-times "_ZGVeM8u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
146 | /* { dg-final { scan-assembler-times "_ZGVeN8u_f9:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
147 | ||
148 | int z; | |
149 | ||
150 | void | |
151 | test () | |
152 | { | |
153 | [[omp::directive (parallel)]] | |
154 | if (f9 (3) != 9) | |
155 | abort (); | |
156 | [[omp::directive (parallel for)]] | |
157 | for (int i = 0; i < 1; i++) | |
158 | if (f9 (4) != 11) | |
159 | abort (); | |
160 | if (f9 (5) != 13) | |
161 | abort (); | |
162 | } | |
163 | ||
164 | /* { dg-final { scan-tree-dump-times " = f7 \\\(3\\\);" 1 "gimple" } } */ | |
165 | /* { dg-final { scan-tree-dump-times " = f8 \\\(4\\\);" 1 "gimple" } } */ | |
166 | /* { dg-final { scan-tree-dump-times " = f9 \\\(5\\\);" 1 "gimple" } } */ | |
167 | ||
168 | int | |
169 | f10 (int x) | |
170 | { | |
171 | return x; | |
172 | } | |
173 | ||
174 | [[omp::decl (declare simd, notinbranch)]] int f10 (int); | |
175 | ||
176 | /* { dg-final { scan-assembler-times "_ZGVbN4v_f10:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
177 | /* { dg-final { scan-assembler-times "_ZGVcN4v_f10:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
178 | /* { dg-final { scan-assembler-times "_ZGVdN8v_f10:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
179 | /* { dg-final { scan-assembler-times "_ZGVeN16v_f10:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
180 | ||
181 | int | |
182 | f11 (int x) | |
183 | { | |
184 | return x + 1; | |
185 | } | |
186 | ||
187 | int f11 [[omp::decl (declare simd inbranch linear(x))]] (int x); | |
188 | ||
189 | /* { dg-final { scan-assembler-times "_ZGVbM4l_f11:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
190 | /* { dg-final { scan-assembler-times "_ZGVcM4l_f11:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
191 | /* { dg-final { scan-assembler-times "_ZGVdM8l_f11:" 1 { target { i?86-*-* x86_64-*-* } } } } */ | |
192 | /* { dg-final { scan-assembler-times "_ZGVeM16l_f11:" 1 { target { i?86-*-* x86_64-*-* } } } } */ |