@@ -74,34 +74,114 @@ enum class IdentFlag {
74
74
75
75
// / \note This needs to be kept in sync with kmp.h enum sched_type.
76
76
// / Todo: Update kmp.h to include this file, and remove the enums in kmp.h
77
- // / To complete this, more enum values will need to be moved here.
78
77
enum class OMPScheduleType {
79
- StaticChunked = 33 ,
80
- Static = 34 , // static unspecialized
81
- DynamicChunked = 35 ,
82
- GuidedChunked = 36 , // guided unspecialized
83
- Runtime = 37 ,
84
- Auto = 38 , // auto
85
-
86
- StaticBalancedChunked = 45 , // static with chunk adjustment (e.g., simd)
87
- GuidedSimd = 46 , // guided with chunk adjustment
88
- RuntimeSimd = 47 , // runtime with chunk adjustment
89
-
90
- OrderedStaticChunked = 65 ,
91
- OrderedStatic = 66 , // ordered static unspecialized
92
- OrderedDynamicChunked = 67 ,
93
- OrderedGuidedChunked = 68 ,
94
- OrderedRuntime = 69 ,
95
- OrderedAuto = 70 , // ordered auto
96
-
97
- DistributeChunked = 91 , // distribute static chunked
98
- Distribute = 92 , // distribute static unspecialized
99
-
100
- ModifierMonotonic =
101
- (1 << 29 ), // Set if the monotonic schedule modifier was present
102
- ModifierNonmonotonic =
103
- (1 << 30 ), // Set if the nonmonotonic schedule modifier was present
104
- ModifierMask = ModifierMonotonic | ModifierNonmonotonic,
78
+ // For typed comparisons, not a valid schedule
79
+ None = 0 ,
80
+
81
+ // Schedule algorithms
82
+ BaseStaticChunked = 1 ,
83
+ BaseStatic = 2 ,
84
+ BaseDynamicChunked = 3 ,
85
+ BaseGuidedChunked = 4 ,
86
+ BaseRuntime = 5 ,
87
+ BaseAuto = 6 ,
88
+ BaseTrapezoidal = 7 ,
89
+ BaseGreedy = 8 ,
90
+ BaseBalanced = 9 ,
91
+ BaseGuidedIterativeChunked = 10 ,
92
+ BaseGuidedAnalyticalChunked = 11 ,
93
+ BaseSteal = 12 ,
94
+
95
+ // with chunk adjustment (e.g., simd)
96
+ BaseStaticBalancedChunked = 13 ,
97
+ BaseGuidedSimd = 14 ,
98
+ BaseRuntimeSimd = 15 ,
99
+
100
+ // static schedules algorithims for distribute
101
+ BaseDistributeChunked = 27 ,
102
+ BaseDistribute = 28 ,
103
+
104
+ // Modifier flags to be combined with schedule algorithms
105
+ ModifierUnordered = (1 << 5 ),
106
+ ModifierOrdered = (1 << 6 ),
107
+ ModifierNomerge = (1 << 7 ),
108
+ ModifierMonotonic = (1 << 29 ),
109
+ ModifierNonmonotonic = (1 << 30 ),
110
+
111
+ // Masks combining multiple flags
112
+ OrderingMask = ModifierUnordered | ModifierOrdered | ModifierNomerge,
113
+ MonotonicityMask = ModifierMonotonic | ModifierNonmonotonic,
114
+ ModifierMask = OrderingMask | MonotonicityMask,
115
+
116
+ // valid schedule type values, without monotonicity flags
117
+ UnorderedStaticChunked = BaseStaticChunked | ModifierUnordered, // 33
118
+ UnorderedStatic = BaseStatic | ModifierUnordered, // 34
119
+ UnorderedDynamicChunked = BaseDynamicChunked | ModifierUnordered, // 35
120
+ UnorderedGuidedChunked = BaseGuidedChunked | ModifierUnordered, // 36
121
+ UnorderedRuntime = BaseRuntime | ModifierUnordered, // 37
122
+ UnorderedAuto = BaseAuto | ModifierUnordered, // 38
123
+ UnorderedTrapezoidal = BaseTrapezoidal | ModifierUnordered, // 39
124
+ UnorderedGreedy = BaseGreedy | ModifierUnordered, // 40
125
+ UnorderedBalanced = BaseBalanced | ModifierUnordered, // 41
126
+ UnorderedGuidedIterativeChunked =
127
+ BaseGuidedIterativeChunked | ModifierUnordered, // 42
128
+ UnorderedGuidedAnalyticalChunked =
129
+ BaseGuidedAnalyticalChunked | ModifierUnordered, // 43
130
+ UnorderedSteal = BaseSteal | ModifierUnordered, // 44
131
+
132
+ UnorderedStaticBalancedChunked =
133
+ BaseStaticBalancedChunked | ModifierUnordered, // 45
134
+ UnorderedGuidedSimd = BaseGuidedSimd | ModifierUnordered, // 46
135
+ UnorderedRuntimeSimd = BaseRuntimeSimd | ModifierUnordered, // 47
136
+
137
+ OrderedStaticChunked = BaseStaticChunked | ModifierOrdered, // 65
138
+ OrderedStatic = BaseStatic | ModifierOrdered, // 66
139
+ OrderedDynamicChunked = BaseDynamicChunked | ModifierOrdered, // 67
140
+ OrderedGuidedChunked = BaseGuidedChunked | ModifierOrdered, // 68
141
+ OrderedRuntime = BaseRuntime | ModifierOrdered, // 69
142
+ OrderedAuto = BaseAuto | ModifierOrdered, // 70
143
+ OrderdTrapezoidal = BaseTrapezoidal | ModifierOrdered, // 71
144
+
145
+ OrderedDistributeChunked = BaseDistributeChunked | ModifierOrdered, // 91
146
+ OrderedDistribute = BaseDistribute | ModifierOrdered, // 92
147
+
148
+ NomergeUnorderedStaticChunked =
149
+ BaseStaticChunked | ModifierUnordered | ModifierNomerge, // 161
150
+ NomergeUnorderedStatic =
151
+ BaseStatic | ModifierUnordered | ModifierNomerge, // 162
152
+ NomergeUnorderedDynamicChunked =
153
+ BaseDynamicChunked | ModifierUnordered | ModifierNomerge, // 163
154
+ NomergeUnorderedGuidedChunked =
155
+ BaseGuidedChunked | ModifierUnordered | ModifierNomerge, // 164
156
+ NomergeUnorderedRuntime =
157
+ BaseRuntime | ModifierUnordered | ModifierNomerge, // 165
158
+ NomergeUnorderedAuto = BaseAuto | ModifierUnordered | ModifierNomerge, // 166
159
+ NomergeUnorderedTrapezoidal =
160
+ BaseTrapezoidal | ModifierUnordered | ModifierNomerge, // 167
161
+ NomergeUnorderedGreedy =
162
+ BaseGreedy | ModifierUnordered | ModifierNomerge, // 168
163
+ NomergeUnorderedBalanced =
164
+ BaseBalanced | ModifierUnordered | ModifierNomerge, // 169
165
+ NomergeUnorderedGuidedIterativeChunked =
166
+ BaseGuidedIterativeChunked | ModifierUnordered | ModifierNomerge, // 170
167
+ NomergeUnorderedGuidedAnalyticalChunked =
168
+ BaseGuidedAnalyticalChunked | ModifierUnordered | ModifierNomerge, // 171
169
+ NomergeUnorderedSteal =
170
+ BaseSteal | ModifierUnordered | ModifierNomerge, // 172
171
+
172
+ NomergeOrderedStaticChunked =
173
+ BaseStaticChunked | ModifierOrdered | ModifierNomerge, // 193
174
+ NomergeOrderedStatic = BaseStatic | ModifierOrdered | ModifierNomerge, // 194
175
+ NomergeOrderedDynamicChunked =
176
+ BaseDynamicChunked | ModifierOrdered | ModifierNomerge, // 195
177
+ NomergeOrderedGuidedChunked =
178
+ BaseGuidedChunked | ModifierOrdered | ModifierNomerge, // 196
179
+ NomergeOrderedRuntime =
180
+ BaseRuntime | ModifierOrdered | ModifierNomerge, // 197
181
+ NomergeOrderedAuto = BaseAuto | ModifierOrdered | ModifierNomerge, // 198
182
+ NomergeOrderedTrapezoidal =
183
+ BaseTrapezoidal | ModifierOrdered | ModifierNomerge, // 199
184
+
105
185
LLVM_MARK_AS_BITMASK_ENUM (/* LargestValue */ ModifierMask)
106
186
};
107
187
0 commit comments