Index: openmp/runtime/test/ompt/synchronization/ordered_dependences.c =================================================================== --- openmp/runtime/test/ompt/synchronization/ordered_dependences.c +++ openmp/runtime/test/ompt/synchronization/ordered_dependences.c @@ -25,39 +25,37 @@ // CHECK: 0: NULL_POINTER=[[NULL:.*$]] // CHECK: {{^}}[[MASTER:[0-9]+]]: ompt_event_loop_begin: -// CHECK-SAME: parallel_id={{[0-9]+}}, parent_task_id=[[IMPL_TASK:[0-9]+]], +// CHECK-SAME: parallel_id={{[0-9]+}}, parent_task_id=[[ITASK:[0-9]+]], -// CHECK: {{^}}[[MASTER]]: ompt_event_dependences: task_id=[[IMPL_TASK]], +// CHECK: {{^}}[[MASTER]]: ompt_event_dependences: task_id=[[ITASK]], // CHECK-SAME: deps=[(0, ompt_dependence_type_source), (0, // CHECK-SAME: ompt_dependence_type_source)], ndeps=2 -// CHECK: {{^}}[[MASTER]]: ompt_event_dependences: task_id=[[IMPL_TASK]], +// CHECK: {{^}}[[MASTER]]: ompt_event_dependences: task_id=[[ITASK]], // CHECK-SAME: deps=[(0, ompt_dependence_type_sink), (0, // CHECK-SAME: ompt_dependence_type_sink)], ndeps=2 -// CHECK: {{^}}[[MASTER]]: ompt_event_dependences: task_id=[[IMPL_TASK]], +// CHECK: {{^}}[[MASTER]]: ompt_event_dependences: task_id=[[ITASK]], // CHECK-SAME: deps=[(0, ompt_dependence_type_source), (1, // CHECK-SAME: ompt_dependence_type_source)], ndeps=2 // CHECK: {{^}}[[WORKER:[0-9]+]]: ompt_event_loop_begin: -// CHECK-SAME: parallel_id={{[0-9]+}}, parent_task_id=[[IMPL_TASK:[0-9]+]], +// CHECK-SAME: parallel_id={{[0-9]+}}, parent_task_id=[[ITASK:[0-9]+]], -// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[IMPL_TASK]], +// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[ITASK]], // CHECK-SAME: deps=[(0, ompt_dependence_type_sink), (0, // CHECK-SAME: ompt_dependence_type_sink)], ndeps=2 -// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[IMPL_TASK]], +// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[ITASK]], // CHECK-SAME: deps=[(1, ompt_dependence_type_source), (0, // CHECK-SAME: ompt_dependence_type_source)], ndeps=2 -// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[IMPL_TASK]], -// CHECK-SAME: deps=[(0, ompt_dependence_type_sink), (1, -// CHECK-SAME: ompt_dependence_type_sink)], ndeps=2 +// either can be first for last iteration -// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[IMPL_TASK]], -// CHECK-SAME: deps=[(1, ompt_dependence_type_sink), (0, -// CHECK-SAME: ompt_dependence_type_sink)], ndeps=2 +// CHECK-DAG: [[ITASK]]{{.*}}deps=[(0{{.*}}sink), (1,{{.*}}sink)] + +// CHECK-DAG: [[ITASK]]{{.*}}deps=[(1{{.*}}sink), (0,{{.*}}sink)] -// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[IMPL_TASK]], +// CHECK: {{^}}[[WORKER]]: ompt_event_dependences: task_id=[[ITASK]], // CHECK-SAME: deps=[(1, ompt_dependence_type_source), (1, // CHECK-SAME: ompt_dependence_type_source)], ndeps=2 Index: openmp/runtime/test/ompt/tasks/dependences.c =================================================================== --- openmp/runtime/test/ompt/tasks/dependences.c +++ openmp/runtime/test/ompt/tasks/dependences.c @@ -24,14 +24,6 @@ print_fuzzy_address(1); print_ids(0); -#pragma omp task depend(mutexinoutset : x) - { - x++; - delay(100); - } - print_fuzzy_address(2); - print_ids(0); - #pragma omp task depend(in : x) { x = -1; } print_ids(0); @@ -86,28 +78,10 @@ // CHECK: {{^}}[[MASTER_ID]]: ompt_event_dependences: // CHECK-SAME: task_id=[[SECOND_TASK]], deps=[([[ADDRX]], -// CHECK-SAME: ompt_dependence_type_mutexinoutset)], ndeps=1 - -// CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_dependence_pair: -// CHECK-SAME: first_task_id=[[FIRST_TASK]], second_task_id=[[SECOND_TASK]] - -// CHECK: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]] -// CHECK: {{^}}[[MASTER_ID]]: task level 0: parallel_id=[[PARALLEL_ID]], -// CHECK-SAME: task_id=[[IMPLICIT_TASK_ID]], exit_frame=[[EXIT]], -// CHECK-SAME: reenter_frame=[[NULL]] - -// CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create: -// CHECK-SAME: parent_task_id={{[0-9]+}}, parent_task_frame.exit=[[EXIT]], -// CHECK-SAME: parent_task_frame.reenter={{0x[0-f]+}}, -// CHECK-SAME: new_task_id=[[THIRD_TASK:[0-f]+]], codeptr_ra={{0x[0-f]+}}, -// CHECK-SAME: task_type=ompt_task_explicit=4, has_dependences=yes - -// CHECK: {{^}}[[MASTER_ID]]: ompt_event_dependences: -// CHECK-SAME: task_id=[[THIRD_TASK]], deps=[([[ADDRX]], // CHECK-SAME: ompt_dependence_type_in)], ndeps=1 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_dependence_pair: -// CHECK-SAME: first_task_id=[[SECOND_TASK]], second_task_id=[[THIRD_TASK]] +// CHECK-SAME: first_task_id=[[FIRST_TASK]], second_task_id=[[SECOND_TASK]] // CHECK: {{^}}[[MASTER_ID]]: task level 0: parallel_id=[[PARALLEL_ID]], // CHECK-SAME: task_id=[[IMPLICIT_TASK_ID]], exit_frame=[[EXIT]], Index: openmp/runtime/test/ompt/tasks/dependences_mtxinoutset.c =================================================================== --- /dev/null +++ openmp/runtime/test/ompt/tasks/dependences_mtxinoutset.c @@ -0,0 +1,118 @@ +// RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s +// REQUIRES: ompt +// UNSUPPORTED: gcc, clang-4, clang-5, clang-6, clang-7, clang-8 + +// GCC does not pass in mutexinoutset +// clang 9 introduced codegen for mutexinoutset + +#include "callback.h" +#include +#include +#include + +int main() { + int x = 0; +#pragma omp parallel num_threads(2) + { +#pragma omp master + { + print_ids(0); + printf("%" PRIu64 ": address of x: %p\n", ompt_get_thread_data()->value, + &x); +#pragma omp task depend(out : x) + { + x++; + delay(100); + } + print_fuzzy_address(1); + print_ids(0); + +#pragma omp task depend(mutexinoutset : x) + { + x++; + delay(100); + } + print_fuzzy_address(2); + print_ids(0); + +#pragma omp task depend(in : x) + { x = -1; } + print_ids(0); + } + } + + x++; + + return 0; +} + +// Check if libomp supports the callbacks for this test. +// CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_task_create' +// CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_dependences' +// CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_task_depende + +// CHECK: {{^}}0: NULL_POINTER=[[NULL:.*$]] + +// make sure initial data pointers are null +// CHECK-NOT: 0: new_task_data initially not null + +// CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_implicit_task_begin: +// CHECK-SAME: parallel_id=[[PARALLEL_ID:[0-9]+]], +// CHECK-SAME: task_id=[[IMPLICIT_TASK_ID:[0-9]+]] + +// CHECK: {{^}}[[MASTER_ID]]: task level 0: parallel_id=[[PARALLEL_ID]], +// CHECK-SAME: task_id=[[IMPLICIT_TASK_ID]], exit_frame=[[EXIT:0x[0-f]+]], +// CHECK-SAME: reenter_frame=[[NULL]] + +// CHECK: {{^}}[[MASTER_ID]]: address of x: [[ADDRX:0x[0-f]+]] +// CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create: +// CHECK-SAME: parent_task_id={{[0-9]+}}, parent_task_frame.exit=[[EXIT]], +// CHECK-SAME: parent_task_frame.reenter={{0x[0-f]+}}, +// CHECK-SAME: new_task_id=[[FIRST_TASK:[0-f]+]], +// CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}}, +// CHECK-SAME: task_type=ompt_task_explicit=4, has_dependences=yes + +// CHECK: {{^}}[[MASTER_ID]]: ompt_event_dependences: +// CHECK-SAME: task_id=[[FIRST_TASK]], deps=[([[ADDRX]], +// CHECK-SAME: ompt_dependence_type_inout)], ndeps=1 + +// CHECK: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]] +// CHECK: {{^}}[[MASTER_ID]]: task level 0: parallel_id=[[PARALLEL_ID]], +// CHECK-SAME: task_id=[[IMPLICIT_TASK_ID]], exit_frame=[[EXIT]], +// CHECK-SAME: reenter_frame=[[NULL]] + +// CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create: +// CHECK-SAME: parent_task_id={{[0-9]+}}, parent_task_frame.exit=[[EXIT]], +// CHECK-SAME: parent_task_frame.reenter={{0x[0-f]+}}, +// CHECK-SAME: new_task_id=[[SECOND_TASK:[0-f]+]], codeptr_ra={{0x[0-f]+}}, +// CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}}, +// CHECK-SAME: task_type=ompt_task_explicit=4, has_dependences=yes + +// CHECK: {{^}}[[MASTER_ID]]: ompt_event_dependences: +// CHECK-SAME: task_id=[[SECOND_TASK]], deps=[([[ADDRX]], +// CHECK-SAME: ompt_dependence_type_mutexinoutset)], ndeps=1 + +// CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_dependence_pair: +// CHECK-SAME: first_task_id=[[FIRST_TASK]], second_task_id=[[SECOND_TASK]] + +// CHECK: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]] +// CHECK: {{^}}[[MASTER_ID]]: task level 0: parallel_id=[[PARALLEL_ID]], +// CHECK-SAME: task_id=[[IMPLICIT_TASK_ID]], exit_frame=[[EXIT]], +// CHECK-SAME: reenter_frame=[[NULL]] + +// CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create: +// CHECK-SAME: parent_task_id={{[0-9]+}}, parent_task_frame.exit=[[EXIT]], +// CHECK-SAME: parent_task_frame.reenter={{0x[0-f]+}}, +// CHECK-SAME: new_task_id=[[THIRD_TASK:[0-f]+]], codeptr_ra={{0x[0-f]+}}, +// CHECK-SAME: task_type=ompt_task_explicit=4, has_dependences=yes + +// CHECK: {{^}}[[MASTER_ID]]: ompt_event_dependences: +// CHECK-SAME: task_id=[[THIRD_TASK]], deps=[([[ADDRX]], +// CHECK-SAME: ompt_dependence_type_in)], ndeps=1 + +// CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_dependence_pair: +// CHECK-SAME: first_task_id=[[SECOND_TASK]], second_task_id=[[THIRD_TASK]] + +// CHECK: {{^}}[[MASTER_ID]]: task level 0: parallel_id=[[PARALLEL_ID]], +// CHECK-SAME: task_id=[[IMPLICIT_TASK_ID]], exit_frame=[[EXIT]], +// CHECK-SAME: reenter_frame=[[NULL]] Index: openmp/runtime/test/ompt/tasks/task_early_fulfill.c =================================================================== --- openmp/runtime/test/ompt/tasks/task_early_fulfill.c +++ openmp/runtime/test/ompt/tasks/task_early_fulfill.c @@ -1,8 +1,8 @@ // RUN: %libomp-compile -fopenmp-version=50 && env OMP_NUM_THREADS='3' \ // RUN: %libomp-run | %sort-threads | FileCheck %s -// Checked gcc 9.2 still does not support detach clause on task construct. -// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-8, gcc-9 +// Checked gcc 10.1 still does not support detach clause on task construct. +// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-8, gcc-9, gcc-10 // clang supports detach clause since version 11. // UNSUPPORTED: clang-10, clang-9, clang-8, clang-7 // icc compiler does not support detach clause. Index: openmp/runtime/test/ompt/tasks/task_late_fulfill.c =================================================================== --- openmp/runtime/test/ompt/tasks/task_late_fulfill.c +++ openmp/runtime/test/ompt/tasks/task_late_fulfill.c @@ -1,8 +1,8 @@ // RUN: %libomp-compile -fopenmp-version=50 && env OMP_NUM_THREADS='3' \ // RUN: %libomp-run | %sort-threads | FileCheck %s -// Checked gcc 9.2 still does not support detach clause on task construct. -// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-8, gcc-9 +// Checked gcc 10.1 still does not support detach clause on task construct. +// UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-8, gcc-9, gcc-10 // clang supports detach clause since version 11. // UNSUPPORTED: clang-10, clang-9, clang-8, clang-7 // icc compiler does not support detach clause. Index: openmp/runtime/test/ompt/worksharing/for/runtime.c =================================================================== --- openmp/runtime/test/ompt/worksharing/for/runtime.c +++ openmp/runtime/test/ompt/worksharing/for/runtime.c @@ -1,5 +1,7 @@ // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %S/base.h // REQUIRES: ompt +// gcc 9/10 use GOMP_parallel_loop_maybe_nonmonotonic_runtime, not implemented +// XFAIL: gcc-9, gcc-10 #define SCHEDULE runtime #include "base.h" Index: openmp/runtime/test/ompt/worksharing/for/runtime_serialized.c =================================================================== --- openmp/runtime/test/ompt/worksharing/for/runtime_serialized.c +++ openmp/runtime/test/ompt/worksharing/for/runtime_serialized.c @@ -1,5 +1,7 @@ // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %S/base_serialized.h // REQUIRES: ompt +// gcc 9/10 use GOMP_parallel_loop_maybe_nonmonotonic_runtime, not implemented +// XFAIL: gcc-9, gcc-10 #define SCHEDULE runtime #include "base_serialized.h" Index: openmp/runtime/test/ompt/worksharing/for/runtime_split.c =================================================================== --- openmp/runtime/test/ompt/worksharing/for/runtime_split.c +++ openmp/runtime/test/ompt/worksharing/for/runtime_split.c @@ -3,5 +3,8 @@ // REQUIRES: ompt // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7 +// gcc 9/10 use GOMP_parallel_loop_maybe_nonmonotonic_runtime, not implemented +// XFAIL: gcc-9, gcc-10 + #define SCHEDULE runtime #include "base_split.h"