blob: dd33b07361483e8f0bd702df125c61e3a3d1c1d1 [file] [log] [blame]
// { dg-do compile { target c++11 } }
typedef enum omp_allocator_handle_t
: __UINTPTR_TYPE__
{
omp_null_allocator = 0,
omp_default_mem_alloc = 1,
omp_large_cap_mem_alloc = 2,
omp_const_mem_alloc = 3,
omp_high_bw_mem_alloc = 4,
omp_low_lat_mem_alloc = 5,
omp_cgroup_mem_alloc = 6,
omp_pteam_mem_alloc = 7,
omp_thread_mem_alloc = 8,
__omp_allocator_handle_t_max__ = __UINTPTR_MAX__
} omp_allocator_handle_t;
typedef enum omp_sync_hint_t {
omp_sync_hint_none = 0x0,
omp_lock_hint_none = omp_sync_hint_none,
omp_sync_hint_uncontended = 0x1,
omp_lock_hint_uncontended = omp_sync_hint_uncontended,
omp_sync_hint_contended = 0x2,
omp_lock_hint_contended = omp_sync_hint_contended,
omp_sync_hint_nonspeculative = 0x4,
omp_lock_hint_nonspeculative = omp_sync_hint_nonspeculative,
omp_sync_hint_speculative = 0x8,
omp_lock_hint_speculative = omp_sync_hint_speculative
} omp_sync_hint_t;
typedef struct __attribute__((__aligned__ (sizeof (void *)))) omp_depend_t {
char __omp_depend_t__[2 * sizeof (void *)];
} omp_depend_t;
int t;
#pragma omp threadprivate (t)
#pragma omp declare target
int f, l, ll, r, r2;
void
foo (int d, int m, int i1, int i2, int p, int *idp, int s,
int nte, int tl, int nth, int g, int nta, int fi, int pp, int *q, int ntm)
{
[[omp::directive (distribute parallel for
private (p) firstprivate (f) collapse(1) dist_schedule(static, 16)
if (parallel: i2) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) order(concurrent) allocate (omp_default_mem_alloc:f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (distribute parallel for simd
private (p) firstprivate (f) collapse(1) dist_schedule(static, 16)
if (parallel: i2) if(simd: i1) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) nontemporal(ntm)
safelen(8) simdlen(4) aligned(q: 32) order(concurrent) allocate (omp_default_mem_alloc:f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (distribute simd
private (p) firstprivate (f) collapse(1) dist_schedule(static, 16)
safelen(8) simdlen(4) aligned(q: 32) reduction(+:r) if(i1) nontemporal(ntm)
order(concurrent) allocate (omp_default_mem_alloc:f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (distribute
private (p) firstprivate (f) collapse(1) dist_schedule(static, 16)
allocate (omp_default_mem_alloc:f) order(concurrent))]]
for (int i = 0; i < 64; i++)
ll++;
}
void
qux (int p)
{
[[omp::directive (loop bind(teams) order(concurrent)
private (p) lastprivate (l) collapse(1) reduction(+:r))]]
for (l = 0; l < 64; ++l)
ll++;
}
#pragma omp end declare target
void
baz (int d, int m, int i1, int i2, int p, int *idp, int s,
int nte, int tl, int nth, int g, int nta, int fi, int pp, int *q, int ntm)
{
[[omp::directive (distribute parallel for
private (p) firstprivate (f) collapse(1) dist_schedule(static, 16)
if (parallel: i2) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) copyin(t) allocate (p))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (distribute parallel for
private (p) firstprivate (f) collapse(1) dist_schedule(static, 16)
if (parallel: i2) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) order(concurrent) allocate (p))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (distribute parallel for simd
private (p) firstprivate (f) collapse(1) dist_schedule(static, 16)
if (parallel: i2) if(simd: i1) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) nontemporal(ntm)
safelen(8) simdlen(4) aligned(q: 32) copyin(t) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (distribute parallel for simd
private (p) firstprivate (f) collapse(1) dist_schedule(static, 16)
if (parallel: i2) if(simd: i1) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) nontemporal(ntm)
safelen(8) simdlen(4) aligned(q: 32) order(concurrent) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (distribute simd
private (p) firstprivate (f) collapse(1) dist_schedule(static, 16)
safelen(8) simdlen(4) aligned(q: 32) reduction(+:r) if(i1) nontemporal(ntm)
order(concurrent) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (loop bind(parallel) order(concurrent)
private (p) lastprivate (l) collapse(1) reduction(+:r))]]
for (l = 0; l < 64; ++l)
ll++;
}
void
bar (int d, int m, int i1, int i2, int i3, int p, int *idp, int hda, int s,
int nte, int tl, int nth, int g, int nta, int fi, int pp, int *q, int *dd, int ntm,
const char *msg, int n1, int n2)
{
[[omp::directive (nothing)]];
[[omp::directive (error at (execution) severity (warning) message (msg))]];
[[omp::directive (for simd
private (p) firstprivate (f) lastprivate (l) linear (ll:1) reduction(+:r) schedule(static, 4) collapse(1) nowait
safelen(8) simdlen(4) aligned(q: 32) nontemporal(ntm) if(i1) order(concurrent) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (for
private (p) firstprivate (f) lastprivate (l) linear (ll:1) reduction(+:r) schedule(static, 4) collapse(1) nowait
order(concurrent) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (simd
private (p) lastprivate (l) linear (ll:1) reduction(+:r) collapse(1) safelen(8) simdlen(4) aligned(q: 32)
nontemporal(ntm) if(i1) order(concurrent))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel for
private (p) firstprivate (f) if (parallel: i2) default(shared) shared(s) copyin(t) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) linear (ll:1) ordered schedule(static, 4) collapse(1) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel for
private (p) firstprivate (f) if (parallel: i2) default(shared) shared(s) copyin(t) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) linear (ll:1) schedule(static, 4) collapse(1) order(concurrent) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel for simd
private (p) firstprivate (f) if (i2) default(shared) shared(s) copyin(t) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) linear (ll:1) schedule(static, 4) collapse(1)
safelen(8) simdlen(4) aligned(q: 32) nontemporal(ntm) order(concurrent) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel sections
private (p) firstprivate (f) if (parallel: i2) default(shared) shared(s) copyin(t) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) allocate (f))]]
{
[[omp::directive (section)]]
{}
[[omp::sequence (omp::directive (section))]]
{}
}
[[omp::directive (sections private (p) firstprivate (f) reduction(+:r) lastprivate (l) allocate (f) nowait)]]
{
;
[[omp::sequence (sequence (directive (section)))]]
;
[[omp::directive (section)]]
{}
}
[[omp::directive (barrier)]];
[[omp::sequence (omp::directive (single private (p) firstprivate (f) allocate (f) nowait))]]
;
[[omp::sequence (directive (barrier))]];
[[omp::sequence (directive (parallel private (p)),
omp::directive (single copyprivate (p) firstprivate (f) allocate (f)))]]
p = 6;
[[omp::directive (target parallel
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
if (parallel: i2) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
nowait depend(inout: dd[0]) allocate (omp_default_mem_alloc:f) in_reduction(+:r2) has_device_addr (hda))]]
;
[[omp::directive (target parallel for
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
if (parallel: i2) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) linear (ll:1) ordered schedule(static, 4) collapse(1) nowait depend(inout: dd[0])
allocate (omp_default_mem_alloc:f) in_reduction(+:r2) has_device_addr (hda))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (target parallel for
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
if (parallel: i2) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) linear (ll:1) schedule(static, 4) collapse(1) nowait depend(inout: dd[0]) order(concurrent)
allocate (omp_default_mem_alloc:f) in_reduction(+:r2) has_device_addr (hda))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (omp::directive (target parallel for simd
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
if (parallel: i2) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) linear (ll:1) schedule(static, 4) collapse(1)
safelen(8) simdlen(4) aligned(q: 32) nowait depend(inout: dd[0]) nontemporal(ntm) if (simd: i3) order(concurrent)
allocate (omp_default_mem_alloc:f) in_reduction(+:r2) has_device_addr (hda)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (directive (target teams
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
shared(s) default(shared) reduction(+:r) num_teams(nte-1:nte) thread_limit(tl) nowait depend(inout: dd[0])
allocate (omp_default_mem_alloc:f) in_reduction(+:r2) has_device_addr (hda)))]]
;
[[omp::sequence (directive (target
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
nowait depend(inout: dd[0]) allocate (omp_default_mem_alloc:f) in_reduction(+:r2) has_device_addr (hda)))]]
;
[[omp::sequence (omp::directive (target teams distribute
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
shared(s) default(shared) reduction(+:r) num_teams(nte) thread_limit(tl) order(concurrent)
collapse(1) dist_schedule(static, 16) nowait depend(inout: dd[0]) allocate (omp_default_mem_alloc:f) in_reduction(+:r2)
has_device_addr (hda)))]]
for (int i = 0; i < 64; i++)
;
[[omp::directive (target teams distribute parallel for
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
shared(s) default(shared) reduction(+:r) num_teams(nte-1:nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16)
if (parallel: i2) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) nowait depend(inout: dd[0]) order(concurrent)
allocate (omp_default_mem_alloc:f) in_reduction(+:r2) has_device_addr (hda))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (target teams distribute parallel for simd
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
shared(s) default(shared) reduction(+:r) num_teams(nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16)
if (parallel: i2) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) order(concurrent)
safelen(8) simdlen(4) aligned(q: 32) nowait depend(inout: dd[0]) nontemporal(ntm) if (simd: i3)
allocate (omp_default_mem_alloc:f) in_reduction(+:r2) has_device_addr (hda))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (target teams distribute simd
device(d) map (tofrom: m) if (i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
shared(s) default(shared) reduction(+:r) num_teams(nte-1:nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16) order(concurrent)
safelen(8) simdlen(4) aligned(q: 32) nowait depend(inout: dd[0]) nontemporal(ntm)
allocate (omp_default_mem_alloc:f) in_reduction(+:r2) has_device_addr (hda))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (target simd
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
safelen(8) simdlen(4) lastprivate (l) linear(ll: 1) aligned(q: 32) reduction(+:r)
nowait depend(inout: dd[0]) nontemporal(ntm) if(simd:i3) order(concurrent)
allocate (omp_default_mem_alloc:f) in_reduction(+:r2) has_device_addr (hda))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (directive (taskgroup task_reduction(+:r2) allocate (r2)),
omp::directive (taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(taskloop: i1) if(simd: i2) final(fi) mergeable priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) reduction(default, +:r) in_reduction(+:r2) nontemporal(ntm)
order(concurrent) allocate (f)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (omp::directive (taskgroup task_reduction(+:r) allocate (r)),
directive (taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(i1) final(fi) mergeable nogroup priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) in_reduction(+:r) nontemporal(ntm)
order(concurrent) allocate (f)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (taskwait)]];
[[omp::directive (taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) num_tasks (nta) collapse(1) if(taskloop: i1) final(fi) priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) reduction(+:r) if (simd: i3) nontemporal(ntm)
order(concurrent) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (directive (taskgroup task_reduction(+:r2) allocate (r2)),
omp::directive (taskloop
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(taskloop: i1) final(fi) mergeable priority (pp)
reduction(default, +:r) in_reduction(+:r2) allocate (f)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (directive (taskgroup task_reduction(+:r2) allocate (r2)),
omp::directive (task
private (p) firstprivate (f) shared (s) default(shared) untied if(task: i1) final(fi) mergeable priority (pp)
in_reduction(+:r2) allocate (f)))]]
;
[[omp::directive (taskyield)]];
[[omp::directive (target data if (target data: i1) device(d) map (tofrom: m) use_device_ptr (q) use_device_addr (p))]]
;
[[omp::directive (target enter data if (target enter data: i1) device(d) map (to: m) depend(inout: dd[0]) nowait)]]
;
[[omp::directive (target exit data if (target exit data: i1) device(d) map (from: m) depend(inout: dd[0]) nowait)]]
;
[[omp::directive (target update if (target update: i1) device(d) to (m) depend(inout: dd[0]) nowait)]]
;
[[omp::directive (target update if (target update: i1) device(d) from (m) depend(inout: dd[0]) nowait)]]
;
[[omp::directive (taskwait)]];
[[omp::sequence (directive (target nowait depend(inout: dd[0]) in_reduction(+:r2)),
directive (teams distribute
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16) allocate (omp_default_mem_alloc: f) order(concurrent)))]]
for (int i = 0; i < 64; i++)
;
[[omp::directive (teams
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte-1:nte) thread_limit(tl)
allocate (omp_default_mem_alloc: f))]]
;
[[omp::sequence (omp::directive (target),
omp::directive (teams distribute parallel for
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16)
if (parallel: i2) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) order(concurrent) allocate (omp_default_mem_alloc: f)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (directive (target),
directive (teams distribute parallel for simd
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte-1:nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16)
if (parallel: i2) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) order(concurrent)
safelen(8) simdlen(4) aligned(q: 32) if (simd: i3) nontemporal(ntm)
allocate (omp_default_mem_alloc: f)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (directive (target),
directive (teams distribute simd
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16) order(concurrent)
safelen(8) simdlen(4) aligned(q: 32) if(i3) nontemporal(ntm)
allocate (omp_default_mem_alloc: f)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (teams distribute parallel for
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte-1:nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16)
if (parallel: i2) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) copyin(t) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (teams distribute parallel for
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16) order(concurrent)
if (parallel: i2) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (teams distribute parallel for simd
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte-1:nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16)
if (parallel: i2) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4)
safelen(8) simdlen(4) aligned(q: 32) if (simd: i3) nontemporal(ntm) copyin(t)
allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (teams distribute parallel for simd
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16)
if (parallel: i2) num_threads (nth) proc_bind(spread)
lastprivate (l) schedule(static, 4) order(concurrent)
safelen(8) simdlen(4) aligned(q: 32) if (simd: i3) nontemporal(ntm)
allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (teams distribute simd
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte-1:nte) thread_limit(tl)
collapse(1) dist_schedule(static, 16) order(concurrent)
safelen(8) simdlen(4) aligned(q: 32) if(i3) nontemporal(ntm) allocate(f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel master
private (p) firstprivate (f) if (parallel: i2) default(shared) shared(s) reduction(+:r)
num_threads (nth) proc_bind(spread) copyin(t) allocate (f))]]
;
[[omp::directive (parallel masked
private (p) firstprivate (f) if (parallel: i2) default(shared) shared(s) reduction(+:r)
num_threads (nth) proc_bind(spread) copyin(t) allocate (f) filter (d))]]
;
[[omp::directive (parallel
private (p) firstprivate (f) if (parallel: i2) default(shared) shared(s) reduction(+:r)
num_threads (nth) proc_bind(spread) copyin(t) allocate (f))]]
;
[[omp::sequence (directive (taskgroup task_reduction (+:r2) allocate (r2)),
omp::directive (master taskloop
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(taskloop: i1) final(fi) mergeable priority (pp)
reduction(default, +:r) in_reduction(+:r2) allocate (f)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (directive (taskgroup task_reduction (+:r2) allocate (r2)),
omp::directive (masked taskloop
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(taskloop: i1) final(fi) mergeable priority (pp)
reduction(default, +:r) in_reduction(+:r2) allocate (f) filter (d)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (master)]];
[[omp::directive (masked)]];
[[omp::directive (masked filter (d))]];
[[omp::sequence (omp::directive (taskgroup task_reduction (+:r2) allocate (r2)),
directive (master taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(taskloop: i1) if(simd: i2) final(fi) mergeable priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) reduction(default, +:r) in_reduction(+:r2) nontemporal(ntm)
order(concurrent) allocate (f)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (omp::directive (taskgroup task_reduction (+:r2) allocate (r2)),
directive (masked taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(taskloop: i1) if(simd: i2) final(fi) mergeable priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) reduction(default, +:r) in_reduction(+:r2) nontemporal(ntm)
order(concurrent) allocate (f) filter (d)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel master taskloop
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(taskloop: i1) final(fi) mergeable priority (pp)
reduction(default, +:r) if (parallel: i2) num_threads (nth) proc_bind(spread) copyin(t) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel masked taskloop
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(taskloop: i1) final(fi) mergeable priority (pp)
reduction(default, +:r) if (parallel: i2) num_threads (nth) proc_bind(spread) copyin(t) allocate (f) filter (d))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel master taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(taskloop: i1) if(simd: i2) final(fi) mergeable priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) reduction(default, +:r) nontemporal(ntm) if (parallel: i2) num_threads (nth) proc_bind(spread) copyin(t)
order(concurrent) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel masked taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) grainsize (g) collapse(1) untied if(taskloop: i1) if(simd: i2) final(fi) mergeable priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) reduction(default, +:r) nontemporal(ntm) if (parallel: i2) num_threads (nth) proc_bind(spread) copyin(t)
order(concurrent) allocate (f) filter (d))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (directive (taskgroup task_reduction (+:r2) allocate (r2)),
directive (master taskloop
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) num_tasks (nta) collapse(1) untied if(i1) final(fi) mergeable priority (pp)
reduction(default, +:r) in_reduction(+:r2)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (directive (taskgroup task_reduction (+:r2) allocate (r2)),
directive (masked taskloop
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) num_tasks (nta) collapse(1) untied if(i1) final(fi) mergeable priority (pp)
reduction(default, +:r) in_reduction(+:r2) filter (d)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (omp::directive (taskgroup task_reduction (+:r2) allocate (r2)),
omp::directive (master taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) num_tasks (nta) collapse(1) untied if(i1) final(fi) mergeable priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) reduction(default, +:r) in_reduction(+:r2) nontemporal(ntm)
order(concurrent) allocate (f)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::sequence (omp::directive (taskgroup task_reduction (+:r2) allocate (r2)),
omp::directive (masked taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) num_tasks (nta) collapse(1) untied if(i1) final(fi) mergeable priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) reduction(default, +:r) in_reduction(+:r2) nontemporal(ntm)
order(concurrent) allocate (f) filter (d)))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel master taskloop
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) num_tasks (nta) collapse(1) untied if(i1) final(fi) mergeable priority (pp)
reduction(default, +:r) num_threads (nth) proc_bind(spread) copyin(t) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel masked taskloop
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) num_tasks (nta) collapse(1) untied if(i1) final(fi) mergeable priority (pp)
reduction(default, +:r) num_threads (nth) proc_bind(spread) copyin(t) allocate (f) filter (d))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel master taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) num_tasks (nta) collapse(1) untied if(i1) final(fi) mergeable priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) reduction(default, +:r) nontemporal(ntm) num_threads (nth) proc_bind(spread) copyin(t)
order(concurrent) allocate (f))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (parallel masked taskloop simd
private (p) firstprivate (f) lastprivate (l) shared (s) default(shared) num_tasks (nta) collapse(1) untied if(i1) final(fi) mergeable priority (pp)
safelen(8) simdlen(4) linear(ll: 1) aligned(q: 32) reduction(default, +:r) nontemporal(ntm) num_threads (nth) proc_bind(spread) copyin(t)
order(concurrent) allocate (f) filter (d))]]
for (int i = 0; i < 64; i++)
ll++;
[[omp::directive (loop bind(thread) order(concurrent)
private (p) lastprivate (l) collapse(1) reduction(+:r))]]
for (l = 0; l < 64; ++l)
ll++;
[[omp::directive (parallel loop
private (p) firstprivate (f) if (parallel: i2) default(shared) shared(s) copyin(t) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) collapse(1) bind(parallel) order(concurrent) allocate (f))]]
for (l = 0; l < 64; l++)
ll++;
[[omp::directive (parallel loop
private (p) firstprivate (f) if (parallel: i2) default(shared) shared(s) copyin(t) reduction(+:r) num_threads (nth) proc_bind(spread)
lastprivate (l) collapse(1) allocate (f))]]
for (l = 0; l < 64; l++)
ll++;
[[omp::directive (teams loop
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte) thread_limit(tl)
collapse(1) lastprivate (l) bind(teams) allocate (f))]]
for (l = 0; l < 64; ++l)
;
[[omp::directive (teams loop
private(p) firstprivate (f) shared(s) default(shared) reduction(+:r) num_teams(nte - 1:nte) thread_limit(tl)
collapse(1) lastprivate (l) order(concurrent) allocate (f))]]
for (l = 0; l < 64; ++l)
;
[[omp::directive (target parallel loop
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
if (parallel: i2) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
nowait depend(inout: dd[0]) lastprivate (l) bind(parallel) order(concurrent) collapse(1)
allocate (omp_default_mem_alloc: f) in_reduction(+:r2) has_device_addr (hda))]]
for (l = 0; l < 64; ++l)
;
[[omp::directive (target parallel loop
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
if (parallel: i2) default(shared) shared(s) reduction(+:r) num_threads (nth) proc_bind(spread)
nowait depend(inout: dd[0]) lastprivate (l) order(concurrent) collapse(1)
allocate (omp_default_mem_alloc: f) in_reduction(+:r2) has_device_addr (hda))]]
for (l = 0; l < 64; ++l)
;
[[omp::directive (target teams loop
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
shared(s) default(shared) reduction(+:r) num_teams(nte) thread_limit(tl) nowait depend(inout: dd[0])
lastprivate (l) bind(teams) collapse(1)
allocate (omp_default_mem_alloc: f) in_reduction(+:r2) has_device_addr (hda))]]
for (l = 0; l < 64; ++l)
;
[[omp::directive (target teams loop
device(d) map (tofrom: m) if (target: i1) private (p) firstprivate (f) defaultmap(tofrom: scalar) is_device_ptr (idp)
shared(s) default(shared) reduction(+:r) num_teams(nte - 1 : nte) thread_limit(tl) nowait depend(inout: dd[0])
lastprivate (l) order(concurrent) collapse(1)
allocate (omp_default_mem_alloc: f) in_reduction(+:r2) has_device_addr (hda))]]
for (l = 0; l < 64; ++l)
;
[[omp::directive (critical)]] {
}
[[omp::directive (critical (foobar) hint(omp_sync_hint_none))]]
;
[[omp::directive (taskwait depend (inout: dd[0]))]]
;
[[omp::directive (taskgroup task_reduction(+:r2) allocate (r2))]]
;
[[omp::directive (atomic update seq_cst hint(omp_sync_hint_none))]]
p++;
[[omp::directive (atomic read hint(omp_sync_hint_none) relaxed)]]
f = p;
[[omp::directive (atomic write release hint(omp_sync_hint_none))]]
p = f;
[[omp::directive (flush)]]
;
[[omp::directive (flush acq_rel)]]
;
[[omp::directive (flush acquire)]]
;
[[omp::directive (flush release)]]
;
[[omp::directive (flush seq_cst)]]
;
[[omp::directive (flush (p, f))]]
;
[[omp::directive (simd
private (p) lastprivate (l) linear (ll:1) reduction(+:r) collapse(1) safelen(8) simdlen(4) aligned(q: 32)
nontemporal(ntm) if(i1))]]
for (int i = 0; i < 64; i++)
[[omp::directive (ordered simd)]]
ll++;
[[omp::directive (for
private (p) firstprivate (f) lastprivate (l) linear (ll:1) reduction(+:r) schedule(static, 4) collapse(1) nowait
ordered allocate (f))]]
for (int i = 0; i < 64; i++)
[[omp::directive (ordered threads)]]
ll++;
[[omp::directive(for ordered (1))]]
for (l = 0; l < 64; l++)
{
[[omp::directive(ordered depend (sink: l - 1))]];
[[omp::directive(ordered depend (source))]];
}
extern omp_depend_t depobj;
[[omp::directive (depobj(depobj) depend(in : dd[0]))]];
[[omp::directive (parallel)]] {
if (p) {
[[omp::directive (cancel parallel)]];
} else {
[[omp::directive (cancellation point parallel)]];
}
}
[[omp::directive (scope private (p) firstprivate (f) reduction(+:r) nowait
allocate (omp_default_mem_alloc: r))]]
;
[[omp::directive (scope private (p) firstprivate (f) reduction(task, +:r)
allocate (omp_default_mem_alloc: f))]]
;
extern int t2;
[[omp::directive (threadprivate (t2))]];
extern int t2;
[[omp::directive (declare reduction (dr: int: omp_out += omp_in) initializer (omp_priv = 0))]]
;
[[omp::directive (parallel)]]
if (0)
;
[[omp::directive (parallel)]]
while (0)
;
[[omp::directive (parallel)]]
switch (0) { case 1: break; default: break; }
[[omp::directive (assume no_openmp no_openmp_routines no_parallelism
absent (atomic, barrier, cancel, cancellation point)
absent (critical, depobj)
absent (distribute, flush, loop, masked, master, nothing, ordered)
absent (parallel, scan, scope, section, sections, simd, single, task)
absent (taskgroup, taskloop, taskwait, taskyield)
absent (target, teams, for, error) holds (n1 < n2))]]
if (0)
;
[[omp::sequence (omp::directive (assume contains (simd)),
omp::directive (for simd))]]
for (int i = 0; i < 64; i++)
;
}
void corge1 ();
void
corge ()
{
[[omp::directive (declare variant (corge1) match (construct={parallel,for}))]]
extern void corge2 ();
[[omp::sequence (directive (parallel), directive (for))]]
for (int i = 0; i < 5; i++)
corge2 ();
[[omp::directive (declare simd simdlen(4) linear(l) aligned(p:4) uniform(p) inbranch),
omp::directive (declare simd simdlen(8) notinbranch)]]
extern int corge3 (int l, int *p);
[[omp::directive (declare simd simdlen(4) linear(l) aligned(p:4) uniform(p) inbranch),
omp::directive (declare simd simdlen(8) notinbranch)]]
extern int corge4 (int l, int *p);
[[omp::sequence (directive (declare simd simdlen(4) linear(l) aligned(p:4) uniform(p) inbranch),
omp::directive (declare simd simdlen(8) notinbranch))]]
extern int corge5 (int l, int *p);
[[omp::directive (declare target)]];
extern void corge6 ();
[[omp::directive (end declare target)]];
}
int
garply (int a, int *c, int *d, int *e, int *f)
{
int i;
[[omp::directive (simd reduction (inscan, +: a))]]
for (i = 0; i < 64; i++)
{
d[i] = a;
[[omp::directive (scan exclusive (a))]]
a += c[i];
}
[[omp::directive (simd reduction (inscan, +: a))]]
for (i = 0; i < 64; i++)
{
a += c[i];
[[omp::sequence (omp::sequence (omp::directive (scan inclusive (a))))]]
d[i] = a;
}
return a;
}