diff options
author | Kelvin Li <kkwli0@gmail.com> | 2016-11-30 23:51:03 +0000 |
---|---|---|
committer | Kelvin Li <kkwli0@gmail.com> | 2016-11-30 23:51:03 +0000 |
commit | 579e41ced22fe784060d07b9395f58f5c2f7ad0d (patch) | |
tree | b9e8ddf914f542f4917133564497313cfb83ae1f /clang/lib/Parse/ParseOpenMP.cpp | |
parent | ed14cb060420040e712ff159058e53c62a7326a0 (diff) | |
download | bcm5719-llvm-579e41ced22fe784060d07b9395f58f5c2f7ad0d.tar.gz bcm5719-llvm-579e41ced22fe784060d07b9395f58f5c2f7ad0d.zip |
[OpenMP] Sema and parsing for 'teams distribute parallel for simd' pragma
This patch is to implement sema and parsing for 'teams distribute parallel for simd' pragma.
Differential Revision: https://reviews.llvm.org/D27084
llvm-svn: 288294
Diffstat (limited to 'clang/lib/Parse/ParseOpenMP.cpp')
-rw-r--r-- | clang/lib/Parse/ParseOpenMP.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp index 4f418e3946d..ce1b3cd2ebe 100644 --- a/clang/lib/Parse/ParseOpenMP.cpp +++ b/clang/lib/Parse/ParseOpenMP.cpp @@ -39,7 +39,9 @@ enum OpenMPDirectiveKindEx { OMPD_target_enter, OMPD_target_exit, OMPD_update, - OMPD_distribute_parallel + OMPD_distribute_parallel, + OMPD_teams_distribute_parallel, + OMPD_teams_distribute_parallel_for }; class ThreadprivateListParserHelper final { @@ -110,7 +112,10 @@ static OpenMPDirectiveKind ParseOpenMPDirectiveKind(Parser &P) { { OMPD_target_parallel, OMPD_for, OMPD_target_parallel_for }, { OMPD_target_parallel_for, OMPD_simd, OMPD_target_parallel_for_simd }, { OMPD_teams, OMPD_distribute, OMPD_teams_distribute }, - { OMPD_teams_distribute, OMPD_simd, OMPD_teams_distribute_simd } + { OMPD_teams_distribute, OMPD_simd, OMPD_teams_distribute_simd }, + { OMPD_teams_distribute, OMPD_parallel, OMPD_teams_distribute_parallel }, + { OMPD_teams_distribute_parallel, OMPD_for, OMPD_teams_distribute_parallel_for }, + { OMPD_teams_distribute_parallel_for, OMPD_simd, OMPD_teams_distribute_parallel_for_simd } }; enum { CancellationPoint = 0, DeclareReduction = 1, TargetData = 2 }; auto Tok = P.getCurToken(); @@ -744,6 +749,7 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( case OMPD_target_simd: case OMPD_teams_distribute: case OMPD_teams_distribute_simd: + case OMPD_teams_distribute_parallel_for_simd: Diag(Tok, diag::err_omp_unexpected_directive) << getOpenMPDirectiveName(DKind); break; @@ -778,7 +784,8 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( /// 'target update' | 'distribute parallel for' | /// 'distribute paralle for simd' | 'distribute simd' | /// 'target parallel for simd' | 'target simd' | -/// 'teams distribute' | 'teams distribute simd' {clause} +/// 'teams distribute' | 'teams distribute simd' | +/// 'teams distribute parallel for simd' {clause} /// annot_pragma_openmp_end /// StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective( @@ -889,7 +896,8 @@ StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective( case OMPD_target_parallel_for_simd: case OMPD_target_simd: case OMPD_teams_distribute: - case OMPD_teams_distribute_simd: { + case OMPD_teams_distribute_simd: + case OMPD_teams_distribute_parallel_for_simd: { ConsumeToken(); // Parse directive name of the 'critical' directive if any. if (DKind == OMPD_critical) { |