xref: /llvm-project/openmp/runtime/test/ompt/tasks/taskloop.c (revision a707d0883b5ab9de6a0a864df614ef14909a4de1)
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