@@ -1309,6 +1309,17 @@ 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+ let languages = [L_Fortran];
1316+ }
1317+ def OMP_EndWorkdistribute : Directive<[Spelling<"end workdistribute">]> {
1318+ let leafConstructs = OMP_Workdistribute.leafConstructs;
1319+ let association = OMP_Workdistribute.association;
1320+ let category = OMP_Workdistribute.category;
1321+ let languages = [L_Fortran];
1322+ }
13121323
13131324//===----------------------------------------------------------------------===//
13141325// Definitions of OpenMP compound directives
@@ -2452,6 +2463,35 @@ def OMP_TargetTeamsDistributeSimd
24522463 let leafConstructs = [OMP_Target, OMP_Teams, OMP_Distribute, OMP_Simd];
24532464 let category = CA_Executable;
24542465}
2466+ def OMP_TargetTeamsWorkdistribute : Directive<[Spelling<"target teams workdistribute">]> {
2467+ let allowedClauses = [
2468+ VersionedClause<OMPC_Allocate>,
2469+ VersionedClause<OMPC_Depend>,
2470+ VersionedClause<OMPC_FirstPrivate>,
2471+ VersionedClause<OMPC_HasDeviceAddr, 51>,
2472+ VersionedClause<OMPC_If>,
2473+ VersionedClause<OMPC_IsDevicePtr>,
2474+ VersionedClause<OMPC_Map>,
2475+ VersionedClause<OMPC_OMPX_Attribute>,
2476+ VersionedClause<OMPC_Private>,
2477+ VersionedClause<OMPC_Reduction>,
2478+ VersionedClause<OMPC_Shared>,
2479+ VersionedClause<OMPC_UsesAllocators, 50>,
2480+ ];
2481+ let allowedOnceClauses = [
2482+ VersionedClause<OMPC_Default>,
2483+ VersionedClause<OMPC_DefaultMap>,
2484+ VersionedClause<OMPC_Device>,
2485+ VersionedClause<OMPC_NoWait>,
2486+ VersionedClause<OMPC_NumTeams>,
2487+ VersionedClause<OMPC_OMPX_DynCGroupMem>,
2488+ VersionedClause<OMPC_OMPX_Bare>,
2489+ VersionedClause<OMPC_ThreadLimit>,
2490+ ];
2491+ let leafConstructs = [OMP_Target, OMP_Teams, OMP_Workdistribute];
2492+ let category = CA_Executable;
2493+ let languages = [L_Fortran];
2494+ }
24552495def OMP_target_teams_loop : Directive<[Spelling<"target teams loop">]> {
24562496 let allowedClauses = [
24572497 VersionedClause<OMPC_Allocate>,
@@ -2682,6 +2722,25 @@ def OMP_TeamsDistributeSimd : Directive<[Spelling<"teams distribute simd">]> {
26822722 let leafConstructs = [OMP_Teams, OMP_Distribute, OMP_Simd];
26832723 let category = CA_Executable;
26842724}
2725+ def OMP_TeamsWorkdistribute : Directive<[Spelling<"teams workdistribute">]> {
2726+ let allowedClauses = [
2727+ VersionedClause<OMPC_Allocate>,
2728+ VersionedClause<OMPC_FirstPrivate>,
2729+ VersionedClause<OMPC_OMPX_Attribute>,
2730+ VersionedClause<OMPC_Private>,
2731+ VersionedClause<OMPC_Reduction>,
2732+ VersionedClause<OMPC_Shared>,
2733+ ];
2734+ let allowedOnceClauses = [
2735+ VersionedClause<OMPC_Default>,
2736+ VersionedClause<OMPC_If, 52>,
2737+ VersionedClause<OMPC_NumTeams>,
2738+ VersionedClause<OMPC_ThreadLimit>,
2739+ ];
2740+ let leafConstructs = [OMP_Teams, OMP_Workdistribute];
2741+ let category = CA_Executable;
2742+ let languages = [L_Fortran];
2743+ }
26852744def OMP_teams_loop : Directive<[Spelling<"teams loop">]> {
26862745 let allowedClauses = [
26872746 VersionedClause<OMPC_Allocate>,
0 commit comments