1935399d2SJoachim Protze // RUN: %libomp-compile-and-run | FileCheck %s
2935399d2SJoachim Protze // RUN: %libomp-compile-and-run | FileCheck --check-prefix=TASKS %s
3cdaefac5SJoachim Protze // REQUIRES: ompt
45b57eb4bSJonas Hahnfeld
55b57eb4bSJonas Hahnfeld // These compilers don't support the taskloop construct
65b57eb4bSJonas Hahnfeld // UNSUPPORTED: gcc-4, gcc-5, icc-16
75b57eb4bSJonas Hahnfeld // GCC 6 has support for taskloops, but at least 6.3.0 is crashing on this test
85b57eb4bSJonas Hahnfeld // UNSUPPORTED: gcc-6
95b57eb4bSJonas Hahnfeld
10cdaefac5SJoachim Protze #include "callback.h"
11cdaefac5SJoachim Protze #include <omp.h>
12cdaefac5SJoachim Protze
main()13cdaefac5SJoachim Protze int main() {
14935399d2SJoachim Protze unsigned int i, x;
15cdaefac5SJoachim Protze
16cdaefac5SJoachim Protze #pragma omp parallel num_threads(2)
17935399d2SJoachim Protze {
18935399d2SJoachim Protze #pragma omp barrier
19935399d2SJoachim Protze
20cdaefac5SJoachim Protze #pragma omp master
21cdaefac5SJoachim Protze #pragma omp taskloop
22935399d2SJoachim Protze for (i = 0; i < 5; i += 3) {
23cdaefac5SJoachim Protze x++;
24cdaefac5SJoachim Protze }
25935399d2SJoachim Protze }
26cdaefac5SJoachim Protze // CHECK: 0: NULL_POINTER=[[NULL:.*$]]
27cdaefac5SJoachim Protze
28cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin:
29cdaefac5SJoachim Protze // CHECK-SAME: parent_task_id={{[0-9]+}}
30cdaefac5SJoachim Protze // CHECK-SAME: parallel_id=[[PARALLEL_ID:[0-9]+]]
31cdaefac5SJoachim Protze // CHECK-SAME: requested_team_size=2
32cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin:
33cdaefac5SJoachim Protze // CHECK-SAME: parallel_id=[[PARALLEL_ID]]
34cdaefac5SJoachim Protze // CHECK-SAME: task_id=[[IMPLICIT_TASK_ID1:[0-9]+]]
35cdaefac5SJoachim Protze // CHECK-SAME: team_size=2, thread_num=0
36cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskgroup_begin:
37cdaefac5SJoachim Protze // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID1]]
38cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskloop_begin:
39cdaefac5SJoachim Protze // CHECK-SAME: parallel_id=[[PARALLEL_ID]]
40*a707d088SJoachim // CHECK-SAME: task_id=[[IMPLICIT_TASK_ID1]]
41cdaefac5SJoachim Protze // CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]], count=2
42cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create:
43cdaefac5SJoachim Protze // CHECK-SAME: parent_task_id=[[IMPLICIT_TASK_ID1]]
44cdaefac5SJoachim Protze // CHECK-SAME: new_task_id=[[TASK_ID1:[0-9]+]]
45cdaefac5SJoachim Protze // CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS]]
46cdaefac5SJoachim Protze // CHECK-SAME: task_type=ompt_task_explicit=4
47cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create:
48cdaefac5SJoachim Protze // CHECK-SAME: parent_task_id=[[IMPLICIT_TASK_ID1]]
49cdaefac5SJoachim Protze // CHECK-SAME: new_task_id=[[TASK_ID2:[0-9]+]]
50cdaefac5SJoachim Protze // CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS]]
51cdaefac5SJoachim Protze // CHECK-SAME: task_type=ompt_task_explicit=4
52935399d2SJoachim Protze // CHECK-NOT: {{^}}[[MASTER_ID]]: ompt_event_task_create:
53cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskloop_end:
54cdaefac5SJoachim Protze // CHECK-SAME: parallel_id=[[PARALLEL_ID]]
55*a707d088SJoachim // CHECK-SAME: task_id=[[IMPLICIT_TASK_ID1]]
56cdaefac5SJoachim Protze // CHECK-SAME: count=2
57cdaefac5SJoachim Protze // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_wait_taskgroup_begin:
58cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID]]: ompt_event_wait_taskgroup_end:
59cdaefac5SJoachim Protze // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID1]]
60cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskgroup_end:
61cdaefac5SJoachim Protze // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID1]]
62cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end: parallel_id=0
63cdaefac5SJoachim Protze // CHECK-SAME: task_id=[[IMPLICIT_TASK_ID1]], team_size=2, thread_num=0
64cdaefac5SJoachim Protze // CHECK: {{^}}[[MASTER_ID]]: ompt_event_parallel_end:
65cdaefac5SJoachim Protze // CHECK-SAME: parallel_id=[[PARALLEL_ID]]
66cdaefac5SJoachim Protze
6748b8a4b5SJoachim Protze // TASKS: ompt_event_initial_task_begin:{{.*}} task_id={{[0-9]+}}
68935399d2SJoachim Protze // TASKS: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_taskloop_begin:
69935399d2SJoachim Protze // TASKS: ompt_event_task_create:{{.*}} new_task_id=[[TASK_ID1:[0-9]+]]
70935399d2SJoachim Protze // TASKS-SAME: task_type=ompt_task_explicit
71935399d2SJoachim Protze // TASKS-DAG: ompt_event_task_create:{{.*}} new_task_id=[[TASK_ID2:[0-9]+]]
72935399d2SJoachim Protze // Schedule events:
73935399d2SJoachim Protze // TASKS-DAG: {{^.*}}first_task_id={{[0-9]+}}, second_task_id=[[TASK_ID1]]
74935399d2SJoachim Protze // TASKS-DAG: {{^.*}}first_task_id=[[TASK_ID1]], second_task_id={{[0-9]+}}
75935399d2SJoachim Protze // TASKS-DAG: {{^.*}}first_task_id={{[0-9]+}}, second_task_id=[[TASK_ID2]]
76935399d2SJoachim Protze // TASKS-DAG: {{^.*}}first_task_id=[[TASK_ID2]], second_task_id={{[0-9]+}}
77935399d2SJoachim Protze // TASKS-NOT: ompt_event_task_schedule
78935399d2SJoachim Protze
79cdaefac5SJoachim Protze return 0;
80cdaefac5SJoachim Protze }
81