@@ -1309,6 +1309,15 @@ def OMP_EndWorkshare : Directive<[Spelling<"end workshare">]> {
13091309 let category = OMP_Workshare.category;
13101310 let languages = [L_Fortran];
13111311}
1312+ def OMP_Workdistribute : Directive<[Spelling<"workdistribute">]> {
1313+ let association = AS_Block;
1314+ let category = CA_Executable;
1315+ }
1316+ def OMP_EndWorkdistribute : Directive<[Spelling<"end workdistribute">]> {
1317+ let leafConstructs = OMP_Workdistribute.leafConstructs;
1318+ let association = OMP_Workdistribute.association;
1319+ let category = OMP_Workdistribute.category;
1320+ }
13121321
13131322//===----------------------------------------------------------------------===//
13141323// Definitions of OpenMP compound directives
@@ -2452,6 +2461,34 @@ def OMP_TargetTeamsDistributeSimd
24522461 let leafConstructs = [OMP_Target, OMP_Teams, OMP_Distribute, OMP_Simd];
24532462 let category = CA_Executable;
24542463}
2464+ def OMP_TargetTeamsWorkdistribute : Directive<[Spelling<"target teams workdistribute">]> {
2465+ let allowedClauses = [
2466+ VersionedClause<OMPC_Allocate>,
2467+ VersionedClause<OMPC_Depend>,
2468+ VersionedClause<OMPC_FirstPrivate>,
2469+ VersionedClause<OMPC_HasDeviceAddr, 51>,
2470+ VersionedClause<OMPC_If>,
2471+ VersionedClause<OMPC_IsDevicePtr>,
2472+ VersionedClause<OMPC_Map>,
2473+ VersionedClause<OMPC_OMPX_Attribute>,
2474+ VersionedClause<OMPC_Private>,
2475+ VersionedClause<OMPC_Reduction>,
2476+ VersionedClause<OMPC_Shared>,
2477+ VersionedClause<OMPC_UsesAllocators, 50>,
2478+ ];
2479+ let allowedOnceClauses = [
2480+ VersionedClause<OMPC_Default>,
2481+ VersionedClause<OMPC_DefaultMap>,
2482+ VersionedClause<OMPC_Device>,
2483+ VersionedClause<OMPC_NoWait>,
2484+ VersionedClause<OMPC_NumTeams>,
2485+ VersionedClause<OMPC_OMPX_DynCGroupMem>,
2486+ VersionedClause<OMPC_OMPX_Bare>,
2487+ VersionedClause<OMPC_ThreadLimit>,
2488+ ];
2489+ let leafConstructs = [OMP_Target, OMP_Teams, OMP_Workdistribute];
2490+ let category = CA_Executable;
2491+ }
24552492def OMP_target_teams_loop : Directive<[Spelling<"target teams loop">]> {
24562493 let allowedClauses = [
24572494 VersionedClause<OMPC_Allocate>,
@@ -2682,6 +2719,24 @@ def OMP_TeamsDistributeSimd : Directive<[Spelling<"teams distribute simd">]> {
26822719 let leafConstructs = [OMP_Teams, OMP_Distribute, OMP_Simd];
26832720 let category = CA_Executable;
26842721}
2722+ def OMP_TeamsWorkdistribute : Directive<[Spelling<"teams workdistribute">]> {
2723+ let allowedClauses = [
2724+ VersionedClause<OMPC_Allocate>,
2725+ VersionedClause<OMPC_FirstPrivate>,
2726+ VersionedClause<OMPC_OMPX_Attribute>,
2727+ VersionedClause<OMPC_Private>,
2728+ VersionedClause<OMPC_Reduction>,
2729+ VersionedClause<OMPC_Shared>,
2730+ ];
2731+ let allowedOnceClauses = [
2732+ VersionedClause<OMPC_Default>,
2733+ VersionedClause<OMPC_If, 52>,
2734+ VersionedClause<OMPC_NumTeams>,
2735+ VersionedClause<OMPC_ThreadLimit>,
2736+ ];
2737+ let leafConstructs = [OMP_Teams, OMP_Workdistribute];
2738+ let category = CA_Executable;
2739+ }
26852740def OMP_teams_loop : Directive<[Spelling<"teams loop">]> {
26862741 let allowedClauses = [
26872742 VersionedClause<OMPC_Allocate>,
0 commit comments