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. 143OPENMP_DIRECTIVE(threadprivate) 144OPENMP_DIRECTIVE(parallel) 145OPENMP_DIRECTIVE(task) 146OPENMP_DIRECTIVE(simd) 147OPENMP_DIRECTIVE(for) 148OPENMP_DIRECTIVE(sections) 149OPENMP_DIRECTIVE(section) 150OPENMP_DIRECTIVE(single) 151OPENMP_DIRECTIVE(master) 152OPENMP_DIRECTIVE(critical) 153OPENMP_DIRECTIVE(taskyield) 154OPENMP_DIRECTIVE(barrier) 155OPENMP_DIRECTIVE(taskwait) 156OPENMP_DIRECTIVE(taskgroup) 157OPENMP_DIRECTIVE(flush) 158OPENMP_DIRECTIVE(ordered) 159OPENMP_DIRECTIVE(atomic) 160OPENMP_DIRECTIVE(target) 161OPENMP_DIRECTIVE(teams) 162OPENMP_DIRECTIVE(cancel) 163OPENMP_DIRECTIVE_EXT(target_data, "target data") 164OPENMP_DIRECTIVE_EXT(target_enter_data, "target enter data") 165OPENMP_DIRECTIVE_EXT(target_exit_data, "target exit data") 166OPENMP_DIRECTIVE_EXT(target_parallel, "target parallel") 167OPENMP_DIRECTIVE_EXT(target_parallel_for, "target parallel for") 168OPENMP_DIRECTIVE_EXT(target_update, "target update") 169OPENMP_DIRECTIVE_EXT(parallel_for, "parallel for") 170OPENMP_DIRECTIVE_EXT(parallel_for_simd, "parallel for simd") 171OPENMP_DIRECTIVE_EXT(parallel_sections, "parallel sections") 172OPENMP_DIRECTIVE_EXT(for_simd, "for simd") 173OPENMP_DIRECTIVE_EXT(cancellation_point, "cancellation point") 174OPENMP_DIRECTIVE_EXT(declare_reduction, "declare reduction") 175OPENMP_DIRECTIVE_EXT(declare_simd, "declare simd") 176OPENMP_DIRECTIVE(taskloop) 177OPENMP_DIRECTIVE_EXT(taskloop_simd, "taskloop simd") 178OPENMP_DIRECTIVE(distribute) 179OPENMP_DIRECTIVE_EXT(declare_target, "declare target") 180OPENMP_DIRECTIVE_EXT(end_declare_target, "end declare target") 181OPENMP_DIRECTIVE_EXT(distribute_parallel_for, "distribute parallel for") 182OPENMP_DIRECTIVE_EXT(distribute_parallel_for_simd, "distribute parallel for simd") 183OPENMP_DIRECTIVE_EXT(distribute_simd, "distribute simd") 184OPENMP_DIRECTIVE_EXT(target_parallel_for_simd, "target parallel for simd") 185 186// OpenMP clauses. 187OPENMP_CLAUSE(if, OMPIfClause) 188OPENMP_CLAUSE(final, OMPFinalClause) 189OPENMP_CLAUSE(num_threads, OMPNumThreadsClause) 190OPENMP_CLAUSE(safelen, OMPSafelenClause) 191OPENMP_CLAUSE(simdlen, OMPSimdlenClause) 192OPENMP_CLAUSE(collapse, OMPCollapseClause) 193OPENMP_CLAUSE(default, OMPDefaultClause) 194OPENMP_CLAUSE(private, OMPPrivateClause) 195OPENMP_CLAUSE(firstprivate, OMPFirstprivateClause) 196OPENMP_CLAUSE(lastprivate, OMPLastprivateClause) 197OPENMP_CLAUSE(shared, OMPSharedClause) 198OPENMP_CLAUSE(reduction, OMPReductionClause) 199OPENMP_CLAUSE(linear, OMPLinearClause) 200OPENMP_CLAUSE(aligned, OMPAlignedClause) 201OPENMP_CLAUSE(copyin, OMPCopyinClause) 202OPENMP_CLAUSE(copyprivate, OMPCopyprivateClause) 203OPENMP_CLAUSE(proc_bind, OMPProcBindClause) 204OPENMP_CLAUSE(schedule, OMPScheduleClause) 205OPENMP_CLAUSE(ordered, OMPOrderedClause) 206OPENMP_CLAUSE(nowait, OMPNowaitClause) 207OPENMP_CLAUSE(untied, OMPUntiedClause) 208OPENMP_CLAUSE(mergeable, OMPMergeableClause) 209OPENMP_CLAUSE(flush, OMPFlushClause) 210OPENMP_CLAUSE(read, OMPReadClause) 211OPENMP_CLAUSE(write, OMPWriteClause) 212OPENMP_CLAUSE(update, OMPUpdateClause) 213OPENMP_CLAUSE(capture, OMPCaptureClause) 214OPENMP_CLAUSE(seq_cst, OMPSeqCstClause) 215OPENMP_CLAUSE(depend, OMPDependClause) 216OPENMP_CLAUSE(device, OMPDeviceClause) 217OPENMP_CLAUSE(threads, OMPThreadsClause) 218OPENMP_CLAUSE(simd, OMPSIMDClause) 219OPENMP_CLAUSE(map, OMPMapClause) 220OPENMP_CLAUSE(num_teams, OMPNumTeamsClause) 221OPENMP_CLAUSE(thread_limit, OMPThreadLimitClause) 222OPENMP_CLAUSE(priority, OMPPriorityClause) 223OPENMP_CLAUSE(grainsize, OMPGrainsizeClause) 224OPENMP_CLAUSE(nogroup, OMPNogroupClause) 225OPENMP_CLAUSE(num_tasks, OMPNumTasksClause) 226OPENMP_CLAUSE(hint, OMPHintClause) 227OPENMP_CLAUSE(dist_schedule, OMPDistScheduleClause) 228OPENMP_CLAUSE(defaultmap, OMPDefaultmapClause) 229OPENMP_CLAUSE(to, OMPToClause) 230OPENMP_CLAUSE(from, OMPFromClause) 231OPENMP_CLAUSE(use_device_ptr, OMPUseDevicePtrClause) 232OPENMP_CLAUSE(is_device_ptr, OMPIsDevicePtrClause) 233 234// Clauses allowed for OpenMP directive 'parallel'. 235OPENMP_PARALLEL_CLAUSE(if) 236OPENMP_PARALLEL_CLAUSE(num_threads) 237OPENMP_PARALLEL_CLAUSE(default) 238OPENMP_PARALLEL_CLAUSE(proc_bind) 239OPENMP_PARALLEL_CLAUSE(private) 240OPENMP_PARALLEL_CLAUSE(firstprivate) 241OPENMP_PARALLEL_CLAUSE(shared) 242OPENMP_PARALLEL_CLAUSE(reduction) 243OPENMP_PARALLEL_CLAUSE(copyin) 244 245// Clauses allowed for directive 'omp simd'. 246OPENMP_SIMD_CLAUSE(private) 247OPENMP_SIMD_CLAUSE(lastprivate) 248OPENMP_SIMD_CLAUSE(linear) 249OPENMP_SIMD_CLAUSE(aligned) 250OPENMP_SIMD_CLAUSE(safelen) 251OPENMP_SIMD_CLAUSE(simdlen) 252OPENMP_SIMD_CLAUSE(collapse) 253OPENMP_SIMD_CLAUSE(reduction) 254 255// Clauses allowed for directive 'omp for'. 256OPENMP_FOR_CLAUSE(private) 257OPENMP_FOR_CLAUSE(lastprivate) 258OPENMP_FOR_CLAUSE(firstprivate) 259OPENMP_FOR_CLAUSE(reduction) 260OPENMP_FOR_CLAUSE(collapse) 261OPENMP_FOR_CLAUSE(schedule) 262OPENMP_FOR_CLAUSE(ordered) 263OPENMP_FOR_CLAUSE(nowait) 264OPENMP_FOR_CLAUSE(linear) 265 266// Clauses allowed for directive 'omp for simd'. 267OPENMP_FOR_SIMD_CLAUSE(private) 268OPENMP_FOR_SIMD_CLAUSE(firstprivate) 269OPENMP_FOR_SIMD_CLAUSE(lastprivate) 270OPENMP_FOR_SIMD_CLAUSE(reduction) 271OPENMP_FOR_SIMD_CLAUSE(schedule) 272OPENMP_FOR_SIMD_CLAUSE(collapse) 273OPENMP_FOR_SIMD_CLAUSE(nowait) 274OPENMP_FOR_SIMD_CLAUSE(safelen) 275OPENMP_FOR_SIMD_CLAUSE(simdlen) 276OPENMP_FOR_SIMD_CLAUSE(linear) 277OPENMP_FOR_SIMD_CLAUSE(aligned) 278OPENMP_FOR_SIMD_CLAUSE(ordered) 279 280// Clauses allowed for OpenMP directive 'omp sections'. 281OPENMP_SECTIONS_CLAUSE(private) 282OPENMP_SECTIONS_CLAUSE(lastprivate) 283OPENMP_SECTIONS_CLAUSE(firstprivate) 284OPENMP_SECTIONS_CLAUSE(reduction) 285OPENMP_SECTIONS_CLAUSE(nowait) 286 287// Clauses allowed for directive 'omp single'. 288OPENMP_SINGLE_CLAUSE(private) 289OPENMP_SINGLE_CLAUSE(firstprivate) 290OPENMP_SINGLE_CLAUSE(copyprivate) 291OPENMP_SINGLE_CLAUSE(nowait) 292 293// Clauses allowed for OpenMP directive 'cancel'. 294OPENMP_CANCEL_CLAUSE(if) 295 296// Static attributes for 'default' clause. 297OPENMP_DEFAULT_KIND(none) 298OPENMP_DEFAULT_KIND(shared) 299 300// Static attributes for 'proc_bind' clause. 301OPENMP_PROC_BIND_KIND(master) 302OPENMP_PROC_BIND_KIND(close) 303OPENMP_PROC_BIND_KIND(spread) 304 305// Static attributes for 'schedule' clause. 306OPENMP_SCHEDULE_KIND(static) 307OPENMP_SCHEDULE_KIND(dynamic) 308OPENMP_SCHEDULE_KIND(guided) 309OPENMP_SCHEDULE_KIND(auto) 310OPENMP_SCHEDULE_KIND(runtime) 311 312// Modifiers for 'schedule' clause. 313OPENMP_SCHEDULE_MODIFIER(monotonic) 314OPENMP_SCHEDULE_MODIFIER(nonmonotonic) 315OPENMP_SCHEDULE_MODIFIER(simd) 316 317// Static attributes for 'defaultmap' clause. 318OPENMP_DEFAULTMAP_KIND(scalar) 319 320// Modifiers for 'defaultmap' clause. 321OPENMP_DEFAULTMAP_MODIFIER(tofrom) 322 323// Static attributes for 'depend' clause. 324OPENMP_DEPEND_KIND(in) 325OPENMP_DEPEND_KIND(out) 326OPENMP_DEPEND_KIND(inout) 327OPENMP_DEPEND_KIND(source) 328OPENMP_DEPEND_KIND(sink) 329 330// Modifiers for 'linear' clause. 331OPENMP_LINEAR_KIND(val) 332OPENMP_LINEAR_KIND(ref) 333OPENMP_LINEAR_KIND(uval) 334 335// Clauses allowed for OpenMP directive 'parallel for'. 336OPENMP_PARALLEL_FOR_CLAUSE(if) 337OPENMP_PARALLEL_FOR_CLAUSE(num_threads) 338OPENMP_PARALLEL_FOR_CLAUSE(default) 339OPENMP_PARALLEL_FOR_CLAUSE(proc_bind) 340OPENMP_PARALLEL_FOR_CLAUSE(private) 341OPENMP_PARALLEL_FOR_CLAUSE(firstprivate) 342OPENMP_PARALLEL_FOR_CLAUSE(shared) 343OPENMP_PARALLEL_FOR_CLAUSE(reduction) 344OPENMP_PARALLEL_FOR_CLAUSE(copyin) 345OPENMP_PARALLEL_FOR_CLAUSE(lastprivate) 346OPENMP_PARALLEL_FOR_CLAUSE(collapse) 347OPENMP_PARALLEL_FOR_CLAUSE(schedule) 348OPENMP_PARALLEL_FOR_CLAUSE(ordered) 349OPENMP_PARALLEL_FOR_CLAUSE(linear) 350 351// Clauses allowed for OpenMP directive 'parallel for simd'. 352OPENMP_PARALLEL_FOR_SIMD_CLAUSE(if) 353OPENMP_PARALLEL_FOR_SIMD_CLAUSE(num_threads) 354OPENMP_PARALLEL_FOR_SIMD_CLAUSE(default) 355OPENMP_PARALLEL_FOR_SIMD_CLAUSE(proc_bind) 356OPENMP_PARALLEL_FOR_SIMD_CLAUSE(private) 357OPENMP_PARALLEL_FOR_SIMD_CLAUSE(firstprivate) 358OPENMP_PARALLEL_FOR_SIMD_CLAUSE(shared) 359OPENMP_PARALLEL_FOR_SIMD_CLAUSE(reduction) 360OPENMP_PARALLEL_FOR_SIMD_CLAUSE(copyin) 361OPENMP_PARALLEL_FOR_SIMD_CLAUSE(lastprivate) 362OPENMP_PARALLEL_FOR_SIMD_CLAUSE(collapse) 363OPENMP_PARALLEL_FOR_SIMD_CLAUSE(schedule) 364OPENMP_PARALLEL_FOR_SIMD_CLAUSE(safelen) 365OPENMP_PARALLEL_FOR_SIMD_CLAUSE(simdlen) 366OPENMP_PARALLEL_FOR_SIMD_CLAUSE(linear) 367OPENMP_PARALLEL_FOR_SIMD_CLAUSE(aligned) 368OPENMP_PARALLEL_FOR_SIMD_CLAUSE(ordered) 369 370// Clauses allowed for OpenMP directive 'parallel sections'. 371OPENMP_PARALLEL_SECTIONS_CLAUSE(if) 372OPENMP_PARALLEL_SECTIONS_CLAUSE(num_threads) 373OPENMP_PARALLEL_SECTIONS_CLAUSE(default) 374OPENMP_PARALLEL_SECTIONS_CLAUSE(proc_bind) 375OPENMP_PARALLEL_SECTIONS_CLAUSE(private) 376OPENMP_PARALLEL_SECTIONS_CLAUSE(firstprivate) 377OPENMP_PARALLEL_SECTIONS_CLAUSE(shared) 378OPENMP_PARALLEL_SECTIONS_CLAUSE(reduction) 379OPENMP_PARALLEL_SECTIONS_CLAUSE(copyin) 380OPENMP_PARALLEL_SECTIONS_CLAUSE(lastprivate) 381 382// Clauses allowed for OpenMP directive 'task'. 383OPENMP_TASK_CLAUSE(if) 384OPENMP_TASK_CLAUSE(final) 385OPENMP_TASK_CLAUSE(default) 386OPENMP_TASK_CLAUSE(private) 387OPENMP_TASK_CLAUSE(firstprivate) 388OPENMP_TASK_CLAUSE(shared) 389OPENMP_TASK_CLAUSE(untied) 390OPENMP_TASK_CLAUSE(mergeable) 391OPENMP_TASK_CLAUSE(depend) 392OPENMP_TASK_CLAUSE(priority) 393 394// Clauses allowed for OpenMP directive 'atomic'. 395OPENMP_ATOMIC_CLAUSE(read) 396OPENMP_ATOMIC_CLAUSE(write) 397OPENMP_ATOMIC_CLAUSE(update) 398OPENMP_ATOMIC_CLAUSE(capture) 399OPENMP_ATOMIC_CLAUSE(seq_cst) 400 401// Clauses allowed for OpenMP directive 'target'. 402OPENMP_TARGET_CLAUSE(if) 403OPENMP_TARGET_CLAUSE(device) 404OPENMP_TARGET_CLAUSE(map) 405OPENMP_TARGET_CLAUSE(private) 406OPENMP_TARGET_CLAUSE(nowait) 407OPENMP_TARGET_CLAUSE(depend) 408OPENMP_TARGET_CLAUSE(defaultmap) 409OPENMP_TARGET_CLAUSE(firstprivate) 410OPENMP_TARGET_CLAUSE(is_device_ptr) 411 412// Clauses allowed for OpenMP directive 'target data'. 413// TODO More clauses for 'target data' directive. 414OPENMP_TARGET_DATA_CLAUSE(if) 415OPENMP_TARGET_DATA_CLAUSE(device) 416OPENMP_TARGET_DATA_CLAUSE(map) 417OPENMP_TARGET_DATA_CLAUSE(use_device_ptr) 418 419// Clauses allowed for OpenMP directive 'target enter data'. 420OPENMP_TARGET_ENTER_DATA_CLAUSE(if) 421OPENMP_TARGET_ENTER_DATA_CLAUSE(device) 422OPENMP_TARGET_ENTER_DATA_CLAUSE(map) 423OPENMP_TARGET_ENTER_DATA_CLAUSE(nowait) 424OPENMP_TARGET_ENTER_DATA_CLAUSE(depend) 425 426// Clauses allowed for OpenMP directive 'target exit data'. 427OPENMP_TARGET_EXIT_DATA_CLAUSE(if) 428OPENMP_TARGET_EXIT_DATA_CLAUSE(device) 429OPENMP_TARGET_EXIT_DATA_CLAUSE(map) 430OPENMP_TARGET_EXIT_DATA_CLAUSE(nowait) 431OPENMP_TARGET_EXIT_DATA_CLAUSE(depend) 432 433// Clauses allowed for OpenMP directive 'target parallel'. 434// TODO: add target clauses 'is_device_ptr' 435OPENMP_TARGET_PARALLEL_CLAUSE(if) 436OPENMP_TARGET_PARALLEL_CLAUSE(device) 437OPENMP_TARGET_PARALLEL_CLAUSE(map) 438OPENMP_TARGET_PARALLEL_CLAUSE(private) 439OPENMP_TARGET_PARALLEL_CLAUSE(firstprivate) 440OPENMP_TARGET_PARALLEL_CLAUSE(nowait) 441OPENMP_TARGET_PARALLEL_CLAUSE(depend) 442OPENMP_TARGET_PARALLEL_CLAUSE(defaultmap) 443OPENMP_TARGET_PARALLEL_CLAUSE(num_threads) 444OPENMP_TARGET_PARALLEL_CLAUSE(default) 445OPENMP_TARGET_PARALLEL_CLAUSE(proc_bind) 446OPENMP_TARGET_PARALLEL_CLAUSE(shared) 447OPENMP_TARGET_PARALLEL_CLAUSE(reduction) 448 449// Clauses allowed for OpenMP directive 'target parallel for'. 450// TODO: add target clauses 'is_device_ptr' 451OPENMP_TARGET_PARALLEL_FOR_CLAUSE(if) 452OPENMP_TARGET_PARALLEL_FOR_CLAUSE(device) 453OPENMP_TARGET_PARALLEL_FOR_CLAUSE(map) 454OPENMP_TARGET_PARALLEL_FOR_CLAUSE(private) 455OPENMP_TARGET_PARALLEL_FOR_CLAUSE(firstprivate) 456OPENMP_TARGET_PARALLEL_FOR_CLAUSE(lastprivate) 457OPENMP_TARGET_PARALLEL_FOR_CLAUSE(nowait) 458OPENMP_TARGET_PARALLEL_FOR_CLAUSE(depend) 459OPENMP_TARGET_PARALLEL_FOR_CLAUSE(defaultmap) 460OPENMP_TARGET_PARALLEL_FOR_CLAUSE(num_threads) 461OPENMP_TARGET_PARALLEL_FOR_CLAUSE(default) 462OPENMP_TARGET_PARALLEL_FOR_CLAUSE(proc_bind) 463OPENMP_TARGET_PARALLEL_FOR_CLAUSE(shared) 464OPENMP_TARGET_PARALLEL_FOR_CLAUSE(reduction) 465OPENMP_TARGET_PARALLEL_FOR_CLAUSE(collapse) 466OPENMP_TARGET_PARALLEL_FOR_CLAUSE(schedule) 467OPENMP_TARGET_PARALLEL_FOR_CLAUSE(ordered) 468OPENMP_TARGET_PARALLEL_FOR_CLAUSE(linear) 469 470// Clauses allowed for OpenMP directive 'target update'. 471// TODO More clauses for 'target update' directive. 472OPENMP_TARGET_UPDATE_CLAUSE(if) 473OPENMP_TARGET_UPDATE_CLAUSE(device) 474OPENMP_TARGET_UPDATE_CLAUSE(to) 475OPENMP_TARGET_UPDATE_CLAUSE(from) 476OPENMP_TARGET_UPDATE_CLAUSE(nowait) 477OPENMP_TARGET_UPDATE_CLAUSE(depend) 478 479// Clauses allowed for OpenMP directive 'teams'. 480// TODO More clauses for 'teams' directive. 481OPENMP_TEAMS_CLAUSE(default) 482OPENMP_TEAMS_CLAUSE(private) 483OPENMP_TEAMS_CLAUSE(firstprivate) 484OPENMP_TEAMS_CLAUSE(shared) 485OPENMP_TEAMS_CLAUSE(reduction) 486OPENMP_TEAMS_CLAUSE(num_teams) 487OPENMP_TEAMS_CLAUSE(thread_limit) 488 489// Clauses allowed for OpenMP directive 'ordered'. 490// TODO More clauses for 'ordered' directive. 491OPENMP_ORDERED_CLAUSE(threads) 492OPENMP_ORDERED_CLAUSE(simd) 493OPENMP_ORDERED_CLAUSE(depend) 494 495// Map types and map type modifier for 'map' clause. 496OPENMP_MAP_KIND(alloc) 497OPENMP_MAP_KIND(to) 498OPENMP_MAP_KIND(from) 499OPENMP_MAP_KIND(tofrom) 500OPENMP_MAP_KIND(delete) 501OPENMP_MAP_KIND(release) 502OPENMP_MAP_KIND(always) 503 504// Clauses allowed for OpenMP directive 'taskloop'. 505OPENMP_TASKLOOP_CLAUSE(if) 506OPENMP_TASKLOOP_CLAUSE(shared) 507OPENMP_TASKLOOP_CLAUSE(private) 508OPENMP_TASKLOOP_CLAUSE(firstprivate) 509OPENMP_TASKLOOP_CLAUSE(lastprivate) 510OPENMP_TASKLOOP_CLAUSE(default) 511OPENMP_TASKLOOP_CLAUSE(collapse) 512OPENMP_TASKLOOP_CLAUSE(final) 513OPENMP_TASKLOOP_CLAUSE(untied) 514OPENMP_TASKLOOP_CLAUSE(mergeable) 515OPENMP_TASKLOOP_CLAUSE(priority) 516OPENMP_TASKLOOP_CLAUSE(grainsize) 517OPENMP_TASKLOOP_CLAUSE(nogroup) 518OPENMP_TASKLOOP_CLAUSE(num_tasks) 519 520// Clauses allowed for OpenMP directive 'taskloop simd'. 521OPENMP_TASKLOOP_SIMD_CLAUSE(if) 522OPENMP_TASKLOOP_SIMD_CLAUSE(shared) 523OPENMP_TASKLOOP_SIMD_CLAUSE(private) 524OPENMP_TASKLOOP_SIMD_CLAUSE(firstprivate) 525OPENMP_TASKLOOP_SIMD_CLAUSE(lastprivate) 526OPENMP_TASKLOOP_SIMD_CLAUSE(default) 527OPENMP_TASKLOOP_SIMD_CLAUSE(collapse) 528OPENMP_TASKLOOP_SIMD_CLAUSE(final) 529OPENMP_TASKLOOP_SIMD_CLAUSE(untied) 530OPENMP_TASKLOOP_SIMD_CLAUSE(mergeable) 531OPENMP_TASKLOOP_SIMD_CLAUSE(priority) 532OPENMP_TASKLOOP_SIMD_CLAUSE(linear) 533OPENMP_TASKLOOP_SIMD_CLAUSE(aligned) 534OPENMP_TASKLOOP_SIMD_CLAUSE(safelen) 535OPENMP_TASKLOOP_SIMD_CLAUSE(simdlen) 536OPENMP_TASKLOOP_SIMD_CLAUSE(grainsize) 537OPENMP_TASKLOOP_SIMD_CLAUSE(nogroup) 538OPENMP_TASKLOOP_SIMD_CLAUSE(num_tasks) 539 540// Clauses allowed for OpenMP directive 'critical'. 541OPENMP_CRITICAL_CLAUSE(hint) 542 543// Clauses allowed for OpenMP directive 'distribute' 544OPENMP_DISTRIBUTE_CLAUSE(private) 545OPENMP_DISTRIBUTE_CLAUSE(firstprivate) 546OPENMP_DISTRIBUTE_CLAUSE(lastprivate) 547OPENMP_DISTRIBUTE_CLAUSE(collapse) 548OPENMP_DISTRIBUTE_CLAUSE(dist_schedule) 549 550// Static attributes for 'dist_schedule' clause. 551OPENMP_DIST_SCHEDULE_KIND(static) 552 553// Clauses allowed for OpenMP directive 'distribute parallel for' 554OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(firstprivate) 555OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(lastprivate) 556OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(collapse) 557OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(dist_schedule) 558OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(if) 559OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_threads) 560OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(default) 561OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(proc_bind) 562OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(private) 563OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(shared) 564OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(reduction) 565OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(copyin) 566OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(schedule) 567 568// Clauses allowed for OpenMP directive 'distribute parallel for simd' 569OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(firstprivate) 570OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(lastprivate) 571OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(collapse) 572OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(dist_schedule) 573OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(if) 574OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_threads) 575OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(default) 576OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(proc_bind) 577OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(private) 578OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(shared) 579OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(reduction) 580OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(copyin) 581OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(schedule) 582OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(linear) 583OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(aligned) 584OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(safelen) 585OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(simdlen) 586 587// Clauses allowed for OpenMP directive 'distribute simd' 588OPENMP_DISTRIBUTE_SIMD_CLAUSE(private) 589OPENMP_DISTRIBUTE_SIMD_CLAUSE(firstprivate) 590OPENMP_DISTRIBUTE_SIMD_CLAUSE(lastprivate) 591OPENMP_DISTRIBUTE_SIMD_CLAUSE(collapse) 592OPENMP_DISTRIBUTE_SIMD_CLAUSE(dist_schedule) 593OPENMP_DISTRIBUTE_SIMD_CLAUSE(linear) 594OPENMP_DISTRIBUTE_SIMD_CLAUSE(aligned) 595OPENMP_DISTRIBUTE_SIMD_CLAUSE(safelen) 596OPENMP_DISTRIBUTE_SIMD_CLAUSE(simdlen) 597OPENMP_DISTRIBUTE_SIMD_CLAUSE(reduction) 598 599// Clauses allowed for OpenMP directive 'target parallel for simd'. 600// TODO: add target clauses 'is_device_ptr' 601OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(if) 602OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(device) 603OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(map) 604OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(private) 605OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(firstprivate) 606OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(lastprivate) 607OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(nowait) 608OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(depend) 609OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(defaultmap) 610OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(num_threads) 611OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(default) 612OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(proc_bind) 613OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(shared) 614OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(reduction) 615OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(collapse) 616OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(schedule) 617OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(ordered) 618OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(linear) 619OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(safelen) 620OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(simdlen) 621OPENMP_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