1
1
#ifndef OPENMP_LIBOMPTARGET_TEST_OMPTEST_ASSERTMACROS_H
2
2
#define OPENMP_LIBOMPTARGET_TEST_OMPTEST_ASSERTMACROS_H
3
3
4
- #define OMPTEST_EXCLUDE_EVENT omptest::ObserveState::never
5
- #define OMPTEST_REQUIRE_EVENT omptest::ObserveState::always
4
+ #define OMPTEST_EXCLUDED_EVENT omptest::ObserveState::never
5
+ #define OMPTEST_REQUIRED_EVENT omptest::ObserveState::always
6
6
7
7
/// ASSERT MACROS TO BE USED BY THE USER
8
8
9
- // Not implemented yet
10
- #define OMPT_ASSERT_EVENT (Event , ...)
9
+ #define OMPT_GENERATE_EVENTS (NumberOfCopies , EventMacro ) \
10
+ for (size_t i = 0; i < NumberOfCopies; ++i) { \
11
+ EventMacro \
12
+ }
11
13
12
14
// Handle a minimum unordered set of events
13
15
// Required events
14
16
#define OMPT_ASSERT_SET_EVENT (Name , Group , EventTy , ...) \
15
- SetAsserter. insert(OmptAssertEvent::EventTy( \
16
- Name, Group, OMPTEST_REQUIRE_EVENT , __VA_ARGS__));
17
+ SetAsserter-> insert(OmptAssertEvent::EventTy( \
18
+ Name, Group, OMPTEST_REQUIRED_EVENT , __VA_ARGS__));
17
19
#define OMPT_ASSERT_SET (EventTy , ...) \
18
20
OMPT_ASSERT_SET_EVENT("", "", EventTy, __VA_ARGS__)
19
- #define OMPT_ASSERT_SET_GROUP (Group , EventTy , ...) \
21
+ #define OMPT_ASSERT_SET_GROUPED (Group , EventTy , ...) \
20
22
OMPT_ASSERT_SET_EVENT("", Group, EventTy, __VA_ARGS__)
21
23
#define OMPT_ASSERT_SET_NAMED (Name , EventTy , ...) \
22
24
OMPT_ASSERT_SET_EVENT(Name, "", EventTy, __VA_ARGS__)
23
25
// Excluded ("NOT") events
24
26
#define OMPT_ASSERT_SET_EVENT_NOT (Name , Group , EventTy , ...) \
25
- SetAsserter. insert(OmptAssertEvent::EventTy( \
26
- Name, Group, OMPTEST_EXCLUDE_EVENT , __VA_ARGS__));
27
+ SetAsserter-> insert(OmptAssertEvent::EventTy( \
28
+ Name, Group, OMPTEST_EXCLUDED_EVENT , __VA_ARGS__));
27
29
#define OMPT_ASSERT_SET_NOT (EventTy , ...) \
28
30
OMPT_ASSERT_SET_EVENT_NOT("", "", EventTy, __VA_ARGS__)
29
- #define OMPT_ASSERT_SET_GROUP_NOT (Group , EventTy , ...) \
31
+ #define OMPT_ASSERT_SET_GROUPED_NOT (Group , EventTy , ...) \
30
32
OMPT_ASSERT_SET_EVENT_NOT("", Group, EventTy, __VA_ARGS__)
31
33
#define OMPT_ASSERT_SET_NAMED_NOT (Name , EventTy , ...) \
32
34
OMPT_ASSERT_SET_EVENT_NOT(Name, "", EventTy, __VA_ARGS__)
33
35
34
36
// Handle an exact sequence of events
35
37
// Required events
36
38
#define OMPT_ASSERT_SEQUENCE_EVENT (Name , Group , EventTy , ...) \
37
- SequenceAsserter. insert(OmptAssertEvent::EventTy( \
38
- Name, Group, OMPTEST_REQUIRE_EVENT , __VA_ARGS__));
39
+ SequenceAsserter-> insert(OmptAssertEvent::EventTy( \
40
+ Name, Group, OMPTEST_REQUIRED_EVENT , __VA_ARGS__));
39
41
#define OMPT_ASSERT_SEQUENCE (EventTy , ...) \
40
42
OMPT_ASSERT_SEQUENCE_EVENT("", "", EventTy, __VA_ARGS__)
41
- #define OMPT_ASSERT_GROUPED_SEQUENCE (Group , EventTy , ...) \
43
+ #define OMPT_ASSERT_SEQUENCE_GROUPED (Group , EventTy , ...) \
42
44
OMPT_ASSERT_SEQUENCE_EVENT("", Group, EventTy, __VA_ARGS__)
43
- #define OMPT_ASSERT_NAMED_SEQUENCE (Name , EventTy , ...) \
45
+ #define OMPT_ASSERT_SEQUENCE_NAMED (Name , EventTy , ...) \
44
46
OMPT_ASSERT_SEQUENCE_EVENT(Name, "", EventTy, __VA_ARGS__)
45
47
// Excluded ("NOT") events
46
48
#define OMPT_ASSERT_SEQUENCE_EVENT_NOT (Name , Group , EventTy , ...) \
47
- SequenceAsserter. insert(OmptAssertEvent::EventTy( \
48
- Name, Group, OMPTEST_EXCLUDE_EVENT , __VA_ARGS__));
49
+ SequenceAsserter-> insert(OmptAssertEvent::EventTy( \
50
+ Name, Group, OMPTEST_EXCLUDED_EVENT , __VA_ARGS__));
49
51
#define OMPT_ASSERT_SEQUENCE_NOT (EventTy , ...) \
50
52
OMPT_ASSERT_SEQUENCE_EVENT_NOT("", "", EventTy, __VA_ARGS__)
51
- #define OMPT_ASSERT_GROUPED_SEQUENCE_NOT (Group , EventTy , ...) \
53
+ #define OMPT_ASSERT_SEQUENCE_GROUPED_NOT (Group , EventTy , ...) \
52
54
OMPT_ASSERT_SEQUENCE_EVENT_NOT("", Group, EventTy, __VA_ARGS__)
53
- #define OMPT_ASSERT_NAMED_SEQUENCE_NOT (Name , EventTy , ...) \
55
+ #define OMPT_ASSERT_SEQUENCE_NAMED_NOT (Name , EventTy , ...) \
54
56
OMPT_ASSERT_SEQUENCE_EVENT_NOT(Name, "", EventTy, __VA_ARGS__)
55
57
// Special command: suspend active assertion
58
+ // The created event is not correlated to any observed event
56
59
#define OMPT_ASSERT_SEQUENCE_SUSPEND () \
57
- SequenceAsserter. insert( \
58
- OmptAssertEvent::Asserter ("", "", OMPTEST_REQUIRE_EVENT ));
60
+ SequenceAsserter-> insert( \
61
+ OmptAssertEvent::AssertionSuspend ("", "", OMPTEST_EXCLUDED_EVENT ));
59
62
#define OMPT_ASSERT_SEQUENCE_ONLY (EventTy , ...) \
60
63
OMPT_ASSERT_SEQUENCE_SUSPEND() \
61
64
OMPT_ASSERT_SEQUENCE_EVENT("", "", EventTy, __VA_ARGS__) \
62
65
OMPT_ASSERT_SEQUENCE_SUSPEND()
63
- #define OMPT_ASSERT_GROUPED_SEQUENCE_ONLY (Group , EventTy , ...) \
66
+ #define OMPT_ASSERT_SEQUENCE_GROUPED_ONLY (Group , EventTy , ...) \
64
67
OMPT_ASSERT_SEQUENCE_SUSPEND() \
65
68
OMPT_ASSERT_SEQUENCE_EVENT("", Group, EventTy, __VA_ARGS__) \
66
69
OMPT_ASSERT_SEQUENCE_SUSPEND()
67
- #define OMPT_ASSERT_NAMED_SEQUENCE_ONLY (Name , EventTy , ...) \
70
+ #define OMPT_ASSERT_SEQUENCE_NAMED_ONLY (Name , EventTy , ...) \
68
71
OMPT_ASSERT_SEQUENCE_SUSPEND() \
69
72
OMPT_ASSERT_SEQUENCE_EVENT(Name, "", EventTy, __VA_ARGS__) \
70
73
OMPT_ASSERT_SEQUENCE_SUSPEND()
71
74
72
75
// Enable / disable asserters entirely
73
- #define OMPT_ASSERTER_DISABLE (Asserter ) Asserter. setActive(false);
74
- #define OMPT_ASSERTER_ENABLE (Asserter ) Asserter. setActive(true);
76
+ #define OMPT_ASSERTER_DISABLE (Asserter ) Asserter-> setActive(false);
77
+ #define OMPT_ASSERTER_ENABLE (Asserter ) Asserter-> setActive(true);
75
78
#define OMPT_ASSERT_SET_DISABLE () OMPT_ASSERTER_DISABLE(SetAsserter)
76
79
#define OMPT_ASSERT_SET_ENABLE () OMPT_ASSERTER_ENABLE(SetAsserter)
77
- #define OMPT_REPORT_EVENT_DISABLE () OMPT_ASSERTER_DISABLE(EventReporter)
78
- #define OMPT_REPORT_EVENT_ENABLE () OMPT_ASSERTER_ENABLE(EventReporter)
79
80
#define OMPT_ASSERT_SEQUENCE_DISABLE () OMPT_ASSERTER_DISABLE(SequenceAsserter)
80
81
#define OMPT_ASSERT_SEQUENCE_ENABLE () OMPT_ASSERTER_ENABLE(SequenceAsserter)
82
+ #define OMPT_REPORT_EVENT_DISABLE () OMPT_ASSERTER_DISABLE(EventReporter)
83
+ #define OMPT_REPORT_EVENT_ENABLE () OMPT_ASSERTER_ENABLE(EventReporter)
81
84
82
85
// Enable / disable certain event types for asserters
83
86
#define OMPT_ASSERTER_PERMIT_EVENT (Asserter , EventTy ) \
84
- Asserter. permitEvent(EventTy);
87
+ Asserter-> permitEvent(EventTy);
85
88
#define OMPT_ASSERTER_SUPPRESS_EVENT (Asserter , EventTy ) \
86
- Asserter. suppressEvent(EventTy);
89
+ Asserter-> suppressEvent(EventTy);
87
90
#define OMPT_PERMIT_EVENT (EventTy ) \
88
91
OMPT_ASSERTER_PERMIT_EVENT(SetAsserter, EventTy); \
89
92
OMPT_ASSERTER_PERMIT_EVENT(EventReporter, EventTy); \
93
96
OMPT_ASSERTER_SUPPRESS_EVENT(EventReporter, EventTy); \
94
97
OMPT_ASSERTER_SUPPRESS_EVENT(SequenceAsserter, EventTy);
95
98
96
- #endif // include guard
99
+ #define OMPT_ASSERT_SYNC_POINT (SyncPointName ) \
100
+ flush_traced_devices(); \
101
+ OmptCallbackHandler::get().handleAssertionSyncPoint(SyncPointName);
102
+
103
+ #endif
0 commit comments