Home | History | Annotate | Download | only in Basic
      1 //===--- OpenMPKinds.def - OpenMP directives and clauses list ---*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 /// \file
     10 /// \brief This file defines the list of supported OpenMP directives and
     11 /// clauses.
     12 ///
     13 //===----------------------------------------------------------------------===//
     14 
     15 #ifndef OPENMP_DIRECTIVE
     16 #  define OPENMP_DIRECTIVE(Name)
     17 #endif
     18 #ifndef OPENMP_DIRECTIVE_EXT
     19 #define OPENMP_DIRECTIVE_EXT(Name, Str)
     20 #endif
     21 #ifndef OPENMP_CLAUSE
     22 #  define OPENMP_CLAUSE(Name, Class)
     23 #endif
     24 #ifndef OPENMP_PARALLEL_CLAUSE
     25 #  define OPENMP_PARALLEL_CLAUSE(Name)
     26 #endif
     27 #ifndef OPENMP_SIMD_CLAUSE
     28 #  define OPENMP_SIMD_CLAUSE(Name)
     29 #endif
     30 #ifndef OPENMP_FOR_CLAUSE
     31 #  define OPENMP_FOR_CLAUSE(Name)
     32 #endif
     33 #ifndef OPENMP_FOR_SIMD_CLAUSE
     34 #  define OPENMP_FOR_SIMD_CLAUSE(Name)
     35 #endif
     36 #ifndef OPENMP_SECTIONS_CLAUSE
     37 #  define OPENMP_SECTIONS_CLAUSE(Name)
     38 #endif
     39 #ifndef OPENMP_SINGLE_CLAUSE
     40 #  define OPENMP_SINGLE_CLAUSE(Name)
     41 #endif
     42 #ifndef OPENMP_PARALLEL_FOR_CLAUSE
     43 #  define OPENMP_PARALLEL_FOR_CLAUSE(Name)
     44 #endif
     45 #ifndef OPENMP_PARALLEL_FOR_SIMD_CLAUSE
     46 #  define OPENMP_PARALLEL_FOR_SIMD_CLAUSE(Name)
     47 #endif
     48 #ifndef OPENMP_PARALLEL_SECTIONS_CLAUSE
     49 #  define OPENMP_PARALLEL_SECTIONS_CLAUSE(Name)
     50 #endif
     51 #ifndef OPENMP_TASK_CLAUSE
     52 #  define OPENMP_TASK_CLAUSE(Name)
     53 #endif
     54 #ifndef OPENMP_ATOMIC_CLAUSE
     55 #  define OPENMP_ATOMIC_CLAUSE(Name)
     56 #endif
     57 #ifndef OPENMP_TARGET_CLAUSE
     58 #  define OPENMP_TARGET_CLAUSE(Name)
     59 #endif
     60 #ifndef OPENMP_TARGET_DATA_CLAUSE
     61 #  define OPENMP_TARGET_DATA_CLAUSE(Name)
     62 #endif
     63 #ifndef OPENMP_TARGET_ENTER_DATA_CLAUSE
     64 #define OPENMP_TARGET_ENTER_DATA_CLAUSE(Name)
     65 #endif
     66 #ifndef OPENMP_TARGET_EXIT_DATA_CLAUSE
     67 #define OPENMP_TARGET_EXIT_DATA_CLAUSE(Name)
     68 #endif
     69 #ifndef OPENMP_TARGET_PARALLEL_CLAUSE
     70 #  define OPENMP_TARGET_PARALLEL_CLAUSE(Name)
     71 #endif
     72 #ifndef OPENMP_TARGET_PARALLEL_FOR_CLAUSE
     73 #  define OPENMP_TARGET_PARALLEL_FOR_CLAUSE(Name)
     74 #endif
     75 #ifndef OPENMP_TARGET_UPDATE_CLAUSE
     76 #  define OPENMP_TARGET_UPDATE_CLAUSE(Name)
     77 #endif
     78 #ifndef OPENMP_TEAMS_CLAUSE
     79 #  define OPENMP_TEAMS_CLAUSE(Name)
     80 #endif
     81 #ifndef OPENMP_CANCEL_CLAUSE
     82 #  define OPENMP_CANCEL_CLAUSE(Name)
     83 #endif
     84 #ifndef OPENMP_ORDERED_CLAUSE
     85 #  define OPENMP_ORDERED_CLAUSE(Name)
     86 #endif
     87 #ifndef OPENMP_TASKLOOP_CLAUSE
     88 #  define OPENMP_TASKLOOP_CLAUSE(Name)
     89 #endif
     90 #ifndef OPENMP_TASKLOOP_SIMD_CLAUSE
     91 #  define OPENMP_TASKLOOP_SIMD_CLAUSE(Name)
     92 #endif
     93 #ifndef OPENMP_CRITICAL_CLAUSE
     94 #  define OPENMP_CRITICAL_CLAUSE(Name)
     95 #endif
     96 #ifndef OPENMP_DISTRIBUTE_CLAUSE
     97 #define OPENMP_DISTRIBUTE_CLAUSE(Name)
     98 #endif
     99 #ifndef OPENMP_DEFAULT_KIND
    100 #  define OPENMP_DEFAULT_KIND(Name)
    101 #endif
    102 #ifndef OPENMP_PROC_BIND_KIND
    103 #  define OPENMP_PROC_BIND_KIND(Name)
    104 #endif
    105 #ifndef OPENMP_SCHEDULE_KIND
    106 #define OPENMP_SCHEDULE_KIND(Name)
    107 #endif
    108 #ifndef OPENMP_SCHEDULE_MODIFIER
    109 #define OPENMP_SCHEDULE_MODIFIER(Name)
    110 #endif
    111 #ifndef OPENMP_DEPEND_KIND
    112 #define OPENMP_DEPEND_KIND(Name)
    113 #endif
    114 #ifndef OPENMP_LINEAR_KIND
    115 #define OPENMP_LINEAR_KIND(Name)
    116 #endif
    117 #ifndef OPENMP_MAP_KIND
    118 #define OPENMP_MAP_KIND(Name)
    119 #endif
    120 #ifndef OPENMP_DIST_SCHEDULE_KIND
    121 #define OPENMP_DIST_SCHEDULE_KIND(Name)
    122 #endif
    123 #ifndef OPENMP_DEFAULTMAP_KIND
    124 #define OPENMP_DEFAULTMAP_KIND(Name)
    125 #endif
    126 #ifndef OPENMP_DEFAULTMAP_MODIFIER
    127 #define OPENMP_DEFAULTMAP_MODIFIER(Name)
    128 #endif
    129 #ifndef OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE
    130 #define OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(Name)
    131 #endif
    132 #ifndef OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE
    133 #define OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(Name)
    134 #endif
    135 #ifndef OPENMP_DISTRIBUTE_SIMD_CLAUSE
    136 #define OPENMP_DISTRIBUTE_SIMD_CLAUSE(Name)
    137 #endif
    138 #ifndef OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE
    139 #define OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(Name)
    140 #endif
    141 
    142 // OpenMP directives.
    143 OPENMP_DIRECTIVE(threadprivate)
    144 OPENMP_DIRECTIVE(parallel)
    145 OPENMP_DIRECTIVE(task)
    146 OPENMP_DIRECTIVE(simd)
    147 OPENMP_DIRECTIVE(for)
    148 OPENMP_DIRECTIVE(sections)
    149 OPENMP_DIRECTIVE(section)
    150 OPENMP_DIRECTIVE(single)
    151 OPENMP_DIRECTIVE(master)
    152 OPENMP_DIRECTIVE(critical)
    153 OPENMP_DIRECTIVE(taskyield)
    154 OPENMP_DIRECTIVE(barrier)
    155 OPENMP_DIRECTIVE(taskwait)
    156 OPENMP_DIRECTIVE(taskgroup)
    157 OPENMP_DIRECTIVE(flush)
    158 OPENMP_DIRECTIVE(ordered)
    159 OPENMP_DIRECTIVE(atomic)
    160 OPENMP_DIRECTIVE(target)
    161 OPENMP_DIRECTIVE(teams)
    162 OPENMP_DIRECTIVE(cancel)
    163 OPENMP_DIRECTIVE_EXT(target_data, "target data")
    164 OPENMP_DIRECTIVE_EXT(target_enter_data, "target enter data")
    165 OPENMP_DIRECTIVE_EXT(target_exit_data, "target exit data")
    166 OPENMP_DIRECTIVE_EXT(target_parallel, "target parallel")
    167 OPENMP_DIRECTIVE_EXT(target_parallel_for, "target parallel for")
    168 OPENMP_DIRECTIVE_EXT(target_update, "target update")
    169 OPENMP_DIRECTIVE_EXT(parallel_for, "parallel for")
    170 OPENMP_DIRECTIVE_EXT(parallel_for_simd, "parallel for simd")
    171 OPENMP_DIRECTIVE_EXT(parallel_sections, "parallel sections")
    172 OPENMP_DIRECTIVE_EXT(for_simd, "for simd")
    173 OPENMP_DIRECTIVE_EXT(cancellation_point, "cancellation point")
    174 OPENMP_DIRECTIVE_EXT(declare_reduction, "declare reduction")
    175 OPENMP_DIRECTIVE_EXT(declare_simd, "declare simd")
    176 OPENMP_DIRECTIVE(taskloop)
    177 OPENMP_DIRECTIVE_EXT(taskloop_simd, "taskloop simd")
    178 OPENMP_DIRECTIVE(distribute)
    179 OPENMP_DIRECTIVE_EXT(declare_target, "declare target")
    180 OPENMP_DIRECTIVE_EXT(end_declare_target, "end declare target")
    181 OPENMP_DIRECTIVE_EXT(distribute_parallel_for, "distribute parallel for")
    182 OPENMP_DIRECTIVE_EXT(distribute_parallel_for_simd, "distribute parallel for simd")
    183 OPENMP_DIRECTIVE_EXT(distribute_simd, "distribute simd")
    184 OPENMP_DIRECTIVE_EXT(target_parallel_for_simd, "target parallel for simd")
    185 
    186 // OpenMP clauses.
    187 OPENMP_CLAUSE(if, OMPIfClause)
    188 OPENMP_CLAUSE(final, OMPFinalClause)
    189 OPENMP_CLAUSE(num_threads, OMPNumThreadsClause)
    190 OPENMP_CLAUSE(safelen, OMPSafelenClause)
    191 OPENMP_CLAUSE(simdlen, OMPSimdlenClause)
    192 OPENMP_CLAUSE(collapse, OMPCollapseClause)
    193 OPENMP_CLAUSE(default, OMPDefaultClause)
    194 OPENMP_CLAUSE(private, OMPPrivateClause)
    195 OPENMP_CLAUSE(firstprivate, OMPFirstprivateClause)
    196 OPENMP_CLAUSE(lastprivate, OMPLastprivateClause)
    197 OPENMP_CLAUSE(shared,  OMPSharedClause)
    198 OPENMP_CLAUSE(reduction,  OMPReductionClause)
    199 OPENMP_CLAUSE(linear,  OMPLinearClause)
    200 OPENMP_CLAUSE(aligned, OMPAlignedClause)
    201 OPENMP_CLAUSE(copyin,  OMPCopyinClause)
    202 OPENMP_CLAUSE(copyprivate,  OMPCopyprivateClause)
    203 OPENMP_CLAUSE(proc_bind, OMPProcBindClause)
    204 OPENMP_CLAUSE(schedule, OMPScheduleClause)
    205 OPENMP_CLAUSE(ordered, OMPOrderedClause)
    206 OPENMP_CLAUSE(nowait, OMPNowaitClause)
    207 OPENMP_CLAUSE(untied, OMPUntiedClause)
    208 OPENMP_CLAUSE(mergeable, OMPMergeableClause)
    209 OPENMP_CLAUSE(flush, OMPFlushClause)
    210 OPENMP_CLAUSE(read, OMPReadClause)
    211 OPENMP_CLAUSE(write, OMPWriteClause)
    212 OPENMP_CLAUSE(update, OMPUpdateClause)
    213 OPENMP_CLAUSE(capture, OMPCaptureClause)
    214 OPENMP_CLAUSE(seq_cst, OMPSeqCstClause)
    215 OPENMP_CLAUSE(depend, OMPDependClause)
    216 OPENMP_CLAUSE(device, OMPDeviceClause)
    217 OPENMP_CLAUSE(threads, OMPThreadsClause)
    218 OPENMP_CLAUSE(simd, OMPSIMDClause)
    219 OPENMP_CLAUSE(map, OMPMapClause)
    220 OPENMP_CLAUSE(num_teams, OMPNumTeamsClause)
    221 OPENMP_CLAUSE(thread_limit, OMPThreadLimitClause)
    222 OPENMP_CLAUSE(priority, OMPPriorityClause)
    223 OPENMP_CLAUSE(grainsize, OMPGrainsizeClause)
    224 OPENMP_CLAUSE(nogroup, OMPNogroupClause)
    225 OPENMP_CLAUSE(num_tasks, OMPNumTasksClause)
    226 OPENMP_CLAUSE(hint, OMPHintClause)
    227 OPENMP_CLAUSE(dist_schedule, OMPDistScheduleClause)
    228 OPENMP_CLAUSE(defaultmap, OMPDefaultmapClause)
    229 OPENMP_CLAUSE(to, OMPToClause)
    230 OPENMP_CLAUSE(from, OMPFromClause)
    231 OPENMP_CLAUSE(use_device_ptr, OMPUseDevicePtrClause)
    232 OPENMP_CLAUSE(is_device_ptr, OMPIsDevicePtrClause)
    233 
    234 // Clauses allowed for OpenMP directive 'parallel'.
    235 OPENMP_PARALLEL_CLAUSE(if)
    236 OPENMP_PARALLEL_CLAUSE(num_threads)
    237 OPENMP_PARALLEL_CLAUSE(default)
    238 OPENMP_PARALLEL_CLAUSE(proc_bind)
    239 OPENMP_PARALLEL_CLAUSE(private)
    240 OPENMP_PARALLEL_CLAUSE(firstprivate)
    241 OPENMP_PARALLEL_CLAUSE(shared)
    242 OPENMP_PARALLEL_CLAUSE(reduction)
    243 OPENMP_PARALLEL_CLAUSE(copyin)
    244 
    245 // Clauses allowed for directive 'omp simd'.
    246 OPENMP_SIMD_CLAUSE(private)
    247 OPENMP_SIMD_CLAUSE(lastprivate)
    248 OPENMP_SIMD_CLAUSE(linear)
    249 OPENMP_SIMD_CLAUSE(aligned)
    250 OPENMP_SIMD_CLAUSE(safelen)
    251 OPENMP_SIMD_CLAUSE(simdlen)
    252 OPENMP_SIMD_CLAUSE(collapse)
    253 OPENMP_SIMD_CLAUSE(reduction)
    254 
    255 // Clauses allowed for directive 'omp for'.
    256 OPENMP_FOR_CLAUSE(private)
    257 OPENMP_FOR_CLAUSE(lastprivate)
    258 OPENMP_FOR_CLAUSE(firstprivate)
    259 OPENMP_FOR_CLAUSE(reduction)
    260 OPENMP_FOR_CLAUSE(collapse)
    261 OPENMP_FOR_CLAUSE(schedule)
    262 OPENMP_FOR_CLAUSE(ordered)
    263 OPENMP_FOR_CLAUSE(nowait)
    264 OPENMP_FOR_CLAUSE(linear)
    265 
    266 // Clauses allowed for directive 'omp for simd'.
    267 OPENMP_FOR_SIMD_CLAUSE(private)
    268 OPENMP_FOR_SIMD_CLAUSE(firstprivate)
    269 OPENMP_FOR_SIMD_CLAUSE(lastprivate)
    270 OPENMP_FOR_SIMD_CLAUSE(reduction)
    271 OPENMP_FOR_SIMD_CLAUSE(schedule)
    272 OPENMP_FOR_SIMD_CLAUSE(collapse)
    273 OPENMP_FOR_SIMD_CLAUSE(nowait)
    274 OPENMP_FOR_SIMD_CLAUSE(safelen)
    275 OPENMP_FOR_SIMD_CLAUSE(simdlen)
    276 OPENMP_FOR_SIMD_CLAUSE(linear)
    277 OPENMP_FOR_SIMD_CLAUSE(aligned)
    278 OPENMP_FOR_SIMD_CLAUSE(ordered)
    279 
    280 // Clauses allowed for OpenMP directive 'omp sections'.
    281 OPENMP_SECTIONS_CLAUSE(private)
    282 OPENMP_SECTIONS_CLAUSE(lastprivate)
    283 OPENMP_SECTIONS_CLAUSE(firstprivate)
    284 OPENMP_SECTIONS_CLAUSE(reduction)
    285 OPENMP_SECTIONS_CLAUSE(nowait)
    286 
    287 // Clauses allowed for directive 'omp single'.
    288 OPENMP_SINGLE_CLAUSE(private)
    289 OPENMP_SINGLE_CLAUSE(firstprivate)
    290 OPENMP_SINGLE_CLAUSE(copyprivate)
    291 OPENMP_SINGLE_CLAUSE(nowait)
    292 
    293 // Clauses allowed for OpenMP directive 'cancel'.
    294 OPENMP_CANCEL_CLAUSE(if)
    295 
    296 // Static attributes for 'default' clause.
    297 OPENMP_DEFAULT_KIND(none)
    298 OPENMP_DEFAULT_KIND(shared)
    299 
    300 // Static attributes for 'proc_bind' clause.
    301 OPENMP_PROC_BIND_KIND(master)
    302 OPENMP_PROC_BIND_KIND(close)
    303 OPENMP_PROC_BIND_KIND(spread)
    304 
    305 // Static attributes for 'schedule' clause.
    306 OPENMP_SCHEDULE_KIND(static)
    307 OPENMP_SCHEDULE_KIND(dynamic)
    308 OPENMP_SCHEDULE_KIND(guided)
    309 OPENMP_SCHEDULE_KIND(auto)
    310 OPENMP_SCHEDULE_KIND(runtime)
    311 
    312 // Modifiers for 'schedule' clause.
    313 OPENMP_SCHEDULE_MODIFIER(monotonic)
    314 OPENMP_SCHEDULE_MODIFIER(nonmonotonic)
    315 OPENMP_SCHEDULE_MODIFIER(simd)
    316 
    317 // Static attributes for 'defaultmap' clause.
    318 OPENMP_DEFAULTMAP_KIND(scalar)
    319 
    320 // Modifiers for 'defaultmap' clause.
    321 OPENMP_DEFAULTMAP_MODIFIER(tofrom)
    322 
    323 // Static attributes for 'depend' clause.
    324 OPENMP_DEPEND_KIND(in)
    325 OPENMP_DEPEND_KIND(out)
    326 OPENMP_DEPEND_KIND(inout)
    327 OPENMP_DEPEND_KIND(source)
    328 OPENMP_DEPEND_KIND(sink)
    329 
    330 // Modifiers for 'linear' clause.
    331 OPENMP_LINEAR_KIND(val)
    332 OPENMP_LINEAR_KIND(ref)
    333 OPENMP_LINEAR_KIND(uval)
    334 
    335 // Clauses allowed for OpenMP directive 'parallel for'.
    336 OPENMP_PARALLEL_FOR_CLAUSE(if)
    337 OPENMP_PARALLEL_FOR_CLAUSE(num_threads)
    338 OPENMP_PARALLEL_FOR_CLAUSE(default)
    339 OPENMP_PARALLEL_FOR_CLAUSE(proc_bind)
    340 OPENMP_PARALLEL_FOR_CLAUSE(private)
    341 OPENMP_PARALLEL_FOR_CLAUSE(firstprivate)
    342 OPENMP_PARALLEL_FOR_CLAUSE(shared)
    343 OPENMP_PARALLEL_FOR_CLAUSE(reduction)
    344 OPENMP_PARALLEL_FOR_CLAUSE(copyin)
    345 OPENMP_PARALLEL_FOR_CLAUSE(lastprivate)
    346 OPENMP_PARALLEL_FOR_CLAUSE(collapse)
    347 OPENMP_PARALLEL_FOR_CLAUSE(schedule)
    348 OPENMP_PARALLEL_FOR_CLAUSE(ordered)
    349 OPENMP_PARALLEL_FOR_CLAUSE(linear)
    350 
    351 // Clauses allowed for OpenMP directive 'parallel for simd'.
    352 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(if)
    353 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
    354 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(default)
    355 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
    356 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(private)
    357 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
    358 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(shared)
    359 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(reduction)
    360 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(copyin)
    361 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
    362 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(collapse)
    363 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(schedule)
    364 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(safelen)
    365 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
    366 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(linear)
    367 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(aligned)
    368 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(ordered)
    369 
    370 // Clauses allowed for OpenMP directive 'parallel sections'.
    371 OPENMP_PARALLEL_SECTIONS_CLAUSE(if)
    372 OPENMP_PARALLEL_SECTIONS_CLAUSE(num_threads)
    373 OPENMP_PARALLEL_SECTIONS_CLAUSE(default)
    374 OPENMP_PARALLEL_SECTIONS_CLAUSE(proc_bind)
    375 OPENMP_PARALLEL_SECTIONS_CLAUSE(private)
    376 OPENMP_PARALLEL_SECTIONS_CLAUSE(firstprivate)
    377 OPENMP_PARALLEL_SECTIONS_CLAUSE(shared)
    378 OPENMP_PARALLEL_SECTIONS_CLAUSE(reduction)
    379 OPENMP_PARALLEL_SECTIONS_CLAUSE(copyin)
    380 OPENMP_PARALLEL_SECTIONS_CLAUSE(lastprivate)
    381 
    382 // Clauses allowed for OpenMP directive 'task'.
    383 OPENMP_TASK_CLAUSE(if)
    384 OPENMP_TASK_CLAUSE(final)
    385 OPENMP_TASK_CLAUSE(default)
    386 OPENMP_TASK_CLAUSE(private)
    387 OPENMP_TASK_CLAUSE(firstprivate)
    388 OPENMP_TASK_CLAUSE(shared)
    389 OPENMP_TASK_CLAUSE(untied)
    390 OPENMP_TASK_CLAUSE(mergeable)
    391 OPENMP_TASK_CLAUSE(depend)
    392 OPENMP_TASK_CLAUSE(priority)
    393 
    394 // Clauses allowed for OpenMP directive 'atomic'.
    395 OPENMP_ATOMIC_CLAUSE(read)
    396 OPENMP_ATOMIC_CLAUSE(write)
    397 OPENMP_ATOMIC_CLAUSE(update)
    398 OPENMP_ATOMIC_CLAUSE(capture)
    399 OPENMP_ATOMIC_CLAUSE(seq_cst)
    400 
    401 // Clauses allowed for OpenMP directive 'target'.
    402 OPENMP_TARGET_CLAUSE(if)
    403 OPENMP_TARGET_CLAUSE(device)
    404 OPENMP_TARGET_CLAUSE(map)
    405 OPENMP_TARGET_CLAUSE(private)
    406 OPENMP_TARGET_CLAUSE(nowait)
    407 OPENMP_TARGET_CLAUSE(depend)
    408 OPENMP_TARGET_CLAUSE(defaultmap)
    409 OPENMP_TARGET_CLAUSE(firstprivate)
    410 OPENMP_TARGET_CLAUSE(is_device_ptr)
    411 
    412 // Clauses allowed for OpenMP directive 'target data'.
    413 // TODO More clauses for 'target data' directive.
    414 OPENMP_TARGET_DATA_CLAUSE(if)
    415 OPENMP_TARGET_DATA_CLAUSE(device)
    416 OPENMP_TARGET_DATA_CLAUSE(map)
    417 OPENMP_TARGET_DATA_CLAUSE(use_device_ptr)
    418 
    419 // Clauses allowed for OpenMP directive 'target enter data'.
    420 OPENMP_TARGET_ENTER_DATA_CLAUSE(if)
    421 OPENMP_TARGET_ENTER_DATA_CLAUSE(device)
    422 OPENMP_TARGET_ENTER_DATA_CLAUSE(map)
    423 OPENMP_TARGET_ENTER_DATA_CLAUSE(nowait)
    424 OPENMP_TARGET_ENTER_DATA_CLAUSE(depend)
    425 
    426 // Clauses allowed for OpenMP directive 'target exit data'.
    427 OPENMP_TARGET_EXIT_DATA_CLAUSE(if)
    428 OPENMP_TARGET_EXIT_DATA_CLAUSE(device)
    429 OPENMP_TARGET_EXIT_DATA_CLAUSE(map)
    430 OPENMP_TARGET_EXIT_DATA_CLAUSE(nowait)
    431 OPENMP_TARGET_EXIT_DATA_CLAUSE(depend)
    432 
    433 // Clauses allowed for OpenMP directive 'target parallel'.
    434 // TODO: add target clauses 'is_device_ptr'
    435 OPENMP_TARGET_PARALLEL_CLAUSE(if)
    436 OPENMP_TARGET_PARALLEL_CLAUSE(device)
    437 OPENMP_TARGET_PARALLEL_CLAUSE(map)
    438 OPENMP_TARGET_PARALLEL_CLAUSE(private)
    439 OPENMP_TARGET_PARALLEL_CLAUSE(firstprivate)
    440 OPENMP_TARGET_PARALLEL_CLAUSE(nowait)
    441 OPENMP_TARGET_PARALLEL_CLAUSE(depend)
    442 OPENMP_TARGET_PARALLEL_CLAUSE(defaultmap)
    443 OPENMP_TARGET_PARALLEL_CLAUSE(num_threads)
    444 OPENMP_TARGET_PARALLEL_CLAUSE(default)
    445 OPENMP_TARGET_PARALLEL_CLAUSE(proc_bind)
    446 OPENMP_TARGET_PARALLEL_CLAUSE(shared)
    447 OPENMP_TARGET_PARALLEL_CLAUSE(reduction)
    448 
    449 // Clauses allowed for OpenMP directive 'target parallel for'.
    450 // TODO: add target clauses 'is_device_ptr'
    451 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(if)
    452 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(device)
    453 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(map)
    454 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(private)
    455 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(firstprivate)
    456 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(lastprivate)
    457 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(nowait)
    458 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(depend)
    459 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(defaultmap)
    460 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(num_threads)
    461 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(default)
    462 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(proc_bind)
    463 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(shared)
    464 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(reduction)
    465 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(collapse)
    466 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(schedule)
    467 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(ordered)
    468 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(linear)
    469 
    470 // Clauses allowed for OpenMP directive 'target update'.
    471 // TODO More clauses for 'target update' directive.
    472 OPENMP_TARGET_UPDATE_CLAUSE(if)
    473 OPENMP_TARGET_UPDATE_CLAUSE(device)
    474 OPENMP_TARGET_UPDATE_CLAUSE(to)
    475 OPENMP_TARGET_UPDATE_CLAUSE(from)
    476 OPENMP_TARGET_UPDATE_CLAUSE(nowait)
    477 OPENMP_TARGET_UPDATE_CLAUSE(depend)
    478 
    479 // Clauses allowed for OpenMP directive 'teams'.
    480 // TODO More clauses for 'teams' directive.
    481 OPENMP_TEAMS_CLAUSE(default)
    482 OPENMP_TEAMS_CLAUSE(private)
    483 OPENMP_TEAMS_CLAUSE(firstprivate)
    484 OPENMP_TEAMS_CLAUSE(shared)
    485 OPENMP_TEAMS_CLAUSE(reduction)
    486 OPENMP_TEAMS_CLAUSE(num_teams)
    487 OPENMP_TEAMS_CLAUSE(thread_limit)
    488 
    489 // Clauses allowed for OpenMP directive 'ordered'.
    490 // TODO More clauses for 'ordered' directive.
    491 OPENMP_ORDERED_CLAUSE(threads)
    492 OPENMP_ORDERED_CLAUSE(simd)
    493 OPENMP_ORDERED_CLAUSE(depend)
    494 
    495 // Map types and map type modifier for 'map' clause.
    496 OPENMP_MAP_KIND(alloc)
    497 OPENMP_MAP_KIND(to)
    498 OPENMP_MAP_KIND(from)
    499 OPENMP_MAP_KIND(tofrom)
    500 OPENMP_MAP_KIND(delete)
    501 OPENMP_MAP_KIND(release)
    502 OPENMP_MAP_KIND(always)
    503 
    504 // Clauses allowed for OpenMP directive 'taskloop'.
    505 OPENMP_TASKLOOP_CLAUSE(if)
    506 OPENMP_TASKLOOP_CLAUSE(shared)
    507 OPENMP_TASKLOOP_CLAUSE(private)
    508 OPENMP_TASKLOOP_CLAUSE(firstprivate)
    509 OPENMP_TASKLOOP_CLAUSE(lastprivate)
    510 OPENMP_TASKLOOP_CLAUSE(default)
    511 OPENMP_TASKLOOP_CLAUSE(collapse)
    512 OPENMP_TASKLOOP_CLAUSE(final)
    513 OPENMP_TASKLOOP_CLAUSE(untied)
    514 OPENMP_TASKLOOP_CLAUSE(mergeable)
    515 OPENMP_TASKLOOP_CLAUSE(priority)
    516 OPENMP_TASKLOOP_CLAUSE(grainsize)
    517 OPENMP_TASKLOOP_CLAUSE(nogroup)
    518 OPENMP_TASKLOOP_CLAUSE(num_tasks)
    519 
    520 // Clauses allowed for OpenMP directive 'taskloop simd'.
    521 OPENMP_TASKLOOP_SIMD_CLAUSE(if)
    522 OPENMP_TASKLOOP_SIMD_CLAUSE(shared)
    523 OPENMP_TASKLOOP_SIMD_CLAUSE(private)
    524 OPENMP_TASKLOOP_SIMD_CLAUSE(firstprivate)
    525 OPENMP_TASKLOOP_SIMD_CLAUSE(lastprivate)
    526 OPENMP_TASKLOOP_SIMD_CLAUSE(default)
    527 OPENMP_TASKLOOP_SIMD_CLAUSE(collapse)
    528 OPENMP_TASKLOOP_SIMD_CLAUSE(final)
    529 OPENMP_TASKLOOP_SIMD_CLAUSE(untied)
    530 OPENMP_TASKLOOP_SIMD_CLAUSE(mergeable)
    531 OPENMP_TASKLOOP_SIMD_CLAUSE(priority)
    532 OPENMP_TASKLOOP_SIMD_CLAUSE(linear)
    533 OPENMP_TASKLOOP_SIMD_CLAUSE(aligned)
    534 OPENMP_TASKLOOP_SIMD_CLAUSE(safelen)
    535 OPENMP_TASKLOOP_SIMD_CLAUSE(simdlen)
    536 OPENMP_TASKLOOP_SIMD_CLAUSE(grainsize)
    537 OPENMP_TASKLOOP_SIMD_CLAUSE(nogroup)
    538 OPENMP_TASKLOOP_SIMD_CLAUSE(num_tasks)
    539 
    540 // Clauses allowed for OpenMP directive 'critical'.
    541 OPENMP_CRITICAL_CLAUSE(hint)
    542 
    543 // Clauses allowed for OpenMP directive 'distribute'
    544 OPENMP_DISTRIBUTE_CLAUSE(private)
    545 OPENMP_DISTRIBUTE_CLAUSE(firstprivate)
    546 OPENMP_DISTRIBUTE_CLAUSE(lastprivate)
    547 OPENMP_DISTRIBUTE_CLAUSE(collapse)
    548 OPENMP_DISTRIBUTE_CLAUSE(dist_schedule)
    549 
    550 // Static attributes for 'dist_schedule' clause.
    551 OPENMP_DIST_SCHEDULE_KIND(static)
    552 
    553 // Clauses allowed for OpenMP directive 'distribute parallel for'
    554 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(firstprivate)
    555 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(lastprivate)
    556 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(collapse)
    557 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(dist_schedule)
    558 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(if)
    559 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_threads)
    560 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(default)
    561 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(proc_bind)
    562 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(private)
    563 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(shared)
    564 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(reduction)
    565 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(copyin)
    566 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(schedule)
    567 
    568 // Clauses allowed for OpenMP directive 'distribute parallel for simd'
    569 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
    570 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
    571 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(collapse)
    572 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(dist_schedule)
    573 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(if)
    574 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
    575 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(default)
    576 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
    577 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(private)
    578 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(shared)
    579 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(reduction)
    580 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(copyin)
    581 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(schedule)
    582 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(linear)
    583 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(aligned)
    584 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(safelen)
    585 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
    586 
    587 // Clauses allowed for OpenMP directive 'distribute simd'
    588 OPENMP_DISTRIBUTE_SIMD_CLAUSE(private)
    589 OPENMP_DISTRIBUTE_SIMD_CLAUSE(firstprivate)
    590 OPENMP_DISTRIBUTE_SIMD_CLAUSE(lastprivate)
    591 OPENMP_DISTRIBUTE_SIMD_CLAUSE(collapse)
    592 OPENMP_DISTRIBUTE_SIMD_CLAUSE(dist_schedule)
    593 OPENMP_DISTRIBUTE_SIMD_CLAUSE(linear)
    594 OPENMP_DISTRIBUTE_SIMD_CLAUSE(aligned)
    595 OPENMP_DISTRIBUTE_SIMD_CLAUSE(safelen)
    596 OPENMP_DISTRIBUTE_SIMD_CLAUSE(simdlen)
    597 OPENMP_DISTRIBUTE_SIMD_CLAUSE(reduction)
    598 
    599 // Clauses allowed for OpenMP directive 'target parallel for simd'.
    600 // TODO: add target clauses 'is_device_ptr'
    601 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(if)
    602 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(device)
    603 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(map)
    604 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(private)
    605 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
    606 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
    607 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(nowait)
    608 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(depend)
    609 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(defaultmap)
    610 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
    611 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(default)
    612 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
    613 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(shared)
    614 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(reduction)
    615 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(collapse)
    616 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(schedule)
    617 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(ordered)
    618 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(linear)
    619 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(safelen)
    620 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
    621 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(aligned)
    622 
    623 #undef OPENMP_TASKLOOP_SIMD_CLAUSE
    624 #undef OPENMP_TASKLOOP_CLAUSE
    625 #undef OPENMP_LINEAR_KIND
    626 #undef OPENMP_DEPEND_KIND
    627 #undef OPENMP_SCHEDULE_MODIFIER
    628 #undef OPENMP_SCHEDULE_KIND
    629 #undef OPENMP_PROC_BIND_KIND
    630 #undef OPENMP_DEFAULT_KIND
    631 #undef OPENMP_DIRECTIVE
    632 #undef OPENMP_DIRECTIVE_EXT
    633 #undef OPENMP_CLAUSE
    634 #undef OPENMP_CRITICAL_CLAUSE
    635 #undef OPENMP_ORDERED_CLAUSE
    636 #undef OPENMP_CANCEL_CLAUSE
    637 #undef OPENMP_SINGLE_CLAUSE
    638 #undef OPENMP_SECTIONS_CLAUSE
    639 #undef OPENMP_PARALLEL_CLAUSE
    640 #undef OPENMP_PARALLEL_FOR_CLAUSE
    641 #undef OPENMP_PARALLEL_FOR_SIMD_CLAUSE
    642 #undef OPENMP_PARALLEL_SECTIONS_CLAUSE
    643 #undef OPENMP_TASK_CLAUSE
    644 #undef OPENMP_ATOMIC_CLAUSE
    645 #undef OPENMP_TARGET_CLAUSE
    646 #undef OPENMP_TARGET_DATA_CLAUSE
    647 #undef OPENMP_TARGET_ENTER_DATA_CLAUSE
    648 #undef OPENMP_TARGET_EXIT_DATA_CLAUSE
    649 #undef OPENMP_TARGET_PARALLEL_CLAUSE
    650 #undef OPENMP_TARGET_PARALLEL_FOR_CLAUSE
    651 #undef OPENMP_TEAMS_CLAUSE
    652 #undef OPENMP_SIMD_CLAUSE
    653 #undef OPENMP_FOR_CLAUSE
    654 #undef OPENMP_FOR_SIMD_CLAUSE
    655 #undef OPENMP_MAP_KIND
    656 #undef OPENMP_DISTRIBUTE_CLAUSE
    657 #undef OPENMP_DIST_SCHEDULE_KIND
    658 #undef OPENMP_DEFAULTMAP_KIND
    659 #undef OPENMP_DEFAULTMAP_MODIFIER
    660 #undef OPENMP_TARGET_UPDATE_CLAUSE
    661 #undef OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE
    662 #undef OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE
    663 #undef OPENMP_DISTRIBUTE_SIMD_CLAUSE
    664 #undef OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE
    665