diff options
author | Kelvin Li <kkwli0@gmail.com> | 2016-12-29 22:16:30 +0000 |
---|---|---|
committer | Kelvin Li <kkwli0@gmail.com> | 2016-12-29 22:16:30 +0000 |
commit | 80e8f562846e9d2b7c73f0feadb1c160f5e59a51 (patch) | |
tree | a8779e799045b14b5741ff4a47919c1ec821e850 /clang/lib/Basic/OpenMPKinds.cpp | |
parent | e0bd37e78fb4a6e80e6f43c2b959b8aeb9ee6303 (diff) | |
download | bcm5719-llvm-80e8f562846e9d2b7c73f0feadb1c160f5e59a51.tar.gz bcm5719-llvm-80e8f562846e9d2b7c73f0feadb1c160f5e59a51.zip |
[OpenMP] Sema and parsing for 'target teams distribute parallel for’ pragma
This patch is to implement sema and parsing for 'target teams distribute parallel for’ pragma.
Differential Revision: https://reviews.llvm.org/D28160
llvm-svn: 290725
Diffstat (limited to 'clang/lib/Basic/OpenMPKinds.cpp')
-rw-r--r-- | clang/lib/Basic/OpenMPKinds.cpp | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/clang/lib/Basic/OpenMPKinds.cpp b/clang/lib/Basic/OpenMPKinds.cpp index c99b3e8e75f..4675995ea72 100644 --- a/clang/lib/Basic/OpenMPKinds.cpp +++ b/clang/lib/Basic/OpenMPKinds.cpp @@ -680,6 +680,16 @@ bool clang::isAllowedClauseForDirective(OpenMPDirectiveKind DKind, break; } break; + case OMPD_target_teams_distribute_parallel_for: + switch (CKind) { +#define OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(Name) \ + case OMPC_##Name: \ + return true; +#include "clang/Basic/OpenMPKinds.def" + default: + break; + } + break; case OMPD_declare_target: case OMPD_end_declare_target: case OMPD_unknown: @@ -710,7 +720,8 @@ bool clang::isOpenMPLoopDirective(OpenMPDirectiveKind DKind) { DKind == OMPD_teams_distribute_simd || DKind == OMPD_teams_distribute_parallel_for_simd || DKind == OMPD_teams_distribute_parallel_for || - DKind == OMPD_target_teams_distribute; + DKind == OMPD_target_teams_distribute || + DKind == OMPD_target_teams_distribute_parallel_for; } bool clang::isOpenMPWorksharingDirective(OpenMPDirectiveKind DKind) { @@ -723,7 +734,8 @@ bool clang::isOpenMPWorksharingDirective(OpenMPDirectiveKind DKind) { DKind == OMPD_distribute_parallel_for_simd || DKind == OMPD_target_parallel_for_simd || DKind == OMPD_teams_distribute_parallel_for_simd || - DKind == OMPD_teams_distribute_parallel_for; + DKind == OMPD_teams_distribute_parallel_for || + DKind == OMPD_target_teams_distribute_parallel_for; // TODO add next directives. } @@ -739,7 +751,8 @@ bool clang::isOpenMPParallelDirective(OpenMPDirectiveKind DKind) { DKind == OMPD_distribute_parallel_for_simd || DKind == OMPD_target_parallel_for_simd || DKind == OMPD_teams_distribute_parallel_for || - DKind == OMPD_teams_distribute_parallel_for_simd; + DKind == OMPD_teams_distribute_parallel_for_simd || + DKind == OMPD_target_teams_distribute_parallel_for; // TODO add next directives. } @@ -747,7 +760,8 @@ bool clang::isOpenMPTargetExecutionDirective(OpenMPDirectiveKind DKind) { return DKind == OMPD_target || DKind == OMPD_target_parallel || DKind == OMPD_target_parallel_for || DKind == OMPD_target_parallel_for_simd || DKind == OMPD_target_simd || - DKind == OMPD_target_teams || DKind == OMPD_target_teams_distribute; + DKind == OMPD_target_teams || DKind == OMPD_target_teams_distribute || + DKind == OMPD_target_teams_distribute_parallel_for; } bool clang::isOpenMPTargetDataManagementDirective(OpenMPDirectiveKind DKind) { @@ -764,7 +778,8 @@ bool clang::isOpenMPNestingTeamsDirective(OpenMPDirectiveKind DKind) { bool clang::isOpenMPTeamsDirective(OpenMPDirectiveKind DKind) { return isOpenMPNestingTeamsDirective(DKind) || - DKind == OMPD_target_teams || DKind == OMPD_target_teams_distribute; + DKind == OMPD_target_teams || DKind == OMPD_target_teams_distribute || + DKind == OMPD_target_teams_distribute_parallel_for; } bool clang::isOpenMPSimdDirective(OpenMPDirectiveKind DKind) { @@ -789,7 +804,8 @@ bool clang::isOpenMPDistributeDirective(OpenMPDirectiveKind Kind) { Kind == OMPD_teams_distribute || Kind == OMPD_teams_distribute_simd || Kind == OMPD_teams_distribute_parallel_for_simd || Kind == OMPD_teams_distribute_parallel_for || - Kind == OMPD_target_teams_distribute; + Kind == OMPD_target_teams_distribute || + Kind == OMPD_target_teams_distribute_parallel_for; } bool clang::isOpenMPPrivate(OpenMPClauseKind Kind) { @@ -813,5 +829,6 @@ bool clang::isOpenMPLoopBoundSharingDirective(OpenMPDirectiveKind Kind) { Kind == OMPD_teams_distribute_simd || Kind == OMPD_teams_distribute_parallel_for_simd || Kind == OMPD_teams_distribute_parallel_for || - Kind == OMPD_target_teams_distribute; + Kind == OMPD_target_teams_distribute || + Kind == OMPD_target_teams_distribute_parallel_for; } |