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