diff options
Diffstat (limited to 'lib/Basic/OpenMPKinds.cpp')
| -rw-r--r-- | lib/Basic/OpenMPKinds.cpp | 137 | 
1 files changed, 127 insertions, 10 deletions
diff --git a/lib/Basic/OpenMPKinds.cpp b/lib/Basic/OpenMPKinds.cpp index d1e4779e2c727..4675995ea7221 100644 --- a/lib/Basic/OpenMPKinds.cpp +++ b/lib/Basic/OpenMPKinds.cpp @@ -610,6 +610,86 @@ bool clang::isAllowedClauseForDirective(OpenMPDirectiveKind DKind,        break;      }      break; +  case OMPD_target_simd: +    switch (CKind) { +#define OPENMP_TARGET_SIMD_CLAUSE(Name)                                        \ +  case OMPC_##Name:                                                            \ +    return true; +#include "clang/Basic/OpenMPKinds.def" +    default: +      break; +    } +    break; +  case OMPD_teams_distribute: +    switch (CKind) { +#define OPENMP_TEAMS_DISTRIBUTE_CLAUSE(Name)                                   \ +  case OMPC_##Name:                                                            \ +    return true; +#include "clang/Basic/OpenMPKinds.def" +    default: +      break; +    } +    break; +  case OMPD_teams_distribute_simd: +    switch (CKind) { +#define OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(Name)                              \ +  case OMPC_##Name:                                                            \ +    return true; +#include "clang/Basic/OpenMPKinds.def" +    default: +      break; +    } +    break; +  case OMPD_teams_distribute_parallel_for_simd: +    switch (CKind) { +#define OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(Name)                 \ +  case OMPC_##Name:                                                            \ +    return true; +#include "clang/Basic/OpenMPKinds.def" +    default: +      break; +    } +    break; +  case OMPD_teams_distribute_parallel_for: +    switch (CKind) { +#define OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(Name)                      \ +  case OMPC_##Name:                                                            \ +    return true; +#include "clang/Basic/OpenMPKinds.def" +    default: +      break; +    } +    break; +  case OMPD_target_teams: +    switch (CKind) { +#define OPENMP_TARGET_TEAMS_CLAUSE(Name)                                       \ +  case OMPC_##Name:                                                            \ +    return true; +#include "clang/Basic/OpenMPKinds.def" +    default: +      break; +    } +    break; +  case OMPD_target_teams_distribute: +    switch (CKind) { +#define OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(Name)                            \ +  case OMPC_##Name:                                                            \ +    return true; +#include "clang/Basic/OpenMPKinds.def" +    default: +      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: @@ -635,8 +715,13 @@ bool clang::isOpenMPLoopDirective(OpenMPDirectiveKind DKind) {           DKind == OMPD_distribute_parallel_for ||           DKind == OMPD_distribute_parallel_for_simd ||           DKind == OMPD_distribute_simd || -         DKind == OMPD_target_parallel_for_simd; -  // TODO add next directives. +         DKind == OMPD_target_parallel_for_simd || DKind == OMPD_target_simd || +         DKind == OMPD_teams_distribute || +         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_parallel_for;  }  bool clang::isOpenMPWorksharingDirective(OpenMPDirectiveKind DKind) { @@ -647,7 +732,10 @@ bool clang::isOpenMPWorksharingDirective(OpenMPDirectiveKind DKind) {           DKind == OMPD_target_parallel_for ||           DKind == OMPD_distribute_parallel_for ||           DKind == OMPD_distribute_parallel_for_simd || -         DKind == OMPD_target_parallel_for_simd; +         DKind == OMPD_target_parallel_for_simd || +         DKind == OMPD_teams_distribute_parallel_for_simd || +         DKind == OMPD_teams_distribute_parallel_for || +         DKind == OMPD_target_teams_distribute_parallel_for;    // TODO add next directives.  } @@ -661,15 +749,19 @@ bool clang::isOpenMPParallelDirective(OpenMPDirectiveKind DKind) {           DKind == OMPD_target_parallel || DKind == OMPD_target_parallel_for ||           DKind == OMPD_distribute_parallel_for ||           DKind == OMPD_distribute_parallel_for_simd || -         DKind == OMPD_target_parallel_for_simd; +         DKind == OMPD_target_parallel_for_simd || +         DKind == OMPD_teams_distribute_parallel_for || +         DKind == OMPD_teams_distribute_parallel_for_simd || +         DKind == OMPD_target_teams_distribute_parallel_for;    // TODO add next directives.  }  bool clang::isOpenMPTargetExecutionDirective(OpenMPDirectiveKind DKind) { -  // TODO add next directives.    return DKind == OMPD_target || DKind == OMPD_target_parallel ||           DKind == OMPD_target_parallel_for ||  -         DKind == OMPD_target_parallel_for_simd; +         DKind == OMPD_target_parallel_for_simd || DKind == OMPD_target_simd || +         DKind == OMPD_target_teams || DKind == OMPD_target_teams_distribute || +         DKind == OMPD_target_teams_distribute_parallel_for;  }  bool clang::isOpenMPTargetDataManagementDirective(OpenMPDirectiveKind DKind) { @@ -677,25 +769,45 @@ bool clang::isOpenMPTargetDataManagementDirective(OpenMPDirectiveKind DKind) {           DKind == OMPD_target_exit_data || DKind == OMPD_target_update;  } +bool clang::isOpenMPNestingTeamsDirective(OpenMPDirectiveKind DKind) { +  return DKind == OMPD_teams || DKind == OMPD_teams_distribute || +         DKind == OMPD_teams_distribute_simd || +         DKind == OMPD_teams_distribute_parallel_for_simd || +         DKind == OMPD_teams_distribute_parallel_for; +} +  bool clang::isOpenMPTeamsDirective(OpenMPDirectiveKind DKind) { -  return DKind == OMPD_teams; // TODO add next directives. +  return isOpenMPNestingTeamsDirective(DKind) || +         DKind == OMPD_target_teams || DKind == OMPD_target_teams_distribute || +         DKind == OMPD_target_teams_distribute_parallel_for;  }  bool clang::isOpenMPSimdDirective(OpenMPDirectiveKind DKind) {    return DKind == OMPD_simd || DKind == OMPD_for_simd ||           DKind == OMPD_parallel_for_simd || DKind == OMPD_taskloop_simd ||           DKind == OMPD_distribute_parallel_for_simd || -         DKind == OMPD_distribute_simd; +         DKind == OMPD_distribute_simd || DKind == OMPD_target_simd || +         DKind == OMPD_teams_distribute_simd || +         DKind == OMPD_teams_distribute_parallel_for_simd;    // TODO add next directives.  } -bool clang::isOpenMPDistributeDirective(OpenMPDirectiveKind Kind) { +bool clang::isOpenMPNestingDistributeDirective(OpenMPDirectiveKind Kind) {    return Kind == OMPD_distribute || Kind == OMPD_distribute_parallel_for ||           Kind == OMPD_distribute_parallel_for_simd ||           Kind == OMPD_distribute_simd;    // TODO add next directives.  } +bool clang::isOpenMPDistributeDirective(OpenMPDirectiveKind Kind) { +  return isOpenMPNestingDistributeDirective(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_parallel_for; +} +  bool clang::isOpenMPPrivate(OpenMPClauseKind Kind) {    return Kind == OMPC_private || Kind == OMPC_firstprivate ||           Kind == OMPC_lastprivate || Kind == OMPC_linear || @@ -713,5 +825,10 @@ bool clang::isOpenMPTaskingDirective(OpenMPDirectiveKind Kind) {  bool clang::isOpenMPLoopBoundSharingDirective(OpenMPDirectiveKind Kind) {    return Kind == OMPD_distribute_parallel_for ||           Kind == OMPD_distribute_parallel_for_simd || -         Kind == OMPD_distribute_simd; +         Kind == OMPD_distribute_simd || 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_parallel_for;  }  | 
