1*e4ac11beSHansang Bae // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
2*e4ac11beSHansang Bae // REQUIRES: ompt
3*e4ac11beSHansang Bae // UNSUPPORTED: gnu, intel-16.0
4*e4ac11beSHansang Bae 
5*e4ac11beSHansang Bae #include "callback.h"
6*e4ac11beSHansang Bae #include <omp.h>
7*e4ac11beSHansang Bae 
main()8*e4ac11beSHansang Bae int main() {
9*e4ac11beSHansang Bae   unsigned int i, x;
10*e4ac11beSHansang Bae 
11*e4ac11beSHansang Bae #pragma omp parallel num_threads(2)
12*e4ac11beSHansang Bae   {
13*e4ac11beSHansang Bae #pragma omp barrier
14*e4ac11beSHansang Bae 
15*e4ac11beSHansang Bae #pragma omp master
16*e4ac11beSHansang Bae #pragma omp taskloop grainsize(4)
17*e4ac11beSHansang Bae     for (i = 0; i < 16; i++) {
18*e4ac11beSHansang Bae       // Make every iteration takes at least 1ms
19*e4ac11beSHansang Bae       delay(1000);
20*e4ac11beSHansang Bae     }
21*e4ac11beSHansang Bae   }
22*e4ac11beSHansang Bae   // CHECK: 0: NULL_POINTER=[[NULL:.*$]]
23*e4ac11beSHansang Bae 
24*e4ac11beSHansang Bae   // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin:
25*e4ac11beSHansang Bae   // CHECK-SAME: parent_task_id={{[0-9]+}}
26*e4ac11beSHansang Bae   // CHECK-SAME: parallel_id=[[PARALLEL_ID:[0-9]+]]
27*e4ac11beSHansang Bae   // CHECK-SAME: requested_team_size=2
28*e4ac11beSHansang Bae   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin:
29*e4ac11beSHansang Bae   // CHECK-SAME: parallel_id=[[PARALLEL_ID]]
30*e4ac11beSHansang Bae   // CHECK-SAME: task_id=[[IMPLICIT_TASK_ID1:[0-9]+]]
31*e4ac11beSHansang Bae   // CHECK-SAME: team_size=2, thread_num=0
32*e4ac11beSHansang Bae 
33*e4ac11beSHansang Bae   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskloop_begin:
34*e4ac11beSHansang Bae   // CHECK-SAME: parallel_id=[[PARALLEL_ID]]
35*e4ac11beSHansang Bae   // CHECK-SAME: parent_task_id=[[IMPLICIT_TASK_ID1]]
36*e4ac11beSHansang Bae   // CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]], count=16
37*e4ac11beSHansang Bae 
38*e4ac11beSHansang Bae   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create:
39*e4ac11beSHansang Bae   // CHECK-SAME: new_task_id=[[TASK_ID0:[0-9]+]]
40*e4ac11beSHansang Bae   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create:
41*e4ac11beSHansang Bae   // CHECK-SAME: new_task_id=[[TASK_ID1:[0-9]+]]
42*e4ac11beSHansang Bae   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create:
43*e4ac11beSHansang Bae   // CHECK-SAME: new_task_id=[[TASK_ID2:[0-9]+]]
44*e4ac11beSHansang Bae   // CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create:
45*e4ac11beSHansang Bae   // CHECK-SAME: new_task_id=[[TASK_ID3:[0-9]+]]
46*e4ac11beSHansang Bae 
47*e4ac11beSHansang Bae   // CHECK-DAG: {{.*}}: ompt_event_taskloop_chunk_begin:{{.*}}task_id=[[TASK_ID0]]{{.*}}chunk_iterations=4
48*e4ac11beSHansang Bae   // CHECK-DAG: {{.*}}: ompt_event_taskloop_chunk_begin:{{.*}}task_id=[[TASK_ID1]]{{.*}}chunk_iterations=4
49*e4ac11beSHansang Bae   // CHECK-DAG: {{.*}}: ompt_event_taskloop_chunk_begin:{{.*}}task_id=[[TASK_ID2]]{{.*}}chunk_iterations=4
50*e4ac11beSHansang Bae   // CHECK-DAG: {{.*}}: ompt_event_taskloop_chunk_begin:{{.*}}task_id=[[TASK_ID3]]{{.*}}chunk_iterations=4
51*e4ac11beSHansang Bae 
52*e4ac11beSHansang Bae   return 0;
53*e4ac11beSHansang Bae }
54