2018-06-09 Steven G. Kargl <kargl@gcc.gnu.org>
[official-gcc.git] / libgomp / testsuite / libgomp.hsa.c / pr69568.c
blob6262eee3e7108c5c0cea4fdfb35970d6a7fef1cb
1 /* PR hsa/69568 */
3 typedef float float2 __attribute__ ((vector_size (8)));
4 float2 *output;
6 void __attribute__((noinline, noclone))
7 foo (int n, float2 *a, int workgroup_size)
9 int i;
10 #pragma omp target map(from:a[:n]) firstprivate(n, workgroup_size)
11 #pragma omp teams thread_limit(workgroup_size)
12 #pragma omp distribute parallel for shared(a) firstprivate(n) private(i)
13 for (i = 0; i < n; i++)
14 { float2 v;
15 v[0] = i;
16 v[1] = 1+i;
17 a[i] = v;
21 int main (int argc, char **argv)
23 int n = 32;
24 float2 *a = __builtin_malloc (sizeof (float2) * n);
25 int i;
27 __builtin_memset (a, 0, sizeof (float2) * n);
28 foo (n, a, 32);
29 for (i = 0; i < n; i++)
31 float2 v = a[i];
32 if (__builtin_abs (v[0] - i) > 0.1
33 || __builtin_abs (v[1] - i - 1) > 0.1)
35 __builtin_abort ();
36 return 1;
39 return 0;