Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[OMPT] Add api_calls_misc.c testcase and rename api_calls.c testcase
The api_calls_misc.c testcase tests the following api calls: ompt_get_callback() ompt_get_state() ompt_enumerate_states() ompt_enumerate_mutex_impls() These have not been tested previously. The api_calls.c testcase has been renamed to api_calls_places.c because it only tests api calls that are related to places. Differential Revision: https://reviews.llvm.org/D42523 llvm-svn: 331631
- Loading branch information
Showing
3 changed files
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
// RUN: %libomp-compile && %libomp-run | FileCheck %s | ||
// REQUIRES: ompt | ||
#include "callback.h" | ||
#include <omp.h> | ||
|
||
int main() { | ||
#pragma omp parallel num_threads(1) | ||
{ | ||
// ompt_get_callback() | ||
ompt_callback_t callback; | ||
ompt_get_callback(ompt_callback_thread_begin, &callback); | ||
printf("%" PRIu64 ": &on_ompt_callback_thread_begin=%p\n", | ||
ompt_get_thread_data()->value, &on_ompt_callback_thread_begin); | ||
printf("%" PRIu64 ": ompt_get_callback() result=%p\n", | ||
ompt_get_thread_data()->value, callback); | ||
|
||
// ompt_get_state() | ||
printf("%" PRIu64 ": ompt_get_state()=%d\n", ompt_get_thread_data()->value, | ||
ompt_get_state(NULL)); | ||
|
||
// ompt_enumerate_states() | ||
int state = omp_state_undefined; | ||
const char *state_name; | ||
int steps = 0; | ||
while (ompt_enumerate_states(state, &state, &state_name) && steps < 1000) { | ||
steps++; | ||
if (!state_name) | ||
printf("%" PRIu64 ": state_name is NULL\n", | ||
ompt_get_thread_data()->value); | ||
} | ||
if (steps >= 1000) { | ||
// enumeration did not end after 1000 steps | ||
printf("%" PRIu64 ": states enumeration did not end\n", | ||
ompt_get_thread_data()->value); | ||
} | ||
|
||
// ompt_enumerate_mutex_impls() | ||
int impl = ompt_mutex_impl_unknown; | ||
const char *impl_name; | ||
steps = 0; | ||
while (ompt_enumerate_mutex_impls(impl, &impl, &impl_name) && | ||
steps < 1000) { | ||
steps++; | ||
if (!impl_name) | ||
printf("%" PRIu64 ": impl_name is NULL\n", | ||
ompt_get_thread_data()->value); | ||
} | ||
if (steps >= 1000) { | ||
// enumeration did not end after 1000 steps | ||
printf("%" PRIu64 ": mutex_impls enumeration did not end\n", | ||
ompt_get_thread_data()->value); | ||
} | ||
} | ||
|
||
// Check if libomp supports the callbacks for this test. | ||
|
||
// CHECK: 0: NULL_POINTER=[[NULL:.*$]] | ||
|
||
// CHECK: {{^}}[[THREAD_ID:[0-9]+]]: &on_ompt_callback_thread_begin | ||
// CHECK-SAME: =[[FUNCTION_POINTER:0x[0-f]+]] | ||
// CHECK: {{^}}[[THREAD_ID]]: ompt_get_callback() result=[[FUNCTION_POINTER]] | ||
|
||
// CHECK: {{^}}[[THREAD_ID]]: ompt_get_state()=1 | ||
|
||
// CHECK-NOT: {{^}}[[THREAD_ID]]: state_name is NULL | ||
// CHECK-NOT: {{^}}[[THREAD_ID]]: states enumeration did not end | ||
|
||
// CHECK-NOT: {{^}}[[THREAD_ID]]: impl_name is NULL | ||
// CHECK-NOT: {{^}}[[THREAD_ID]]: mutex_impls enumeration did not end | ||
|
||
return 0; | ||
} |
File renamed without changes.