summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoachim Protze <protze@itc.rwth-aachen.de>2018-05-07 12:42:15 +0000
committerJoachim Protze <protze@itc.rwth-aachen.de>2018-05-07 12:42:15 +0000
commit8fc39f6b19a98838b590462a3d37cebc060c6796 (patch)
treea90a7bb35ad8cc688da337924d430e126eb05b81
parentce7f318f217914b6435e4aa44e17c65279b5ee3a (diff)
downloadbcm5719-llvm-8fc39f6b19a98838b590462a3d37cebc060c6796.tar.gz
bcm5719-llvm-8fc39f6b19a98838b590462a3d37cebc060c6796.zip
[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
-rwxr-xr-xopenmp/runtime/test/ompt/callback.h4
-rw-r--r--openmp/runtime/test/ompt/misc/api_calls_misc.c72
-rw-r--r--openmp/runtime/test/ompt/misc/api_calls_places.c (renamed from openmp/runtime/test/ompt/misc/api_calls.c)0
3 files changed, 76 insertions, 0 deletions
diff --git a/openmp/runtime/test/ompt/callback.h b/openmp/runtime/test/ompt/callback.h
index bca618ca922..82fff996edb 100755
--- a/openmp/runtime/test/ompt/callback.h
+++ b/openmp/runtime/test/ompt/callback.h
@@ -56,6 +56,8 @@ static void format_task_type(int type, char *buffer) {
}
static ompt_set_callback_t ompt_set_callback;
+static ompt_get_callback_t ompt_get_callback;
+static ompt_get_state_t ompt_get_state;
static ompt_get_task_info_t ompt_get_task_info;
static ompt_get_thread_data_t ompt_get_thread_data;
static ompt_get_parallel_info_t ompt_get_parallel_info;
@@ -697,6 +699,8 @@ int ompt_initialize(
ompt_data_t *tool_data)
{
ompt_set_callback = (ompt_set_callback_t) lookup("ompt_set_callback");
+ ompt_get_callback = (ompt_get_callback_t) lookup("ompt_get_callback");
+ ompt_get_state = (ompt_get_state_t) lookup("ompt_get_state");
ompt_get_task_info = (ompt_get_task_info_t) lookup("ompt_get_task_info");
ompt_get_thread_data = (ompt_get_thread_data_t) lookup("ompt_get_thread_data");
ompt_get_parallel_info = (ompt_get_parallel_info_t) lookup("ompt_get_parallel_info");
diff --git a/openmp/runtime/test/ompt/misc/api_calls_misc.c b/openmp/runtime/test/ompt/misc/api_calls_misc.c
new file mode 100644
index 00000000000..d567b1b14e8
--- /dev/null
+++ b/openmp/runtime/test/ompt/misc/api_calls_misc.c
@@ -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;
+}
diff --git a/openmp/runtime/test/ompt/misc/api_calls.c b/openmp/runtime/test/ompt/misc/api_calls_places.c
index ad338a750f4..ad338a750f4 100644
--- a/openmp/runtime/test/ompt/misc/api_calls.c
+++ b/openmp/runtime/test/ompt/misc/api_calls_places.c
OpenPOWER on IntegriCloud