@@ -1322,6 +1322,17 @@ def OMP_EndWorkshare : Directive<[Spelling<"end workshare">]> {
13221322 let category = OMP_Workshare.category;
13231323 let languages = [L_Fortran];
13241324}
1325+ def OMP_Workdistribute : Directive<[Spelling<"workdistribute">]> {
1326+ let association = AS_Block;
1327+ let category = CA_Executable;
1328+ let languages = [L_Fortran];
1329+ }
1330+ def OMP_EndWorkdistribute : Directive<[Spelling<"end workdistribute">]> {
1331+ let leafConstructs = OMP_Workdistribute.leafConstructs;
1332+ let association = OMP_Workdistribute.association;
1333+ let category = OMP_Workdistribute.category;
1334+ let languages = [L_Fortran];
1335+ }
13251336
13261337//===----------------------------------------------------------------------===//
13271338// Definitions of OpenMP compound directives
@@ -2480,6 +2491,35 @@ def OMP_TargetTeamsDistributeSimd
24802491 let leafConstructs = [OMP_Target, OMP_Teams, OMP_Distribute, OMP_Simd];
24812492 let category = CA_Executable;
24822493}
2494+ def OMP_TargetTeamsWorkdistribute : Directive<[Spelling<"target teams workdistribute">]> {
2495+ let allowedClauses = [
2496+ VersionedClause<OMPC_Allocate>,
2497+ VersionedClause<OMPC_Depend>,
2498+ VersionedClause<OMPC_FirstPrivate>,
2499+ VersionedClause<OMPC_HasDeviceAddr, 51>,
2500+ VersionedClause<OMPC_If>,
2501+ VersionedClause<OMPC_IsDevicePtr>,
2502+ VersionedClause<OMPC_Map>,
2503+ VersionedClause<OMPC_OMPX_Attribute>,
2504+ VersionedClause<OMPC_Private>,
2505+ VersionedClause<OMPC_Reduction>,
2506+ VersionedClause<OMPC_Shared>,
2507+ VersionedClause<OMPC_UsesAllocators, 50>,
2508+ ];
2509+ let allowedOnceClauses = [
2510+ VersionedClause<OMPC_Default>,
2511+ VersionedClause<OMPC_DefaultMap>,
2512+ VersionedClause<OMPC_Device>,
2513+ VersionedClause<OMPC_NoWait>,
2514+ VersionedClause<OMPC_NumTeams>,
2515+ VersionedClause<OMPC_OMPX_DynCGroupMem>,
2516+ VersionedClause<OMPC_OMPX_Bare>,
2517+ VersionedClause<OMPC_ThreadLimit>,
2518+ ];
2519+ let leafConstructs = [OMP_Target, OMP_Teams, OMP_Workdistribute];
2520+ let category = CA_Executable;
2521+ let languages = [L_Fortran];
2522+ }
24832523def OMP_target_teams_loop : Directive<[Spelling<"target teams loop">]> {
24842524 let allowedClauses = [
24852525 VersionedClause<OMPC_Allocate>,
@@ -2717,6 +2757,25 @@ def OMP_TeamsDistributeSimd : Directive<[Spelling<"teams distribute simd">]> {
27172757 let leafConstructs = [OMP_Teams, OMP_Distribute, OMP_Simd];
27182758 let category = CA_Executable;
27192759}
2760+ def OMP_TeamsWorkdistribute : Directive<[Spelling<"teams workdistribute">]> {
2761+ let allowedClauses = [
2762+ VersionedClause<OMPC_Allocate>,
2763+ VersionedClause<OMPC_FirstPrivate>,
2764+ VersionedClause<OMPC_OMPX_Attribute>,
2765+ VersionedClause<OMPC_Private>,
2766+ VersionedClause<OMPC_Reduction>,
2767+ VersionedClause<OMPC_Shared>,
2768+ ];
2769+ let allowedOnceClauses = [
2770+ VersionedClause<OMPC_Default>,
2771+ VersionedClause<OMPC_If, 52>,
2772+ VersionedClause<OMPC_NumTeams>,
2773+ VersionedClause<OMPC_ThreadLimit>,
2774+ ];
2775+ let leafConstructs = [OMP_Teams, OMP_Workdistribute];
2776+ let category = CA_Executable;
2777+ let languages = [L_Fortran];
2778+ }
27202779def OMP_teams_loop : Directive<[Spelling<"teams loop">]> {
27212780 let allowedClauses = [
27222781 VersionedClause<OMPC_Allocate>,
0 commit comments