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 #ifndef OPENMP_TARGET_SIMD_CLAUSE
    142 #define OPENMP_TARGET_SIMD_CLAUSE(Name)
    143 #endif
    144 #ifndef OPENMP_TEAMS_DISTRIBUTE_CLAUSE
    145 #define OPENMP_TEAMS_DISTRIBUTE_CLAUSE(Name)
    146 #endif
    147 #ifndef OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE
    148 #define OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(Name)
    149 #endif
    150 #ifndef OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE
    151 #define OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(Name)
    152 #endif
    153 #ifndef OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE
    154 #define OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(Name)
    155 #endif
    156 #ifndef OPENMP_TARGET_TEAMS_CLAUSE
    157 #define OPENMP_TARGET_TEAMS_CLAUSE(Name)
    158 #endif
    159 #ifndef OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE
    160 #define OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(Name)
    161 #endif
    162 #ifndef OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE
    163 #define OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(Name)
    164 #endif
    165 #ifndef OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE
    166 #define OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(Name)
    167 #endif
    168 #ifndef OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE
    169 #define OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(Name)
    170 #endif
    171 #ifndef OPENMP_TASKGROUP_CLAUSE
    172 #define OPENMP_TASKGROUP_CLAUSE(Name)
    173 #endif
    174 
    175 // OpenMP directives.
    176 OPENMP_DIRECTIVE(threadprivate)
    177 OPENMP_DIRECTIVE(parallel)
    178 OPENMP_DIRECTIVE(task)
    179 OPENMP_DIRECTIVE(simd)
    180 OPENMP_DIRECTIVE(for)
    181 OPENMP_DIRECTIVE(sections)
    182 OPENMP_DIRECTIVE(section)
    183 OPENMP_DIRECTIVE(single)
    184 OPENMP_DIRECTIVE(master)
    185 OPENMP_DIRECTIVE(critical)
    186 OPENMP_DIRECTIVE(taskyield)
    187 OPENMP_DIRECTIVE(barrier)
    188 OPENMP_DIRECTIVE(taskwait)
    189 OPENMP_DIRECTIVE(taskgroup)
    190 OPENMP_DIRECTIVE(flush)
    191 OPENMP_DIRECTIVE(ordered)
    192 OPENMP_DIRECTIVE(atomic)
    193 OPENMP_DIRECTIVE(target)
    194 OPENMP_DIRECTIVE(teams)
    195 OPENMP_DIRECTIVE(cancel)
    196 OPENMP_DIRECTIVE_EXT(target_data, "target data")
    197 OPENMP_DIRECTIVE_EXT(target_enter_data, "target enter data")
    198 OPENMP_DIRECTIVE_EXT(target_exit_data, "target exit data")
    199 OPENMP_DIRECTIVE_EXT(target_parallel, "target parallel")
    200 OPENMP_DIRECTIVE_EXT(target_parallel_for, "target parallel for")
    201 OPENMP_DIRECTIVE_EXT(target_update, "target update")
    202 OPENMP_DIRECTIVE_EXT(parallel_for, "parallel for")
    203 OPENMP_DIRECTIVE_EXT(parallel_for_simd, "parallel for simd")
    204 OPENMP_DIRECTIVE_EXT(parallel_sections, "parallel sections")
    205 OPENMP_DIRECTIVE_EXT(for_simd, "for simd")
    206 OPENMP_DIRECTIVE_EXT(cancellation_point, "cancellation point")
    207 OPENMP_DIRECTIVE_EXT(declare_reduction, "declare reduction")
    208 OPENMP_DIRECTIVE_EXT(declare_simd, "declare simd")
    209 OPENMP_DIRECTIVE(taskloop)
    210 OPENMP_DIRECTIVE_EXT(taskloop_simd, "taskloop simd")
    211 OPENMP_DIRECTIVE(distribute)
    212 OPENMP_DIRECTIVE_EXT(declare_target, "declare target")
    213 OPENMP_DIRECTIVE_EXT(end_declare_target, "end declare target")
    214 OPENMP_DIRECTIVE_EXT(distribute_parallel_for, "distribute parallel for")
    215 OPENMP_DIRECTIVE_EXT(distribute_parallel_for_simd, "distribute parallel for simd")
    216 OPENMP_DIRECTIVE_EXT(distribute_simd, "distribute simd")
    217 OPENMP_DIRECTIVE_EXT(target_parallel_for_simd, "target parallel for simd")
    218 OPENMP_DIRECTIVE_EXT(target_simd, "target simd")
    219 OPENMP_DIRECTIVE_EXT(teams_distribute, "teams distribute")
    220 OPENMP_DIRECTIVE_EXT(teams_distribute_simd, "teams distribute simd")
    221 OPENMP_DIRECTIVE_EXT(teams_distribute_parallel_for_simd, "teams distribute parallel for simd")
    222 OPENMP_DIRECTIVE_EXT(teams_distribute_parallel_for, "teams distribute parallel for")
    223 OPENMP_DIRECTIVE_EXT(target_teams, "target teams")
    224 OPENMP_DIRECTIVE_EXT(target_teams_distribute, "target teams distribute")
    225 OPENMP_DIRECTIVE_EXT(target_teams_distribute_parallel_for, "target teams distribute parallel for")
    226 OPENMP_DIRECTIVE_EXT(target_teams_distribute_parallel_for_simd, "target teams distribute parallel for simd")
    227 OPENMP_DIRECTIVE_EXT(target_teams_distribute_simd, "target teams distribute simd")
    228 
    229 // OpenMP clauses.
    230 OPENMP_CLAUSE(if, OMPIfClause)
    231 OPENMP_CLAUSE(final, OMPFinalClause)
    232 OPENMP_CLAUSE(num_threads, OMPNumThreadsClause)
    233 OPENMP_CLAUSE(safelen, OMPSafelenClause)
    234 OPENMP_CLAUSE(simdlen, OMPSimdlenClause)
    235 OPENMP_CLAUSE(collapse, OMPCollapseClause)
    236 OPENMP_CLAUSE(default, OMPDefaultClause)
    237 OPENMP_CLAUSE(private, OMPPrivateClause)
    238 OPENMP_CLAUSE(firstprivate, OMPFirstprivateClause)
    239 OPENMP_CLAUSE(lastprivate, OMPLastprivateClause)
    240 OPENMP_CLAUSE(shared,  OMPSharedClause)
    241 OPENMP_CLAUSE(reduction,  OMPReductionClause)
    242 OPENMP_CLAUSE(linear,  OMPLinearClause)
    243 OPENMP_CLAUSE(aligned, OMPAlignedClause)
    244 OPENMP_CLAUSE(copyin,  OMPCopyinClause)
    245 OPENMP_CLAUSE(copyprivate,  OMPCopyprivateClause)
    246 OPENMP_CLAUSE(proc_bind, OMPProcBindClause)
    247 OPENMP_CLAUSE(schedule, OMPScheduleClause)
    248 OPENMP_CLAUSE(ordered, OMPOrderedClause)
    249 OPENMP_CLAUSE(nowait, OMPNowaitClause)
    250 OPENMP_CLAUSE(untied, OMPUntiedClause)
    251 OPENMP_CLAUSE(mergeable, OMPMergeableClause)
    252 OPENMP_CLAUSE(flush, OMPFlushClause)
    253 OPENMP_CLAUSE(read, OMPReadClause)
    254 OPENMP_CLAUSE(write, OMPWriteClause)
    255 OPENMP_CLAUSE(update, OMPUpdateClause)
    256 OPENMP_CLAUSE(capture, OMPCaptureClause)
    257 OPENMP_CLAUSE(seq_cst, OMPSeqCstClause)
    258 OPENMP_CLAUSE(depend, OMPDependClause)
    259 OPENMP_CLAUSE(device, OMPDeviceClause)
    260 OPENMP_CLAUSE(threads, OMPThreadsClause)
    261 OPENMP_CLAUSE(simd, OMPSIMDClause)
    262 OPENMP_CLAUSE(map, OMPMapClause)
    263 OPENMP_CLAUSE(num_teams, OMPNumTeamsClause)
    264 OPENMP_CLAUSE(thread_limit, OMPThreadLimitClause)
    265 OPENMP_CLAUSE(priority, OMPPriorityClause)
    266 OPENMP_CLAUSE(grainsize, OMPGrainsizeClause)
    267 OPENMP_CLAUSE(nogroup, OMPNogroupClause)
    268 OPENMP_CLAUSE(num_tasks, OMPNumTasksClause)
    269 OPENMP_CLAUSE(hint, OMPHintClause)
    270 OPENMP_CLAUSE(dist_schedule, OMPDistScheduleClause)
    271 OPENMP_CLAUSE(defaultmap, OMPDefaultmapClause)
    272 OPENMP_CLAUSE(to, OMPToClause)
    273 OPENMP_CLAUSE(from, OMPFromClause)
    274 OPENMP_CLAUSE(use_device_ptr, OMPUseDevicePtrClause)
    275 OPENMP_CLAUSE(is_device_ptr, OMPIsDevicePtrClause)
    276 OPENMP_CLAUSE(task_reduction,  OMPTaskReductionClause)
    277 OPENMP_CLAUSE(in_reduction,  OMPInReductionClause)
    278 
    279 // Clauses allowed for OpenMP directive 'parallel'.
    280 OPENMP_PARALLEL_CLAUSE(if)
    281 OPENMP_PARALLEL_CLAUSE(num_threads)
    282 OPENMP_PARALLEL_CLAUSE(default)
    283 OPENMP_PARALLEL_CLAUSE(proc_bind)
    284 OPENMP_PARALLEL_CLAUSE(private)
    285 OPENMP_PARALLEL_CLAUSE(firstprivate)
    286 OPENMP_PARALLEL_CLAUSE(shared)
    287 OPENMP_PARALLEL_CLAUSE(reduction)
    288 OPENMP_PARALLEL_CLAUSE(copyin)
    289 
    290 // Clauses allowed for directive 'omp simd'.
    291 OPENMP_SIMD_CLAUSE(private)
    292 OPENMP_SIMD_CLAUSE(lastprivate)
    293 OPENMP_SIMD_CLAUSE(linear)
    294 OPENMP_SIMD_CLAUSE(aligned)
    295 OPENMP_SIMD_CLAUSE(safelen)
    296 OPENMP_SIMD_CLAUSE(simdlen)
    297 OPENMP_SIMD_CLAUSE(collapse)
    298 OPENMP_SIMD_CLAUSE(reduction)
    299 
    300 // Clauses allowed for directive 'omp for'.
    301 OPENMP_FOR_CLAUSE(private)
    302 OPENMP_FOR_CLAUSE(lastprivate)
    303 OPENMP_FOR_CLAUSE(firstprivate)
    304 OPENMP_FOR_CLAUSE(reduction)
    305 OPENMP_FOR_CLAUSE(collapse)
    306 OPENMP_FOR_CLAUSE(schedule)
    307 OPENMP_FOR_CLAUSE(ordered)
    308 OPENMP_FOR_CLAUSE(nowait)
    309 OPENMP_FOR_CLAUSE(linear)
    310 
    311 // Clauses allowed for directive 'omp for simd'.
    312 OPENMP_FOR_SIMD_CLAUSE(private)
    313 OPENMP_FOR_SIMD_CLAUSE(firstprivate)
    314 OPENMP_FOR_SIMD_CLAUSE(lastprivate)
    315 OPENMP_FOR_SIMD_CLAUSE(reduction)
    316 OPENMP_FOR_SIMD_CLAUSE(schedule)
    317 OPENMP_FOR_SIMD_CLAUSE(collapse)
    318 OPENMP_FOR_SIMD_CLAUSE(nowait)
    319 OPENMP_FOR_SIMD_CLAUSE(safelen)
    320 OPENMP_FOR_SIMD_CLAUSE(simdlen)
    321 OPENMP_FOR_SIMD_CLAUSE(linear)
    322 OPENMP_FOR_SIMD_CLAUSE(aligned)
    323 OPENMP_FOR_SIMD_CLAUSE(ordered)
    324 
    325 // Clauses allowed for OpenMP directive 'omp sections'.
    326 OPENMP_SECTIONS_CLAUSE(private)
    327 OPENMP_SECTIONS_CLAUSE(lastprivate)
    328 OPENMP_SECTIONS_CLAUSE(firstprivate)
    329 OPENMP_SECTIONS_CLAUSE(reduction)
    330 OPENMP_SECTIONS_CLAUSE(nowait)
    331 
    332 // Clauses allowed for directive 'omp single'.
    333 OPENMP_SINGLE_CLAUSE(private)
    334 OPENMP_SINGLE_CLAUSE(firstprivate)
    335 OPENMP_SINGLE_CLAUSE(copyprivate)
    336 OPENMP_SINGLE_CLAUSE(nowait)
    337 
    338 // Clauses allowed for OpenMP directive 'cancel'.
    339 OPENMP_CANCEL_CLAUSE(if)
    340 
    341 // Static attributes for 'default' clause.
    342 OPENMP_DEFAULT_KIND(none)
    343 OPENMP_DEFAULT_KIND(shared)
    344 
    345 // Static attributes for 'proc_bind' clause.
    346 OPENMP_PROC_BIND_KIND(master)
    347 OPENMP_PROC_BIND_KIND(close)
    348 OPENMP_PROC_BIND_KIND(spread)
    349 
    350 // Static attributes for 'schedule' clause.
    351 OPENMP_SCHEDULE_KIND(static)
    352 OPENMP_SCHEDULE_KIND(dynamic)
    353 OPENMP_SCHEDULE_KIND(guided)
    354 OPENMP_SCHEDULE_KIND(auto)
    355 OPENMP_SCHEDULE_KIND(runtime)
    356 
    357 // Modifiers for 'schedule' clause.
    358 OPENMP_SCHEDULE_MODIFIER(monotonic)
    359 OPENMP_SCHEDULE_MODIFIER(nonmonotonic)
    360 OPENMP_SCHEDULE_MODIFIER(simd)
    361 
    362 // Static attributes for 'defaultmap' clause.
    363 OPENMP_DEFAULTMAP_KIND(scalar)
    364 
    365 // Modifiers for 'defaultmap' clause.
    366 OPENMP_DEFAULTMAP_MODIFIER(tofrom)
    367 
    368 // Static attributes for 'depend' clause.
    369 OPENMP_DEPEND_KIND(in)
    370 OPENMP_DEPEND_KIND(out)
    371 OPENMP_DEPEND_KIND(inout)
    372 OPENMP_DEPEND_KIND(source)
    373 OPENMP_DEPEND_KIND(sink)
    374 
    375 // Modifiers for 'linear' clause.
    376 OPENMP_LINEAR_KIND(val)
    377 OPENMP_LINEAR_KIND(ref)
    378 OPENMP_LINEAR_KIND(uval)
    379 
    380 // Clauses allowed for OpenMP directive 'parallel for'.
    381 OPENMP_PARALLEL_FOR_CLAUSE(if)
    382 OPENMP_PARALLEL_FOR_CLAUSE(num_threads)
    383 OPENMP_PARALLEL_FOR_CLAUSE(default)
    384 OPENMP_PARALLEL_FOR_CLAUSE(proc_bind)
    385 OPENMP_PARALLEL_FOR_CLAUSE(private)
    386 OPENMP_PARALLEL_FOR_CLAUSE(firstprivate)
    387 OPENMP_PARALLEL_FOR_CLAUSE(shared)
    388 OPENMP_PARALLEL_FOR_CLAUSE(reduction)
    389 OPENMP_PARALLEL_FOR_CLAUSE(copyin)
    390 OPENMP_PARALLEL_FOR_CLAUSE(lastprivate)
    391 OPENMP_PARALLEL_FOR_CLAUSE(collapse)
    392 OPENMP_PARALLEL_FOR_CLAUSE(schedule)
    393 OPENMP_PARALLEL_FOR_CLAUSE(ordered)
    394 OPENMP_PARALLEL_FOR_CLAUSE(linear)
    395 
    396 // Clauses allowed for OpenMP directive 'parallel for simd'.
    397 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(if)
    398 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
    399 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(default)
    400 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
    401 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(private)
    402 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
    403 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(shared)
    404 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(reduction)
    405 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(copyin)
    406 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
    407 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(collapse)
    408 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(schedule)
    409 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(safelen)
    410 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
    411 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(linear)
    412 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(aligned)
    413 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(ordered)
    414 
    415 // Clauses allowed for OpenMP directive 'parallel sections'.
    416 OPENMP_PARALLEL_SECTIONS_CLAUSE(if)
    417 OPENMP_PARALLEL_SECTIONS_CLAUSE(num_threads)
    418 OPENMP_PARALLEL_SECTIONS_CLAUSE(default)
    419 OPENMP_PARALLEL_SECTIONS_CLAUSE(proc_bind)
    420 OPENMP_PARALLEL_SECTIONS_CLAUSE(private)
    421 OPENMP_PARALLEL_SECTIONS_CLAUSE(firstprivate)
    422 OPENMP_PARALLEL_SECTIONS_CLAUSE(shared)
    423 OPENMP_PARALLEL_SECTIONS_CLAUSE(reduction)
    424 OPENMP_PARALLEL_SECTIONS_CLAUSE(copyin)
    425 OPENMP_PARALLEL_SECTIONS_CLAUSE(lastprivate)
    426 
    427 // Clauses allowed for OpenMP directive 'task'.
    428 OPENMP_TASK_CLAUSE(if)
    429 OPENMP_TASK_CLAUSE(final)
    430 OPENMP_TASK_CLAUSE(default)
    431 OPENMP_TASK_CLAUSE(private)
    432 OPENMP_TASK_CLAUSE(firstprivate)
    433 OPENMP_TASK_CLAUSE(shared)
    434 OPENMP_TASK_CLAUSE(untied)
    435 OPENMP_TASK_CLAUSE(mergeable)
    436 OPENMP_TASK_CLAUSE(depend)
    437 OPENMP_TASK_CLAUSE(priority)
    438 OPENMP_TASK_CLAUSE(in_reduction)
    439 
    440 // Clauses allowed for OpenMP directive 'atomic'.
    441 OPENMP_ATOMIC_CLAUSE(read)
    442 OPENMP_ATOMIC_CLAUSE(write)
    443 OPENMP_ATOMIC_CLAUSE(update)
    444 OPENMP_ATOMIC_CLAUSE(capture)
    445 OPENMP_ATOMIC_CLAUSE(seq_cst)
    446 
    447 // Clauses allowed for OpenMP directive 'target'.
    448 OPENMP_TARGET_CLAUSE(if)
    449 OPENMP_TARGET_CLAUSE(device)
    450 OPENMP_TARGET_CLAUSE(map)
    451 OPENMP_TARGET_CLAUSE(private)
    452 OPENMP_TARGET_CLAUSE(nowait)
    453 OPENMP_TARGET_CLAUSE(depend)
    454 OPENMP_TARGET_CLAUSE(defaultmap)
    455 OPENMP_TARGET_CLAUSE(firstprivate)
    456 OPENMP_TARGET_CLAUSE(is_device_ptr)
    457 
    458 // Clauses allowed for OpenMP directive 'target data'.
    459 OPENMP_TARGET_DATA_CLAUSE(if)
    460 OPENMP_TARGET_DATA_CLAUSE(device)
    461 OPENMP_TARGET_DATA_CLAUSE(map)
    462 OPENMP_TARGET_DATA_CLAUSE(use_device_ptr)
    463 
    464 // Clauses allowed for OpenMP directive 'target enter data'.
    465 OPENMP_TARGET_ENTER_DATA_CLAUSE(if)
    466 OPENMP_TARGET_ENTER_DATA_CLAUSE(device)
    467 OPENMP_TARGET_ENTER_DATA_CLAUSE(map)
    468 OPENMP_TARGET_ENTER_DATA_CLAUSE(nowait)
    469 OPENMP_TARGET_ENTER_DATA_CLAUSE(depend)
    470 
    471 // Clauses allowed for OpenMP directive 'target exit data'.
    472 OPENMP_TARGET_EXIT_DATA_CLAUSE(if)
    473 OPENMP_TARGET_EXIT_DATA_CLAUSE(device)
    474 OPENMP_TARGET_EXIT_DATA_CLAUSE(map)
    475 OPENMP_TARGET_EXIT_DATA_CLAUSE(nowait)
    476 OPENMP_TARGET_EXIT_DATA_CLAUSE(depend)
    477 
    478 // Clauses allowed for OpenMP directive 'target parallel'.
    479 OPENMP_TARGET_PARALLEL_CLAUSE(if)
    480 OPENMP_TARGET_PARALLEL_CLAUSE(device)
    481 OPENMP_TARGET_PARALLEL_CLAUSE(map)
    482 OPENMP_TARGET_PARALLEL_CLAUSE(private)
    483 OPENMP_TARGET_PARALLEL_CLAUSE(firstprivate)
    484 OPENMP_TARGET_PARALLEL_CLAUSE(nowait)
    485 OPENMP_TARGET_PARALLEL_CLAUSE(depend)
    486 OPENMP_TARGET_PARALLEL_CLAUSE(defaultmap)
    487 OPENMP_TARGET_PARALLEL_CLAUSE(num_threads)
    488 OPENMP_TARGET_PARALLEL_CLAUSE(default)
    489 OPENMP_TARGET_PARALLEL_CLAUSE(proc_bind)
    490 OPENMP_TARGET_PARALLEL_CLAUSE(shared)
    491 OPENMP_TARGET_PARALLEL_CLAUSE(reduction)
    492 OPENMP_TARGET_PARALLEL_CLAUSE(is_device_ptr)
    493 
    494 // Clauses allowed for OpenMP directive 'target parallel for'.
    495 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(if)
    496 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(device)
    497 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(map)
    498 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(private)
    499 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(firstprivate)
    500 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(lastprivate)
    501 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(nowait)
    502 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(depend)
    503 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(defaultmap)
    504 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(num_threads)
    505 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(default)
    506 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(proc_bind)
    507 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(shared)
    508 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(reduction)
    509 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(collapse)
    510 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(schedule)
    511 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(ordered)
    512 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(linear)
    513 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(is_device_ptr)
    514 
    515 // Clauses allowed for OpenMP directive 'target update'.
    516 OPENMP_TARGET_UPDATE_CLAUSE(if)
    517 OPENMP_TARGET_UPDATE_CLAUSE(device)
    518 OPENMP_TARGET_UPDATE_CLAUSE(to)
    519 OPENMP_TARGET_UPDATE_CLAUSE(from)
    520 OPENMP_TARGET_UPDATE_CLAUSE(nowait)
    521 OPENMP_TARGET_UPDATE_CLAUSE(depend)
    522 
    523 // Clauses allowed for OpenMP directive 'teams'.
    524 OPENMP_TEAMS_CLAUSE(default)
    525 OPENMP_TEAMS_CLAUSE(private)
    526 OPENMP_TEAMS_CLAUSE(firstprivate)
    527 OPENMP_TEAMS_CLAUSE(shared)
    528 OPENMP_TEAMS_CLAUSE(reduction)
    529 OPENMP_TEAMS_CLAUSE(num_teams)
    530 OPENMP_TEAMS_CLAUSE(thread_limit)
    531 
    532 // Clauses allowed for OpenMP directive 'ordered'.
    533 OPENMP_ORDERED_CLAUSE(threads)
    534 OPENMP_ORDERED_CLAUSE(simd)
    535 OPENMP_ORDERED_CLAUSE(depend)
    536 
    537 // Map types and map type modifier for 'map' clause.
    538 OPENMP_MAP_KIND(alloc)
    539 OPENMP_MAP_KIND(to)
    540 OPENMP_MAP_KIND(from)
    541 OPENMP_MAP_KIND(tofrom)
    542 OPENMP_MAP_KIND(delete)
    543 OPENMP_MAP_KIND(release)
    544 OPENMP_MAP_KIND(always)
    545 
    546 // Clauses allowed for OpenMP directive 'taskloop'.
    547 OPENMP_TASKLOOP_CLAUSE(if)
    548 OPENMP_TASKLOOP_CLAUSE(shared)
    549 OPENMP_TASKLOOP_CLAUSE(private)
    550 OPENMP_TASKLOOP_CLAUSE(firstprivate)
    551 OPENMP_TASKLOOP_CLAUSE(lastprivate)
    552 OPENMP_TASKLOOP_CLAUSE(default)
    553 OPENMP_TASKLOOP_CLAUSE(collapse)
    554 OPENMP_TASKLOOP_CLAUSE(final)
    555 OPENMP_TASKLOOP_CLAUSE(untied)
    556 OPENMP_TASKLOOP_CLAUSE(mergeable)
    557 OPENMP_TASKLOOP_CLAUSE(priority)
    558 OPENMP_TASKLOOP_CLAUSE(grainsize)
    559 OPENMP_TASKLOOP_CLAUSE(nogroup)
    560 OPENMP_TASKLOOP_CLAUSE(num_tasks)
    561 OPENMP_TASKLOOP_CLAUSE(reduction)
    562 OPENMP_TASKLOOP_CLAUSE(in_reduction)
    563 
    564 // Clauses allowed for OpenMP directive 'taskloop simd'.
    565 OPENMP_TASKLOOP_SIMD_CLAUSE(if)
    566 OPENMP_TASKLOOP_SIMD_CLAUSE(shared)
    567 OPENMP_TASKLOOP_SIMD_CLAUSE(private)
    568 OPENMP_TASKLOOP_SIMD_CLAUSE(firstprivate)
    569 OPENMP_TASKLOOP_SIMD_CLAUSE(lastprivate)
    570 OPENMP_TASKLOOP_SIMD_CLAUSE(default)
    571 OPENMP_TASKLOOP_SIMD_CLAUSE(collapse)
    572 OPENMP_TASKLOOP_SIMD_CLAUSE(final)
    573 OPENMP_TASKLOOP_SIMD_CLAUSE(untied)
    574 OPENMP_TASKLOOP_SIMD_CLAUSE(mergeable)
    575 OPENMP_TASKLOOP_SIMD_CLAUSE(priority)
    576 OPENMP_TASKLOOP_SIMD_CLAUSE(linear)
    577 OPENMP_TASKLOOP_SIMD_CLAUSE(aligned)
    578 OPENMP_TASKLOOP_SIMD_CLAUSE(safelen)
    579 OPENMP_TASKLOOP_SIMD_CLAUSE(simdlen)
    580 OPENMP_TASKLOOP_SIMD_CLAUSE(grainsize)
    581 OPENMP_TASKLOOP_SIMD_CLAUSE(nogroup)
    582 OPENMP_TASKLOOP_SIMD_CLAUSE(num_tasks)
    583 OPENMP_TASKLOOP_SIMD_CLAUSE(reduction)
    584 OPENMP_TASKLOOP_SIMD_CLAUSE(in_reduction)
    585 
    586 // Clauses allowed for OpenMP directive 'critical'.
    587 OPENMP_CRITICAL_CLAUSE(hint)
    588 
    589 // Clauses allowed for OpenMP directive 'distribute'
    590 OPENMP_DISTRIBUTE_CLAUSE(private)
    591 OPENMP_DISTRIBUTE_CLAUSE(firstprivate)
    592 OPENMP_DISTRIBUTE_CLAUSE(lastprivate)
    593 OPENMP_DISTRIBUTE_CLAUSE(collapse)
    594 OPENMP_DISTRIBUTE_CLAUSE(dist_schedule)
    595 
    596 // Static attributes for 'dist_schedule' clause.
    597 OPENMP_DIST_SCHEDULE_KIND(static)
    598 
    599 // Clauses allowed for OpenMP directive 'distribute parallel for'
    600 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(firstprivate)
    601 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(lastprivate)
    602 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(collapse)
    603 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(dist_schedule)
    604 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(if)
    605 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_threads)
    606 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(default)
    607 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(proc_bind)
    608 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(private)
    609 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(shared)
    610 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(reduction)
    611 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(copyin)
    612 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(schedule)
    613 
    614 // Clauses allowed for OpenMP directive 'distribute parallel for simd'
    615 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
    616 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
    617 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(collapse)
    618 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(dist_schedule)
    619 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(if)
    620 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
    621 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(default)
    622 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
    623 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(private)
    624 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(shared)
    625 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(reduction)
    626 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(copyin)
    627 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(schedule)
    628 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(linear)
    629 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(aligned)
    630 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(safelen)
    631 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
    632 
    633 // Clauses allowed for OpenMP directive 'distribute simd'
    634 OPENMP_DISTRIBUTE_SIMD_CLAUSE(private)
    635 OPENMP_DISTRIBUTE_SIMD_CLAUSE(firstprivate)
    636 OPENMP_DISTRIBUTE_SIMD_CLAUSE(lastprivate)
    637 OPENMP_DISTRIBUTE_SIMD_CLAUSE(collapse)
    638 OPENMP_DISTRIBUTE_SIMD_CLAUSE(dist_schedule)
    639 OPENMP_DISTRIBUTE_SIMD_CLAUSE(linear)
    640 OPENMP_DISTRIBUTE_SIMD_CLAUSE(aligned)
    641 OPENMP_DISTRIBUTE_SIMD_CLAUSE(safelen)
    642 OPENMP_DISTRIBUTE_SIMD_CLAUSE(simdlen)
    643 OPENMP_DISTRIBUTE_SIMD_CLAUSE(reduction)
    644 
    645 // Clauses allowed for OpenMP directive 'target parallel for simd'.
    646 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(if)
    647 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(device)
    648 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(map)
    649 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(private)
    650 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
    651 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
    652 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(nowait)
    653 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(depend)
    654 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(defaultmap)
    655 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
    656 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(default)
    657 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
    658 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(shared)
    659 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(reduction)
    660 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(collapse)
    661 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(schedule)
    662 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(ordered)
    663 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(linear)
    664 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(safelen)
    665 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
    666 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(aligned)
    667 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(is_device_ptr)
    668 
    669 // Clauses allowed for OpenMP directive 'target simd'.
    670 OPENMP_TARGET_SIMD_CLAUSE(if)
    671 OPENMP_TARGET_SIMD_CLAUSE(device)
    672 OPENMP_TARGET_SIMD_CLAUSE(map)
    673 OPENMP_TARGET_SIMD_CLAUSE(private)
    674 OPENMP_TARGET_SIMD_CLAUSE(nowait)
    675 OPENMP_TARGET_SIMD_CLAUSE(depend)
    676 OPENMP_TARGET_SIMD_CLAUSE(defaultmap)
    677 OPENMP_TARGET_SIMD_CLAUSE(firstprivate)
    678 OPENMP_TARGET_SIMD_CLAUSE(is_device_ptr)
    679 OPENMP_TARGET_SIMD_CLAUSE(lastprivate)
    680 OPENMP_TARGET_SIMD_CLAUSE(linear)
    681 OPENMP_TARGET_SIMD_CLAUSE(aligned)
    682 OPENMP_TARGET_SIMD_CLAUSE(safelen)
    683 OPENMP_TARGET_SIMD_CLAUSE(simdlen)
    684 OPENMP_TARGET_SIMD_CLAUSE(collapse)
    685 OPENMP_TARGET_SIMD_CLAUSE(reduction)
    686 
    687 // Clauses allowed for OpenMP directive 'teams distribute'.
    688 OPENMP_TEAMS_DISTRIBUTE_CLAUSE(default)
    689 OPENMP_TEAMS_DISTRIBUTE_CLAUSE(private)
    690 OPENMP_TEAMS_DISTRIBUTE_CLAUSE(firstprivate)
    691 OPENMP_TEAMS_DISTRIBUTE_CLAUSE(shared)
    692 OPENMP_TEAMS_DISTRIBUTE_CLAUSE(reduction)
    693 OPENMP_TEAMS_DISTRIBUTE_CLAUSE(num_teams)
    694 OPENMP_TEAMS_DISTRIBUTE_CLAUSE(thread_limit)
    695 OPENMP_TEAMS_DISTRIBUTE_CLAUSE(lastprivate)
    696 OPENMP_TEAMS_DISTRIBUTE_CLAUSE(collapse)
    697 OPENMP_TEAMS_DISTRIBUTE_CLAUSE(dist_schedule)
    698 
    699 // Clauses allowed for OpenMP directive 'teams distribute simd'
    700 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(default)
    701 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(private)
    702 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(firstprivate)
    703 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(shared)
    704 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(reduction)
    705 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(num_teams)
    706 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(thread_limit)
    707 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(lastprivate)
    708 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(collapse)
    709 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(dist_schedule)
    710 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(linear)
    711 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(aligned)
    712 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(safelen)
    713 OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE(simdlen)
    714 
    715 // Clauses allowed for OpenMP directive 'teams distribute parallel for simd'
    716 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
    717 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
    718 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(collapse)
    719 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(dist_schedule)
    720 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(if)
    721 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
    722 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(default)
    723 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
    724 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(private)
    725 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(shared)
    726 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(reduction)
    727 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(schedule)
    728 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(linear)
    729 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(aligned)
    730 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(safelen)
    731 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
    732 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_teams)
    733 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(thread_limit)
    734 
    735 // Clauses allowed for OpenMP directive 'teams distribute parallel for'
    736 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(firstprivate)
    737 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(lastprivate)
    738 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(collapse)
    739 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(dist_schedule)
    740 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(if)
    741 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_threads)
    742 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(default)
    743 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(proc_bind)
    744 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(private)
    745 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(shared)
    746 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(reduction)
    747 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(schedule)
    748 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(linear)
    749 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_teams)
    750 OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(thread_limit)
    751 
    752 // Clauses allowed for OpenMP directive 'target teams'.
    753 OPENMP_TARGET_TEAMS_CLAUSE(if)
    754 OPENMP_TARGET_TEAMS_CLAUSE(device)
    755 OPENMP_TARGET_TEAMS_CLAUSE(map)
    756 OPENMP_TARGET_TEAMS_CLAUSE(private)
    757 OPENMP_TARGET_TEAMS_CLAUSE(nowait)
    758 OPENMP_TARGET_TEAMS_CLAUSE(depend)
    759 OPENMP_TARGET_TEAMS_CLAUSE(defaultmap)
    760 OPENMP_TARGET_TEAMS_CLAUSE(firstprivate)
    761 OPENMP_TARGET_TEAMS_CLAUSE(is_device_ptr)
    762 OPENMP_TARGET_TEAMS_CLAUSE(default)
    763 OPENMP_TARGET_TEAMS_CLAUSE(shared)
    764 OPENMP_TARGET_TEAMS_CLAUSE(reduction)
    765 OPENMP_TARGET_TEAMS_CLAUSE(num_teams)
    766 OPENMP_TARGET_TEAMS_CLAUSE(thread_limit)
    767 
    768 // Clauses allowed for OpenMP directive 'target teams distribute'.
    769 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(if)
    770 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(device)
    771 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(map)
    772 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(private)
    773 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(nowait)
    774 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(depend)
    775 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(defaultmap)
    776 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(firstprivate)
    777 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(is_device_ptr)
    778 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(default)
    779 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(shared)
    780 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(reduction)
    781 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(num_teams)
    782 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(thread_limit)
    783 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(lastprivate)
    784 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(collapse)
    785 OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE(dist_schedule)
    786 
    787 // Clauses allowed for OpenMP directive 'target teams distribute parallel for'.
    788 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(if)
    789 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(device)
    790 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(map)
    791 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(private)
    792 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(nowait)
    793 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(depend)
    794 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(defaultmap)
    795 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(firstprivate)
    796 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(is_device_ptr)
    797 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(default)
    798 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(shared)
    799 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(reduction)
    800 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_teams)
    801 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(thread_limit)
    802 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(lastprivate)
    803 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(collapse)
    804 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(dist_schedule)
    805 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_threads)
    806 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(proc_bind)
    807 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(schedule)
    808 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(linear)
    809 
    810 // Clauses allowed for OpenMP directive
    811 // 'target teams distribute parallel for simd'.
    812 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(if)
    813 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(device)
    814 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(map)
    815 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(private)
    816 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(nowait)
    817 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(depend)
    818 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(defaultmap)
    819 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
    820 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(is_device_ptr)
    821 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(default)
    822 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(shared)
    823 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(reduction)
    824 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_teams)
    825 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(thread_limit)
    826 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
    827 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(collapse)
    828 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(dist_schedule)
    829 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
    830 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
    831 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(schedule)
    832 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(linear)
    833 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(aligned)
    834 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(safelen)
    835 OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
    836 
    837 // Clauses allowed for OpenMP directive 'target teams distribute simd'.
    838 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(if)
    839 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(device)
    840 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(map)
    841 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(private)
    842 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(nowait)
    843 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(depend)
    844 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(defaultmap)
    845 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(firstprivate)
    846 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(lastprivate)
    847 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(is_device_ptr)
    848 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(shared)
    849 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(reduction)
    850 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(num_teams)
    851 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(thread_limit)
    852 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(collapse)
    853 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(dist_schedule)
    854 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(linear)
    855 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(aligned)
    856 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(safelen)
    857 OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE(simdlen)
    858 
    859 // Clauses allowed for OpenMP directive 'taskgroup'.
    860 OPENMP_TASKGROUP_CLAUSE(task_reduction)
    861 
    862 #undef OPENMP_TASKGROUP_CLAUSE
    863 #undef OPENMP_TASKLOOP_SIMD_CLAUSE
    864 #undef OPENMP_TASKLOOP_CLAUSE
    865 #undef OPENMP_LINEAR_KIND
    866 #undef OPENMP_DEPEND_KIND
    867 #undef OPENMP_SCHEDULE_MODIFIER
    868 #undef OPENMP_SCHEDULE_KIND
    869 #undef OPENMP_PROC_BIND_KIND
    870 #undef OPENMP_DEFAULT_KIND
    871 #undef OPENMP_DIRECTIVE
    872 #undef OPENMP_DIRECTIVE_EXT
    873 #undef OPENMP_CLAUSE
    874 #undef OPENMP_CRITICAL_CLAUSE
    875 #undef OPENMP_ORDERED_CLAUSE
    876 #undef OPENMP_CANCEL_CLAUSE
    877 #undef OPENMP_SINGLE_CLAUSE
    878 #undef OPENMP_SECTIONS_CLAUSE
    879 #undef OPENMP_PARALLEL_CLAUSE
    880 #undef OPENMP_PARALLEL_FOR_CLAUSE
    881 #undef OPENMP_PARALLEL_FOR_SIMD_CLAUSE
    882 #undef OPENMP_PARALLEL_SECTIONS_CLAUSE
    883 #undef OPENMP_TASK_CLAUSE
    884 #undef OPENMP_ATOMIC_CLAUSE
    885 #undef OPENMP_TARGET_CLAUSE
    886 #undef OPENMP_TARGET_DATA_CLAUSE
    887 #undef OPENMP_TARGET_ENTER_DATA_CLAUSE
    888 #undef OPENMP_TARGET_EXIT_DATA_CLAUSE
    889 #undef OPENMP_TARGET_PARALLEL_CLAUSE
    890 #undef OPENMP_TARGET_PARALLEL_FOR_CLAUSE
    891 #undef OPENMP_TEAMS_CLAUSE
    892 #undef OPENMP_SIMD_CLAUSE
    893 #undef OPENMP_FOR_CLAUSE
    894 #undef OPENMP_FOR_SIMD_CLAUSE
    895 #undef OPENMP_MAP_KIND
    896 #undef OPENMP_DISTRIBUTE_CLAUSE
    897 #undef OPENMP_DIST_SCHEDULE_KIND
    898 #undef OPENMP_DEFAULTMAP_KIND
    899 #undef OPENMP_DEFAULTMAP_MODIFIER
    900 #undef OPENMP_TARGET_UPDATE_CLAUSE
    901 #undef OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE
    902 #undef OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE
    903 #undef OPENMP_DISTRIBUTE_SIMD_CLAUSE
    904 #undef OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE
    905 #undef OPENMP_TARGET_SIMD_CLAUSE
    906 #undef OPENMP_TEAMS_DISTRIBUTE_CLAUSE
    907 #undef OPENMP_TEAMS_DISTRIBUTE_SIMD_CLAUSE
    908 #undef OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE
    909 #undef OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE
    910 #undef OPENMP_TARGET_TEAMS_CLAUSE
    911 #undef OPENMP_TARGET_TEAMS_DISTRIBUTE_CLAUSE
    912 #undef OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE
    913 #undef OPENMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE
    914 #undef OPENMP_TARGET_TEAMS_DISTRIBUTE_SIMD_CLAUSE
    915