1#ifndef LLVM_OpenMP_INC 2#define LLVM_OpenMP_INC 3 4#include "llvm/ADT/BitmaskEnum.h" 5 6namespace llvm { 7class StringRef; 8namespace omp { 9 10LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE(); 11 12enum class Directive { 13 OMPD_allocate, 14 OMPD_assumes, 15 OMPD_atomic, 16 OMPD_barrier, 17 OMPD_begin_assumes, 18 OMPD_begin_declare_target, 19 OMPD_begin_declare_variant, 20 OMPD_cancel, 21 OMPD_cancellation_point, 22 OMPD_critical, 23 OMPD_declare_mapper, 24 OMPD_declare_reduction, 25 OMPD_declare_simd, 26 OMPD_declare_target, 27 OMPD_declare_variant, 28 OMPD_depobj, 29 OMPD_distribute, 30 OMPD_distribute_parallel_do, 31 OMPD_distribute_parallel_do_simd, 32 OMPD_distribute_parallel_for, 33 OMPD_distribute_parallel_for_simd, 34 OMPD_distribute_simd, 35 OMPD_do, 36 OMPD_do_simd, 37 OMPD_end_assumes, 38 OMPD_end_declare_target, 39 OMPD_end_declare_variant, 40 OMPD_end_do, 41 OMPD_end_do_simd, 42 OMPD_end_sections, 43 OMPD_end_single, 44 OMPD_end_workshare, 45 OMPD_error, 46 OMPD_flush, 47 OMPD_for, 48 OMPD_for_simd, 49 OMPD_masked_taskloop, 50 OMPD_masked_taskloop_simd, 51 OMPD_master, 52 OMPD_master_taskloop, 53 OMPD_master_taskloop_simd, 54 OMPD_metadirective, 55 OMPD_nothing, 56 OMPD_ordered, 57 OMPD_parallel, 58 OMPD_parallel_do, 59 OMPD_parallel_do_simd, 60 OMPD_parallel_for, 61 OMPD_parallel_for_simd, 62 OMPD_parallel_masked, 63 OMPD_parallel_masked_taskloop, 64 OMPD_parallel_masked_taskloop_simd, 65 OMPD_parallel_master, 66 OMPD_parallel_master_taskloop, 67 OMPD_parallel_master_taskloop_simd, 68 OMPD_parallel_sections, 69 OMPD_parallel_workshare, 70 OMPD_requires, 71 OMPD_scan, 72 OMPD_section, 73 OMPD_sections, 74 OMPD_simd, 75 OMPD_single, 76 OMPD_target, 77 OMPD_target_data, 78 OMPD_target_enter_data, 79 OMPD_target_exit_data, 80 OMPD_target_parallel, 81 OMPD_target_parallel_do, 82 OMPD_target_parallel_do_simd, 83 OMPD_target_parallel_for, 84 OMPD_target_parallel_for_simd, 85 OMPD_target_simd, 86 OMPD_target_teams, 87 OMPD_target_teams_distribute, 88 OMPD_target_teams_distribute_parallel_do, 89 OMPD_target_teams_distribute_parallel_do_simd, 90 OMPD_target_teams_distribute_parallel_for, 91 OMPD_target_teams_distribute_parallel_for_simd, 92 OMPD_target_teams_distribute_simd, 93 OMPD_target_update, 94 OMPD_task, 95 OMPD_taskgroup, 96 OMPD_taskloop, 97 OMPD_taskloop_simd, 98 OMPD_taskwait, 99 OMPD_taskyield, 100 OMPD_teams, 101 OMPD_teams_distribute, 102 OMPD_teams_distribute_parallel_do, 103 OMPD_teams_distribute_parallel_do_simd, 104 OMPD_teams_distribute_parallel_for, 105 OMPD_teams_distribute_parallel_for_simd, 106 OMPD_teams_distribute_simd, 107 OMPD_threadprivate, 108 OMPD_tile, 109 OMPD_unknown, 110 OMPD_unroll, 111 OMPD_workshare, 112 OMPD_dispatch, 113 OMPD_interop, 114 OMPD_loop, 115 OMPD_masked, 116 OMPD_parallel_loop, 117 OMPD_target_parallel_loop, 118 OMPD_target_teams_loop, 119 OMPD_teams_loop, 120}; 121 122static constexpr std::size_t Directive_enumSize = 107; 123 124constexpr auto OMPD_allocate = llvm::omp::Directive::OMPD_allocate; 125constexpr auto OMPD_assumes = llvm::omp::Directive::OMPD_assumes; 126constexpr auto OMPD_atomic = llvm::omp::Directive::OMPD_atomic; 127constexpr auto OMPD_barrier = llvm::omp::Directive::OMPD_barrier; 128constexpr auto OMPD_begin_assumes = llvm::omp::Directive::OMPD_begin_assumes; 129constexpr auto OMPD_begin_declare_target = llvm::omp::Directive::OMPD_begin_declare_target; 130constexpr auto OMPD_begin_declare_variant = llvm::omp::Directive::OMPD_begin_declare_variant; 131constexpr auto OMPD_cancel = llvm::omp::Directive::OMPD_cancel; 132constexpr auto OMPD_cancellation_point = llvm::omp::Directive::OMPD_cancellation_point; 133constexpr auto OMPD_critical = llvm::omp::Directive::OMPD_critical; 134constexpr auto OMPD_declare_mapper = llvm::omp::Directive::OMPD_declare_mapper; 135constexpr auto OMPD_declare_reduction = llvm::omp::Directive::OMPD_declare_reduction; 136constexpr auto OMPD_declare_simd = llvm::omp::Directive::OMPD_declare_simd; 137constexpr auto OMPD_declare_target = llvm::omp::Directive::OMPD_declare_target; 138constexpr auto OMPD_declare_variant = llvm::omp::Directive::OMPD_declare_variant; 139constexpr auto OMPD_depobj = llvm::omp::Directive::OMPD_depobj; 140constexpr auto OMPD_distribute = llvm::omp::Directive::OMPD_distribute; 141constexpr auto OMPD_distribute_parallel_do = llvm::omp::Directive::OMPD_distribute_parallel_do; 142constexpr auto OMPD_distribute_parallel_do_simd = llvm::omp::Directive::OMPD_distribute_parallel_do_simd; 143constexpr auto OMPD_distribute_parallel_for = llvm::omp::Directive::OMPD_distribute_parallel_for; 144constexpr auto OMPD_distribute_parallel_for_simd = llvm::omp::Directive::OMPD_distribute_parallel_for_simd; 145constexpr auto OMPD_distribute_simd = llvm::omp::Directive::OMPD_distribute_simd; 146constexpr auto OMPD_do = llvm::omp::Directive::OMPD_do; 147constexpr auto OMPD_do_simd = llvm::omp::Directive::OMPD_do_simd; 148constexpr auto OMPD_end_assumes = llvm::omp::Directive::OMPD_end_assumes; 149constexpr auto OMPD_end_declare_target = llvm::omp::Directive::OMPD_end_declare_target; 150constexpr auto OMPD_end_declare_variant = llvm::omp::Directive::OMPD_end_declare_variant; 151constexpr auto OMPD_end_do = llvm::omp::Directive::OMPD_end_do; 152constexpr auto OMPD_end_do_simd = llvm::omp::Directive::OMPD_end_do_simd; 153constexpr auto OMPD_end_sections = llvm::omp::Directive::OMPD_end_sections; 154constexpr auto OMPD_end_single = llvm::omp::Directive::OMPD_end_single; 155constexpr auto OMPD_end_workshare = llvm::omp::Directive::OMPD_end_workshare; 156constexpr auto OMPD_error = llvm::omp::Directive::OMPD_error; 157constexpr auto OMPD_flush = llvm::omp::Directive::OMPD_flush; 158constexpr auto OMPD_for = llvm::omp::Directive::OMPD_for; 159constexpr auto OMPD_for_simd = llvm::omp::Directive::OMPD_for_simd; 160constexpr auto OMPD_masked_taskloop = llvm::omp::Directive::OMPD_masked_taskloop; 161constexpr auto OMPD_masked_taskloop_simd = llvm::omp::Directive::OMPD_masked_taskloop_simd; 162constexpr auto OMPD_master = llvm::omp::Directive::OMPD_master; 163constexpr auto OMPD_master_taskloop = llvm::omp::Directive::OMPD_master_taskloop; 164constexpr auto OMPD_master_taskloop_simd = llvm::omp::Directive::OMPD_master_taskloop_simd; 165constexpr auto OMPD_metadirective = llvm::omp::Directive::OMPD_metadirective; 166constexpr auto OMPD_nothing = llvm::omp::Directive::OMPD_nothing; 167constexpr auto OMPD_ordered = llvm::omp::Directive::OMPD_ordered; 168constexpr auto OMPD_parallel = llvm::omp::Directive::OMPD_parallel; 169constexpr auto OMPD_parallel_do = llvm::omp::Directive::OMPD_parallel_do; 170constexpr auto OMPD_parallel_do_simd = llvm::omp::Directive::OMPD_parallel_do_simd; 171constexpr auto OMPD_parallel_for = llvm::omp::Directive::OMPD_parallel_for; 172constexpr auto OMPD_parallel_for_simd = llvm::omp::Directive::OMPD_parallel_for_simd; 173constexpr auto OMPD_parallel_masked = llvm::omp::Directive::OMPD_parallel_masked; 174constexpr auto OMPD_parallel_masked_taskloop = llvm::omp::Directive::OMPD_parallel_masked_taskloop; 175constexpr auto OMPD_parallel_masked_taskloop_simd = llvm::omp::Directive::OMPD_parallel_masked_taskloop_simd; 176constexpr auto OMPD_parallel_master = llvm::omp::Directive::OMPD_parallel_master; 177constexpr auto OMPD_parallel_master_taskloop = llvm::omp::Directive::OMPD_parallel_master_taskloop; 178constexpr auto OMPD_parallel_master_taskloop_simd = llvm::omp::Directive::OMPD_parallel_master_taskloop_simd; 179constexpr auto OMPD_parallel_sections = llvm::omp::Directive::OMPD_parallel_sections; 180constexpr auto OMPD_parallel_workshare = llvm::omp::Directive::OMPD_parallel_workshare; 181constexpr auto OMPD_requires = llvm::omp::Directive::OMPD_requires; 182constexpr auto OMPD_scan = llvm::omp::Directive::OMPD_scan; 183constexpr auto OMPD_section = llvm::omp::Directive::OMPD_section; 184constexpr auto OMPD_sections = llvm::omp::Directive::OMPD_sections; 185constexpr auto OMPD_simd = llvm::omp::Directive::OMPD_simd; 186constexpr auto OMPD_single = llvm::omp::Directive::OMPD_single; 187constexpr auto OMPD_target = llvm::omp::Directive::OMPD_target; 188constexpr auto OMPD_target_data = llvm::omp::Directive::OMPD_target_data; 189constexpr auto OMPD_target_enter_data = llvm::omp::Directive::OMPD_target_enter_data; 190constexpr auto OMPD_target_exit_data = llvm::omp::Directive::OMPD_target_exit_data; 191constexpr auto OMPD_target_parallel = llvm::omp::Directive::OMPD_target_parallel; 192constexpr auto OMPD_target_parallel_do = llvm::omp::Directive::OMPD_target_parallel_do; 193constexpr auto OMPD_target_parallel_do_simd = llvm::omp::Directive::OMPD_target_parallel_do_simd; 194constexpr auto OMPD_target_parallel_for = llvm::omp::Directive::OMPD_target_parallel_for; 195constexpr auto OMPD_target_parallel_for_simd = llvm::omp::Directive::OMPD_target_parallel_for_simd; 196constexpr auto OMPD_target_simd = llvm::omp::Directive::OMPD_target_simd; 197constexpr auto OMPD_target_teams = llvm::omp::Directive::OMPD_target_teams; 198constexpr auto OMPD_target_teams_distribute = llvm::omp::Directive::OMPD_target_teams_distribute; 199constexpr auto OMPD_target_teams_distribute_parallel_do = llvm::omp::Directive::OMPD_target_teams_distribute_parallel_do; 200constexpr auto OMPD_target_teams_distribute_parallel_do_simd = llvm::omp::Directive::OMPD_target_teams_distribute_parallel_do_simd; 201constexpr auto OMPD_target_teams_distribute_parallel_for = llvm::omp::Directive::OMPD_target_teams_distribute_parallel_for; 202constexpr auto OMPD_target_teams_distribute_parallel_for_simd = llvm::omp::Directive::OMPD_target_teams_distribute_parallel_for_simd; 203constexpr auto OMPD_target_teams_distribute_simd = llvm::omp::Directive::OMPD_target_teams_distribute_simd; 204constexpr auto OMPD_target_update = llvm::omp::Directive::OMPD_target_update; 205constexpr auto OMPD_task = llvm::omp::Directive::OMPD_task; 206constexpr auto OMPD_taskgroup = llvm::omp::Directive::OMPD_taskgroup; 207constexpr auto OMPD_taskloop = llvm::omp::Directive::OMPD_taskloop; 208constexpr auto OMPD_taskloop_simd = llvm::omp::Directive::OMPD_taskloop_simd; 209constexpr auto OMPD_taskwait = llvm::omp::Directive::OMPD_taskwait; 210constexpr auto OMPD_taskyield = llvm::omp::Directive::OMPD_taskyield; 211constexpr auto OMPD_teams = llvm::omp::Directive::OMPD_teams; 212constexpr auto OMPD_teams_distribute = llvm::omp::Directive::OMPD_teams_distribute; 213constexpr auto OMPD_teams_distribute_parallel_do = llvm::omp::Directive::OMPD_teams_distribute_parallel_do; 214constexpr auto OMPD_teams_distribute_parallel_do_simd = llvm::omp::Directive::OMPD_teams_distribute_parallel_do_simd; 215constexpr auto OMPD_teams_distribute_parallel_for = llvm::omp::Directive::OMPD_teams_distribute_parallel_for; 216constexpr auto OMPD_teams_distribute_parallel_for_simd = llvm::omp::Directive::OMPD_teams_distribute_parallel_for_simd; 217constexpr auto OMPD_teams_distribute_simd = llvm::omp::Directive::OMPD_teams_distribute_simd; 218constexpr auto OMPD_threadprivate = llvm::omp::Directive::OMPD_threadprivate; 219constexpr auto OMPD_tile = llvm::omp::Directive::OMPD_tile; 220constexpr auto OMPD_unknown = llvm::omp::Directive::OMPD_unknown; 221constexpr auto OMPD_unroll = llvm::omp::Directive::OMPD_unroll; 222constexpr auto OMPD_workshare = llvm::omp::Directive::OMPD_workshare; 223constexpr auto OMPD_dispatch = llvm::omp::Directive::OMPD_dispatch; 224constexpr auto OMPD_interop = llvm::omp::Directive::OMPD_interop; 225constexpr auto OMPD_loop = llvm::omp::Directive::OMPD_loop; 226constexpr auto OMPD_masked = llvm::omp::Directive::OMPD_masked; 227constexpr auto OMPD_parallel_loop = llvm::omp::Directive::OMPD_parallel_loop; 228constexpr auto OMPD_target_parallel_loop = llvm::omp::Directive::OMPD_target_parallel_loop; 229constexpr auto OMPD_target_teams_loop = llvm::omp::Directive::OMPD_target_teams_loop; 230constexpr auto OMPD_teams_loop = llvm::omp::Directive::OMPD_teams_loop; 231 232enum class Clause { 233 OMPC_acq_rel, 234 OMPC_acquire, 235 OMPC_adjust_args, 236 OMPC_affinity, 237 OMPC_align, 238 OMPC_aligned, 239 OMPC_allocate, 240 OMPC_allocator, 241 OMPC_append_args, 242 OMPC_at, 243 OMPC_atomic_default_mem_order, 244 OMPC_bind, 245 OMPC_cancellation_construct_type, 246 OMPC_capture, 247 OMPC_collapse, 248 OMPC_compare, 249 OMPC_copyprivate, 250 OMPC_copyin, 251 OMPC_default, 252 OMPC_defaultmap, 253 OMPC_depend, 254 OMPC_depobj, 255 OMPC_destroy, 256 OMPC_detach, 257 OMPC_device, 258 OMPC_device_type, 259 OMPC_dist_schedule, 260 OMPC_dynamic_allocators, 261 OMPC_exclusive, 262 OMPC_filter, 263 OMPC_final, 264 OMPC_firstprivate, 265 OMPC_flush, 266 OMPC_from, 267 OMPC_full, 268 OMPC_grainsize, 269 OMPC_has_device_addr, 270 OMPC_hint, 271 OMPC_if, 272 OMPC_in_reduction, 273 OMPC_inbranch, 274 OMPC_inclusive, 275 OMPC_indirect, 276 OMPC_init, 277 OMPC_is_device_ptr, 278 OMPC_lastprivate, 279 OMPC_linear, 280 OMPC_link, 281 OMPC_map, 282 OMPC_match, 283 OMPC_memory_order, 284 OMPC_mergeable, 285 OMPC_message, 286 OMPC_nogroup, 287 OMPC_nowait, 288 OMPC_nocontext, 289 OMPC_nontemporal, 290 OMPC_notinbranch, 291 OMPC_novariants, 292 OMPC_num_tasks, 293 OMPC_num_teams, 294 OMPC_num_threads, 295 OMPC_ompx_dyn_cgroup_mem, 296 OMPC_order, 297 OMPC_ordered, 298 OMPC_partial, 299 OMPC_priority, 300 OMPC_private, 301 OMPC_proc_bind, 302 OMPC_read, 303 OMPC_reduction, 304 OMPC_relaxed, 305 OMPC_release, 306 OMPC_reverse_offload, 307 OMPC_safelen, 308 OMPC_schedule, 309 OMPC_seq_cst, 310 OMPC_severity, 311 OMPC_shared, 312 OMPC_simd, 313 OMPC_simdlen, 314 OMPC_sizes, 315 OMPC_task_reduction, 316 OMPC_thread_limit, 317 OMPC_threadprivate, 318 OMPC_threads, 319 OMPC_to, 320 OMPC_unified_address, 321 OMPC_unified_shared_memory, 322 OMPC_uniform, 323 OMPC_unknown, 324 OMPC_untied, 325 OMPC_update, 326 OMPC_use, 327 OMPC_use_device_addr, 328 OMPC_use_device_ptr, 329 OMPC_uses_allocators, 330 OMPC_when, 331 OMPC_write, 332}; 333 334static constexpr std::size_t Clause_enumSize = 99; 335 336constexpr auto OMPC_acq_rel = llvm::omp::Clause::OMPC_acq_rel; 337constexpr auto OMPC_acquire = llvm::omp::Clause::OMPC_acquire; 338constexpr auto OMPC_adjust_args = llvm::omp::Clause::OMPC_adjust_args; 339constexpr auto OMPC_affinity = llvm::omp::Clause::OMPC_affinity; 340constexpr auto OMPC_align = llvm::omp::Clause::OMPC_align; 341constexpr auto OMPC_aligned = llvm::omp::Clause::OMPC_aligned; 342constexpr auto OMPC_allocate = llvm::omp::Clause::OMPC_allocate; 343constexpr auto OMPC_allocator = llvm::omp::Clause::OMPC_allocator; 344constexpr auto OMPC_append_args = llvm::omp::Clause::OMPC_append_args; 345constexpr auto OMPC_at = llvm::omp::Clause::OMPC_at; 346constexpr auto OMPC_atomic_default_mem_order = llvm::omp::Clause::OMPC_atomic_default_mem_order; 347constexpr auto OMPC_bind = llvm::omp::Clause::OMPC_bind; 348constexpr auto OMPC_cancellation_construct_type = llvm::omp::Clause::OMPC_cancellation_construct_type; 349constexpr auto OMPC_capture = llvm::omp::Clause::OMPC_capture; 350constexpr auto OMPC_collapse = llvm::omp::Clause::OMPC_collapse; 351constexpr auto OMPC_compare = llvm::omp::Clause::OMPC_compare; 352constexpr auto OMPC_copyprivate = llvm::omp::Clause::OMPC_copyprivate; 353constexpr auto OMPC_copyin = llvm::omp::Clause::OMPC_copyin; 354constexpr auto OMPC_default = llvm::omp::Clause::OMPC_default; 355constexpr auto OMPC_defaultmap = llvm::omp::Clause::OMPC_defaultmap; 356constexpr auto OMPC_depend = llvm::omp::Clause::OMPC_depend; 357constexpr auto OMPC_depobj = llvm::omp::Clause::OMPC_depobj; 358constexpr auto OMPC_destroy = llvm::omp::Clause::OMPC_destroy; 359constexpr auto OMPC_detach = llvm::omp::Clause::OMPC_detach; 360constexpr auto OMPC_device = llvm::omp::Clause::OMPC_device; 361constexpr auto OMPC_device_type = llvm::omp::Clause::OMPC_device_type; 362constexpr auto OMPC_dist_schedule = llvm::omp::Clause::OMPC_dist_schedule; 363constexpr auto OMPC_dynamic_allocators = llvm::omp::Clause::OMPC_dynamic_allocators; 364constexpr auto OMPC_exclusive = llvm::omp::Clause::OMPC_exclusive; 365constexpr auto OMPC_filter = llvm::omp::Clause::OMPC_filter; 366constexpr auto OMPC_final = llvm::omp::Clause::OMPC_final; 367constexpr auto OMPC_firstprivate = llvm::omp::Clause::OMPC_firstprivate; 368constexpr auto OMPC_flush = llvm::omp::Clause::OMPC_flush; 369constexpr auto OMPC_from = llvm::omp::Clause::OMPC_from; 370constexpr auto OMPC_full = llvm::omp::Clause::OMPC_full; 371constexpr auto OMPC_grainsize = llvm::omp::Clause::OMPC_grainsize; 372constexpr auto OMPC_has_device_addr = llvm::omp::Clause::OMPC_has_device_addr; 373constexpr auto OMPC_hint = llvm::omp::Clause::OMPC_hint; 374constexpr auto OMPC_if = llvm::omp::Clause::OMPC_if; 375constexpr auto OMPC_in_reduction = llvm::omp::Clause::OMPC_in_reduction; 376constexpr auto OMPC_inbranch = llvm::omp::Clause::OMPC_inbranch; 377constexpr auto OMPC_inclusive = llvm::omp::Clause::OMPC_inclusive; 378constexpr auto OMPC_indirect = llvm::omp::Clause::OMPC_indirect; 379constexpr auto OMPC_init = llvm::omp::Clause::OMPC_init; 380constexpr auto OMPC_is_device_ptr = llvm::omp::Clause::OMPC_is_device_ptr; 381constexpr auto OMPC_lastprivate = llvm::omp::Clause::OMPC_lastprivate; 382constexpr auto OMPC_linear = llvm::omp::Clause::OMPC_linear; 383constexpr auto OMPC_link = llvm::omp::Clause::OMPC_link; 384constexpr auto OMPC_map = llvm::omp::Clause::OMPC_map; 385constexpr auto OMPC_match = llvm::omp::Clause::OMPC_match; 386constexpr auto OMPC_memory_order = llvm::omp::Clause::OMPC_memory_order; 387constexpr auto OMPC_mergeable = llvm::omp::Clause::OMPC_mergeable; 388constexpr auto OMPC_message = llvm::omp::Clause::OMPC_message; 389constexpr auto OMPC_nogroup = llvm::omp::Clause::OMPC_nogroup; 390constexpr auto OMPC_nowait = llvm::omp::Clause::OMPC_nowait; 391constexpr auto OMPC_nocontext = llvm::omp::Clause::OMPC_nocontext; 392constexpr auto OMPC_nontemporal = llvm::omp::Clause::OMPC_nontemporal; 393constexpr auto OMPC_notinbranch = llvm::omp::Clause::OMPC_notinbranch; 394constexpr auto OMPC_novariants = llvm::omp::Clause::OMPC_novariants; 395constexpr auto OMPC_num_tasks = llvm::omp::Clause::OMPC_num_tasks; 396constexpr auto OMPC_num_teams = llvm::omp::Clause::OMPC_num_teams; 397constexpr auto OMPC_num_threads = llvm::omp::Clause::OMPC_num_threads; 398constexpr auto OMPC_ompx_dyn_cgroup_mem = llvm::omp::Clause::OMPC_ompx_dyn_cgroup_mem; 399constexpr auto OMPC_order = llvm::omp::Clause::OMPC_order; 400constexpr auto OMPC_ordered = llvm::omp::Clause::OMPC_ordered; 401constexpr auto OMPC_partial = llvm::omp::Clause::OMPC_partial; 402constexpr auto OMPC_priority = llvm::omp::Clause::OMPC_priority; 403constexpr auto OMPC_private = llvm::omp::Clause::OMPC_private; 404constexpr auto OMPC_proc_bind = llvm::omp::Clause::OMPC_proc_bind; 405constexpr auto OMPC_read = llvm::omp::Clause::OMPC_read; 406constexpr auto OMPC_reduction = llvm::omp::Clause::OMPC_reduction; 407constexpr auto OMPC_relaxed = llvm::omp::Clause::OMPC_relaxed; 408constexpr auto OMPC_release = llvm::omp::Clause::OMPC_release; 409constexpr auto OMPC_reverse_offload = llvm::omp::Clause::OMPC_reverse_offload; 410constexpr auto OMPC_safelen = llvm::omp::Clause::OMPC_safelen; 411constexpr auto OMPC_schedule = llvm::omp::Clause::OMPC_schedule; 412constexpr auto OMPC_seq_cst = llvm::omp::Clause::OMPC_seq_cst; 413constexpr auto OMPC_severity = llvm::omp::Clause::OMPC_severity; 414constexpr auto OMPC_shared = llvm::omp::Clause::OMPC_shared; 415constexpr auto OMPC_simd = llvm::omp::Clause::OMPC_simd; 416constexpr auto OMPC_simdlen = llvm::omp::Clause::OMPC_simdlen; 417constexpr auto OMPC_sizes = llvm::omp::Clause::OMPC_sizes; 418constexpr auto OMPC_task_reduction = llvm::omp::Clause::OMPC_task_reduction; 419constexpr auto OMPC_thread_limit = llvm::omp::Clause::OMPC_thread_limit; 420constexpr auto OMPC_threadprivate = llvm::omp::Clause::OMPC_threadprivate; 421constexpr auto OMPC_threads = llvm::omp::Clause::OMPC_threads; 422constexpr auto OMPC_to = llvm::omp::Clause::OMPC_to; 423constexpr auto OMPC_unified_address = llvm::omp::Clause::OMPC_unified_address; 424constexpr auto OMPC_unified_shared_memory = llvm::omp::Clause::OMPC_unified_shared_memory; 425constexpr auto OMPC_uniform = llvm::omp::Clause::OMPC_uniform; 426constexpr auto OMPC_unknown = llvm::omp::Clause::OMPC_unknown; 427constexpr auto OMPC_untied = llvm::omp::Clause::OMPC_untied; 428constexpr auto OMPC_update = llvm::omp::Clause::OMPC_update; 429constexpr auto OMPC_use = llvm::omp::Clause::OMPC_use; 430constexpr auto OMPC_use_device_addr = llvm::omp::Clause::OMPC_use_device_addr; 431constexpr auto OMPC_use_device_ptr = llvm::omp::Clause::OMPC_use_device_ptr; 432constexpr auto OMPC_uses_allocators = llvm::omp::Clause::OMPC_uses_allocators; 433constexpr auto OMPC_when = llvm::omp::Clause::OMPC_when; 434constexpr auto OMPC_write = llvm::omp::Clause::OMPC_write; 435 436enum class CancellationConstructType { 437 OMP_CANCELLATION_CONSTRUCT_Parallel=1, 438 OMP_CANCELLATION_CONSTRUCT_Loop=2, 439 OMP_CANCELLATION_CONSTRUCT_Sections=3, 440 OMP_CANCELLATION_CONSTRUCT_Taskgroup=4, 441 OMP_CANCELLATION_CONSTRUCT_None=5, 442}; 443 444constexpr auto OMP_CANCELLATION_CONSTRUCT_Parallel = llvm::omp::CancellationConstructType::OMP_CANCELLATION_CONSTRUCT_Parallel; 445constexpr auto OMP_CANCELLATION_CONSTRUCT_Loop = llvm::omp::CancellationConstructType::OMP_CANCELLATION_CONSTRUCT_Loop; 446constexpr auto OMP_CANCELLATION_CONSTRUCT_Sections = llvm::omp::CancellationConstructType::OMP_CANCELLATION_CONSTRUCT_Sections; 447constexpr auto OMP_CANCELLATION_CONSTRUCT_Taskgroup = llvm::omp::CancellationConstructType::OMP_CANCELLATION_CONSTRUCT_Taskgroup; 448constexpr auto OMP_CANCELLATION_CONSTRUCT_None = llvm::omp::CancellationConstructType::OMP_CANCELLATION_CONSTRUCT_None; 449 450enum class GrainsizeType { 451 OMP_GRAINSIZE_Strict=1, 452 OMP_GRAINSIZE_Unknown=2, 453}; 454 455constexpr auto OMP_GRAINSIZE_Strict = llvm::omp::GrainsizeType::OMP_GRAINSIZE_Strict; 456constexpr auto OMP_GRAINSIZE_Unknown = llvm::omp::GrainsizeType::OMP_GRAINSIZE_Unknown; 457 458enum class MemoryOrderKind { 459 OMP_MEMORY_ORDER_SeqCst=1, 460 OMP_MEMORY_ORDER_AcqRel=2, 461 OMP_MEMORY_ORDER_Acquire=3, 462 OMP_MEMORY_ORDER_Release=4, 463 OMP_MEMORY_ORDER_Relaxed=5, 464 OMP_MEMORY_ORDER_Default=6, 465}; 466 467constexpr auto OMP_MEMORY_ORDER_SeqCst = llvm::omp::MemoryOrderKind::OMP_MEMORY_ORDER_SeqCst; 468constexpr auto OMP_MEMORY_ORDER_AcqRel = llvm::omp::MemoryOrderKind::OMP_MEMORY_ORDER_AcqRel; 469constexpr auto OMP_MEMORY_ORDER_Acquire = llvm::omp::MemoryOrderKind::OMP_MEMORY_ORDER_Acquire; 470constexpr auto OMP_MEMORY_ORDER_Release = llvm::omp::MemoryOrderKind::OMP_MEMORY_ORDER_Release; 471constexpr auto OMP_MEMORY_ORDER_Relaxed = llvm::omp::MemoryOrderKind::OMP_MEMORY_ORDER_Relaxed; 472constexpr auto OMP_MEMORY_ORDER_Default = llvm::omp::MemoryOrderKind::OMP_MEMORY_ORDER_Default; 473 474enum class NumTasksType { 475 OMP_NUMTASKS_Strict=1, 476 OMP_NUMTASKS_Unknown=2, 477}; 478 479constexpr auto OMP_NUMTASKS_Strict = llvm::omp::NumTasksType::OMP_NUMTASKS_Strict; 480constexpr auto OMP_NUMTASKS_Unknown = llvm::omp::NumTasksType::OMP_NUMTASKS_Unknown; 481 482enum class OrderKind { 483 OMP_ORDER_unknown=2, 484 OMP_ORDER_concurrent=1, 485}; 486 487constexpr auto OMP_ORDER_unknown = llvm::omp::OrderKind::OMP_ORDER_unknown; 488constexpr auto OMP_ORDER_concurrent = llvm::omp::OrderKind::OMP_ORDER_concurrent; 489 490enum class ProcBindKind { 491 OMP_PROC_BIND_primary=5, 492 OMP_PROC_BIND_master=2, 493 OMP_PROC_BIND_close=3, 494 OMP_PROC_BIND_spread=4, 495 OMP_PROC_BIND_default=6, 496 OMP_PROC_BIND_unknown=7, 497}; 498 499constexpr auto OMP_PROC_BIND_primary = llvm::omp::ProcBindKind::OMP_PROC_BIND_primary; 500constexpr auto OMP_PROC_BIND_master = llvm::omp::ProcBindKind::OMP_PROC_BIND_master; 501constexpr auto OMP_PROC_BIND_close = llvm::omp::ProcBindKind::OMP_PROC_BIND_close; 502constexpr auto OMP_PROC_BIND_spread = llvm::omp::ProcBindKind::OMP_PROC_BIND_spread; 503constexpr auto OMP_PROC_BIND_default = llvm::omp::ProcBindKind::OMP_PROC_BIND_default; 504constexpr auto OMP_PROC_BIND_unknown = llvm::omp::ProcBindKind::OMP_PROC_BIND_unknown; 505 506enum class ScheduleKind { 507 OMP_SCHEDULE_Static=2, 508 OMP_SCHEDULE_Dynamic=3, 509 OMP_SCHEDULE_Guided=4, 510 OMP_SCHEDULE_Auto=5, 511 OMP_SCHEDULE_Runtime=6, 512 OMP_SCHEDULE_Default=7, 513}; 514 515constexpr auto OMP_SCHEDULE_Static = llvm::omp::ScheduleKind::OMP_SCHEDULE_Static; 516constexpr auto OMP_SCHEDULE_Dynamic = llvm::omp::ScheduleKind::OMP_SCHEDULE_Dynamic; 517constexpr auto OMP_SCHEDULE_Guided = llvm::omp::ScheduleKind::OMP_SCHEDULE_Guided; 518constexpr auto OMP_SCHEDULE_Auto = llvm::omp::ScheduleKind::OMP_SCHEDULE_Auto; 519constexpr auto OMP_SCHEDULE_Runtime = llvm::omp::ScheduleKind::OMP_SCHEDULE_Runtime; 520constexpr auto OMP_SCHEDULE_Default = llvm::omp::ScheduleKind::OMP_SCHEDULE_Default; 521 522// Enumeration helper functions 523Directive getOpenMPDirectiveKind(llvm::StringRef Str); 524 525llvm::StringRef getOpenMPDirectiveName(Directive D); 526 527Clause getOpenMPClauseKind(llvm::StringRef Str); 528 529llvm::StringRef getOpenMPClauseName(Clause C); 530 531/// Return true if \p C is a valid clause for \p D in version \p Version. 532bool isAllowedClauseForDirective(Directive D, Clause C, unsigned Version); 533 534CancellationConstructType getCancellationConstructType(StringRef); 535llvm::StringRef getOpenMPCancellationConstructTypeName(CancellationConstructType); 536GrainsizeType getGrainsizeType(StringRef); 537llvm::StringRef getOpenMPGrainsizeTypeName(GrainsizeType); 538MemoryOrderKind getMemoryOrderKind(StringRef); 539llvm::StringRef getOpenMPMemoryOrderKindName(MemoryOrderKind); 540NumTasksType getNumTasksType(StringRef); 541llvm::StringRef getOpenMPNumTasksTypeName(NumTasksType); 542OrderKind getOrderKind(StringRef); 543llvm::StringRef getOpenMPOrderKindName(OrderKind); 544ProcBindKind getProcBindKind(StringRef); 545llvm::StringRef getOpenMPProcBindKindName(ProcBindKind); 546ScheduleKind getScheduleKind(StringRef); 547llvm::StringRef getOpenMPScheduleKindName(ScheduleKind); 548 549} // namespace omp 550} // namespace llvm 551#endif // LLVM_OpenMP_INC 552