@@ -305,6 +305,34 @@ class OpenMP_DoacrossClauseSkip<
305
305
306
306
def OpenMP_DoacrossClause : OpenMP_DoacrossClauseSkip<>;
307
307
308
+ //===----------------------------------------------------------------------===//
309
+ // V5.2: [10.5.1] `filter` clause
310
+ //===----------------------------------------------------------------------===//
311
+
312
+ class OpenMP_FilterClauseSkip<
313
+ bit traits = false, bit arguments = false, bit assemblyFormat = false,
314
+ bit description = false, bit extraClassDeclaration = false
315
+ > : OpenMP_Clause</*isRequired=*/false, traits, arguments, assemblyFormat,
316
+ description, extraClassDeclaration> {
317
+ let arguments = (ins
318
+ Optional<IntLikeType>:$filtered_thread_id
319
+ );
320
+
321
+ let assemblyFormat = [{
322
+ `filter` `(` $filtered_thread_id `:` type($filtered_thread_id) `)`
323
+ }];
324
+
325
+ let description = [{
326
+ If `filter` is specified, the masked construct masks the execution of
327
+ the region to only the thread id filtered. Other threads executing the
328
+ parallel region are not expected to execute the region specified within
329
+ the `masked` directive. If `filter` is not specified, master thread is
330
+ expected to execute the region enclosed within `masked` directive.
331
+ }];
332
+ }
333
+
334
+ def OpenMP_FilterClause : OpenMP_FilterClauseSkip<>;
335
+
308
336
//===----------------------------------------------------------------------===//
309
337
// V5.2: [12.3] `final` clause
310
338
//===----------------------------------------------------------------------===//
@@ -1204,32 +1232,4 @@ class OpenMP_UseDevicePtrClauseSkip<
1204
1232
1205
1233
def OpenMP_UseDevicePtrClause : OpenMP_UseDevicePtrClauseSkip<>;
1206
1234
1207
- //===----------------------------------------------------------------------===//
1208
- // V5.2: [10.5.1] `filter` clause
1209
- //===----------------------------------------------------------------------===//
1210
-
1211
- class OpenMP_FilterClauseSkip<
1212
- bit traits = false, bit arguments = false, bit assemblyFormat = false,
1213
- bit description = false, bit extraClassDeclaration = false
1214
- > : OpenMP_Clause</*isRequired=*/false, traits, arguments, assemblyFormat,
1215
- description, extraClassDeclaration> {
1216
- let arguments = (ins
1217
- Optional<IntLikeType>:$filtered_thread_id
1218
- );
1219
-
1220
- let assemblyFormat = [{
1221
- `filter` `(` $filtered_thread_id `:` type($filtered_thread_id) `)`
1222
- }];
1223
-
1224
- let description = [{
1225
- If `filter` is specified, the masked construct masks the execution of
1226
- the region to only the thread id filtered. Other threads executing the
1227
- parallel region are not expected to execute the region specified within
1228
- the `masked` directive. If `filter` is not specified, master thread is
1229
- expected to execute the region enclosed within `masked` directive.
1230
- }];
1231
- }
1232
-
1233
- def OpenMP_FilterClause : OpenMP_FilterClauseSkip<>;
1234
-
1235
1235
#endif // OPENMP_CLAUSES
0 commit comments