1/* { dg-options "-std=gnu99 -fopenmp" } */
2
3extern void abort ();
4
5#define M(x, y, z) O(x, y, z)
6#define O(x, y, z) x ## _ ## y ## _ ## z
7
8#pragma omp declare target
9
10#define F distribute
11#define G d
12#define S
13#define N(x) M(x, G, normal)
14#include "for-2.h"
15#undef S
16#undef N
17#undef F
18#undef G
19
20#define F distribute
21#define G d_ds128
22#define S dist_schedule(static, 128)
23#define N(x) M(x, G, normal)
24#include "for-2.h"
25#undef S
26#undef N
27#undef F
28#undef G
29
30#define F distribute simd
31#define G ds
32#define S
33#define N(x) M(x, G, normal)
34#include "for-2.h"
35#undef S
36#undef N
37#undef F
38#undef G
39
40#define F distribute simd
41#define G ds_ds128
42#define S dist_schedule(static, 128)
43#define N(x) M(x, G, normal)
44#include "for-2.h"
45#undef S
46#undef N
47#undef F
48#undef G
49
50#define F distribute parallel for
51#define G dpf
52#include "for-1.h"
53#undef F
54#undef G
55
56#define F distribute parallel for dist_schedule(static, 128)
57#define G dpf_ds128
58#include "for-1.h"
59#undef F
60#undef G
61
62#define F distribute parallel for simd
63#define G dpfs
64#include "for-1.h"
65#undef F
66#undef G
67
68#define F distribute parallel for simd dist_schedule(static, 128)
69#define G dpfs_ds128
70#include "for-1.h"
71#undef F
72#undef G
73
74#pragma omp end declare target
75
76int
77main ()
78{
79  int err = 0;
80  #pragma omp target teams reduction(|:err)
81    {
82      err |= test_d_normal ();
83      err |= test_d_ds128_normal ();
84      err |= test_ds_normal ();
85      err |= test_ds_ds128_normal ();
86      err |= test_dpf_static ();
87      err |= test_dpf_static32 ();
88      err |= test_dpf_auto ();
89      err |= test_dpf_guided32 ();
90      err |= test_dpf_runtime ();
91      err |= test_dpf_ds128_static ();
92      err |= test_dpf_ds128_static32 ();
93      err |= test_dpf_ds128_auto ();
94      err |= test_dpf_ds128_guided32 ();
95      err |= test_dpf_ds128_runtime ();
96      err |= test_dpfs_static ();
97      err |= test_dpfs_static32 ();
98      err |= test_dpfs_auto ();
99      err |= test_dpfs_guided32 ();
100      err |= test_dpfs_runtime ();
101      err |= test_dpfs_ds128_static ();
102      err |= test_dpfs_ds128_static32 ();
103      err |= test_dpfs_ds128_auto ();
104      err |= test_dpfs_ds128_guided32 ();
105      err |= test_dpfs_ds128_runtime ();
106    }
107  if (err)
108    abort ();
109  return 0;
110}
111