blob: a93e0f81ce9b3898211176263a914805941d24cc [file] [log] [blame]
Andrey Churbanove5f44922015-04-29 16:22:07 +00001/******************************************************************************
2 * File: ompt-event-specific.h
3 *
4 * Description:
5 *
6 * specify which of the OMPT events are implemented by this runtime system
7 * and the level of their implementation by a runtime system.
8 *****************************************************************************/
9
Joachim Protze3865c692018-04-12 17:23:26 +000010//===----------------------------------------------------------------------===//
11//
12// The LLVM Compiler Infrastructure
13//
14// This file is dual licensed under the MIT and the University of Illinois Open
15// Source Licenses. See LICENSE.txt for details.
16//
17//===----------------------------------------------------------------------===//
18
19#ifndef __OMPT_EVENT_SPECIFIC_H__
20#define __OMPT_EVENT_SPECIFIC_H__
21
Jonathan Peyton30419822017-05-12 18:01:32 +000022#define _ompt_tokenpaste_helper(x, y) x##y
23#define _ompt_tokenpaste(x, y) _ompt_tokenpaste_helper(x, y)
24#define ompt_event_implementation_status(e) _ompt_tokenpaste(e, _implemented)
Andrey Churbanove5f44922015-04-29 16:22:07 +000025
26/*----------------------------------------------------------------------------
27 | Specify whether an event may occur or not, and whether event callbacks
28 | never, sometimes, or always occur.
29 |
30 | The values for these constants are defined in section 6.1.2 of
31 | the OMPT TR. They are exposed to tools through ompt_set_callback.
32 +--------------------------------------------------------------------------*/
33
Joachim Protze82e94a52017-11-01 10:08:30 +000034#define ompt_event_UNIMPLEMENTED ompt_set_never
35#define ompt_event_MAY_CONVENIENT ompt_set_sometimes
36#define ompt_event_MAY_ALWAYS ompt_set_always
Andrey Churbanove5f44922015-04-29 16:22:07 +000037
Joachim Protze82e94a52017-11-01 10:08:30 +000038#if OMPT_OPTIONAL
39#define ompt_event_MAY_ALWAYS_OPTIONAL ompt_event_MAY_ALWAYS
Andrey Churbanove5f44922015-04-29 16:22:07 +000040#else
Joachim Protze82e94a52017-11-01 10:08:30 +000041#define ompt_event_MAY_ALWAYS_OPTIONAL ompt_event_UNIMPLEMENTED
Andrey Churbanove5f44922015-04-29 16:22:07 +000042#endif
43
44/*----------------------------------------------------------------------------
45 | Mandatory Events
46 +--------------------------------------------------------------------------*/
47
Joachim Protzecab9cdc2017-11-05 14:11:19 +000048#define ompt_callback_thread_begin_implemented ompt_event_MAY_ALWAYS
49#define ompt_callback_thread_end_implemented ompt_event_MAY_ALWAYS
50
Joachim Protze82e94a52017-11-01 10:08:30 +000051#define ompt_callback_parallel_begin_implemented ompt_event_MAY_ALWAYS
52#define ompt_callback_parallel_end_implemented ompt_event_MAY_ALWAYS
Andrey Churbanove5f44922015-04-29 16:22:07 +000053
Joachim Protze82e94a52017-11-01 10:08:30 +000054#define ompt_callback_task_create_implemented ompt_event_MAY_ALWAYS
55#define ompt_callback_task_schedule_implemented ompt_event_MAY_ALWAYS
Andrey Churbanove5f44922015-04-29 16:22:07 +000056
Joachim Protze82e94a52017-11-01 10:08:30 +000057#define ompt_callback_implicit_task_implemented ompt_event_MAY_ALWAYS
58
Joachim Protze82e94a52017-11-01 10:08:30 +000059#define ompt_callback_target_implemented ompt_event_UNIMPLEMENTED
60#define ompt_callback_target_data_op_implemented ompt_event_UNIMPLEMENTED
61#define ompt_callback_target_submit_implemented ompt_event_UNIMPLEMENTED
Joachim Protzecab9cdc2017-11-05 14:11:19 +000062
63#define ompt_callback_control_tool_implemented ompt_event_MAY_ALWAYS
64
Joachim Protze82e94a52017-11-01 10:08:30 +000065#define ompt_callback_device_initialize_implemented ompt_event_UNIMPLEMENTED
66#define ompt_callback_device_finalize_implemented ompt_event_UNIMPLEMENTED
67
Joachim Protzecab9cdc2017-11-05 14:11:19 +000068#define ompt_callback_device_load_implemented ompt_event_UNIMPLEMENTED
69#define ompt_callback_device_unload_implemented ompt_event_UNIMPLEMENTED
Andrey Churbanove5f44922015-04-29 16:22:07 +000070
71/*----------------------------------------------------------------------------
Joachim Protzecab9cdc2017-11-05 14:11:19 +000072 | Optional Events
Andrey Churbanove5f44922015-04-29 16:22:07 +000073 +--------------------------------------------------------------------------*/
74
Joachim Protze82e94a52017-11-01 10:08:30 +000075#define ompt_callback_sync_region_wait_implemented \
76 ompt_event_MAY_ALWAYS_OPTIONAL
Andrey Churbanove5f44922015-04-29 16:22:07 +000077
Joachim Protze82e94a52017-11-01 10:08:30 +000078#define ompt_callback_mutex_released_implemented ompt_event_MAY_ALWAYS_OPTIONAL
Andrey Churbanove5f44922015-04-29 16:22:07 +000079
Jonas Hahnfeld39b68622016-01-28 10:39:52 +000080#if OMP_40_ENABLED
Joachim Protze2b46d302019-01-15 15:36:53 +000081#define ompt_callback_dependences_implemented \
Joachim Protze82e94a52017-11-01 10:08:30 +000082 ompt_event_MAY_ALWAYS_OPTIONAL
83#define ompt_callback_task_dependence_implemented ompt_event_MAY_ALWAYS_OPTIONAL
Jonas Hahnfeld39b68622016-01-28 10:39:52 +000084#else
Joachim Protze2b46d302019-01-15 15:36:53 +000085#define ompt_callback_dependences_implemented ompt_event_UNIMPLEMENTED
Joachim Protze82e94a52017-11-01 10:08:30 +000086#define ompt_callback_task_dependence_implemented ompt_event_UNIMPLEMENTED
Jonas Hahnfeld39b68622016-01-28 10:39:52 +000087#endif /* OMP_40_ENABLED */
88
Joachim Protzecab9cdc2017-11-05 14:11:19 +000089#define ompt_callback_work_implemented ompt_event_MAY_ALWAYS_OPTIONAL
90
91#define ompt_callback_master_implemented ompt_event_MAY_ALWAYS_OPTIONAL
92
93#define ompt_callback_target_map_implemented ompt_event_UNIMPLEMENTED
94
95#define ompt_callback_sync_region_implemented ompt_event_MAY_ALWAYS_OPTIONAL
96
97#define ompt_callback_lock_init_implemented ompt_event_MAY_ALWAYS_OPTIONAL
98#define ompt_callback_lock_destroy_implemented ompt_event_MAY_ALWAYS_OPTIONAL
99
100#define ompt_callback_mutex_acquire_implemented ompt_event_MAY_ALWAYS_OPTIONAL
101#define ompt_callback_mutex_acquired_implemented ompt_event_MAY_ALWAYS_OPTIONAL
102#define ompt_callback_nest_lock_implemented ompt_event_MAY_ALWAYS_OPTIONAL
103
104#define ompt_callback_flush_implemented ompt_event_MAY_ALWAYS_OPTIONAL
105
106#define ompt_callback_cancel_implemented ompt_event_MAY_ALWAYS_OPTIONAL
107
Joachim Protze489cdb72018-09-10 14:34:54 +0000108#define ompt_callback_reduction_implemented ompt_event_UNIMPLEMENTED
109
110#define ompt_callback_dispatch_implemented ompt_event_UNIMPLEMENTED
111
Andrey Churbanove5f44922015-04-29 16:22:07 +0000112#endif