1 // RUN: %libomp-compile-and-run | FileCheck %s 2 // REQUIRES: ompt 3 4 #include "callback.h" 5 #include <omp.h> 6 7 int main() 8 { 9 omp_lock_t lock; 10 omp_init_lock(&lock); 11 print_fuzzy_address(1); 12 13 omp_test_lock(&lock); 14 print_fuzzy_address(2); 15 omp_unset_lock(&lock); 16 print_fuzzy_address(3); 17 18 omp_set_lock(&lock); 19 print_fuzzy_address(4); 20 omp_test_lock(&lock); 21 print_fuzzy_address(5); 22 omp_unset_lock(&lock); 23 print_fuzzy_address(6); 24 25 omp_destroy_lock(&lock); 26 print_fuzzy_address(7); 27 28 // Check if libomp supports the callbacks for this test. 29 // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_mutex_acquire' 30 // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_mutex_acquired' 31 // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_mutex_released' 32 // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_nest_lock' 33 34 // CHECK: 0: NULL_POINTER=[[NULL:.*$]] 35 36 // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_init_lock: wait_id=[[WAIT_ID:[0-9]+]], hint=0, impl={{[0-9]+}}, codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}} 37 // CHECK-NEXT: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]] 38 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_wait_lock: wait_id=[[WAIT_ID]], hint=0, impl={{[0-9]+}}, codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}} 39 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_acquired_lock: wait_id=[[WAIT_ID]], codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}} 40 // CHECK-NEXT: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]] 41 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_release_lock: wait_id=[[WAIT_ID]], codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}} 42 // CHECK-NEXT: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]] 43 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_wait_lock: wait_id=[[WAIT_ID]], hint=0, impl={{[0-9]+}}, codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}} 44 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_acquired_lock: wait_id=[[WAIT_ID]], codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}} 45 // CHECK-NEXT: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]] 46 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_wait_lock: wait_id=[[WAIT_ID]], hint=0, impl={{[0-9]+}}, codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}} 47 // CHECK-NEXT: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]] 48 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_release_lock: wait_id=[[WAIT_ID]], codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}} 49 // CHECK-NEXT: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]] 50 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_destroy_lock: wait_id=[[WAIT_ID]], codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}} 51 // CHECK-NEXT: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]] 52 53 return 0; 54 } 55