@@ -503,6 +503,61 @@ class OpenMP_IsDevicePtrClauseSkip<
503503
504504def OpenMP_IsDevicePtrClause : OpenMP_IsDevicePtrClauseSkip<>;
505505
506+ //===----------------------------------------------------------------------===//
507+ // V5.2: [5.4.7] `inclusive` clause
508+ //===----------------------------------------------------------------------===//
509+
510+ class OpenMP_InclusiveClauseSkip<
511+ bit traits = false, bit arguments = false, bit assemblyFormat = false,
512+ bit description = false, bit extraClassDeclaration = false
513+ > : OpenMP_Clause</*isRequired=*/false, traits, arguments, assemblyFormat,
514+ description, extraClassDeclaration> {
515+ let arguments = (ins
516+ Variadic<AnyType>:$inclusive_vars
517+ );
518+
519+ let assemblyFormat = [{
520+ `inclusive` `(` $inclusive_vars `:` type($inclusive_vars) `)`
521+ }];
522+
523+ let description = [{
524+ The inclusive clause is used on a separating directive that separates a
525+ structured block into two structured block sequences. If the inclusive
526+ clause is specified, the input phase includes the preceding structured block
527+ sequence and the scan phase includes the following structured block sequence.
528+ }];
529+ }
530+
531+ def OpenMP_InclusiveClause : OpenMP_InclusiveClauseSkip<>;
532+
533+ //===----------------------------------------------------------------------===//
534+ // V5.2: [5.4.7] `exclusive` clause
535+ //===----------------------------------------------------------------------===//
536+
537+ class OpenMP_ExclusiveClauseSkip<
538+ bit traits = false, bit arguments = false, bit assemblyFormat = false,
539+ bit description = false, bit extraClassDeclaration = false
540+ > : OpenMP_Clause</*isRequired=*/false, traits, arguments, assemblyFormat,
541+ description, extraClassDeclaration> {
542+ let arguments = (ins
543+ Variadic<AnyType>:$exclusive_vars
544+ );
545+
546+ let assemblyFormat = [{
547+ `exclusive` `(` $exclusive_vars `:` type($exclusive_vars) `)`
548+ }];
549+
550+ let description = [{
551+ The exclusive clause is used on a separating directive that separates a
552+ structured block into two structured block sequences. If the exclusive clause
553+ is specified, the input phase excludes the preceding structured block
554+ sequence and instead includes the following structured block sequence,
555+ while the scan phase includes the preceding structured block sequence.
556+ }];
557+ }
558+
559+ def OpenMP_ExclusiveClause : OpenMP_ExclusiveClauseSkip<>;
560+
506561//===----------------------------------------------------------------------===//
507562// V5.2: [5.4.6] `linear` clause
508563//===----------------------------------------------------------------------===//
0 commit comments