1//===--- OpenMPKinds.def - OpenMP directives and clauses list ---*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8/// \file 9/// This file defines the list of supported OpenMP directives and 10/// clauses. 11/// 12//===----------------------------------------------------------------------===// 13 14#ifndef OPENMP_SCHEDULE_KIND 15#define OPENMP_SCHEDULE_KIND(Name) 16#endif 17#ifndef OPENMP_SCHEDULE_MODIFIER 18#define OPENMP_SCHEDULE_MODIFIER(Name) 19#endif 20#ifndef OPENMP_DEPEND_KIND 21#define OPENMP_DEPEND_KIND(Name) 22#endif 23#ifndef OPENMP_LINEAR_KIND 24#define OPENMP_LINEAR_KIND(Name) 25#endif 26#ifndef OPENMP_MAP_KIND 27#define OPENMP_MAP_KIND(Name) 28#endif 29#ifndef OPENMP_MAP_MODIFIER_KIND 30#define OPENMP_MAP_MODIFIER_KIND(Name) 31#endif 32#ifndef OPENMP_MOTION_MODIFIER_KIND 33#define OPENMP_MOTION_MODIFIER_KIND(Name) 34#endif 35#ifndef OPENMP_DIST_SCHEDULE_KIND 36#define OPENMP_DIST_SCHEDULE_KIND(Name) 37#endif 38#ifndef OPENMP_DEFAULTMAP_KIND 39#define OPENMP_DEFAULTMAP_KIND(Name) 40#endif 41#ifndef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND 42#define OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(Name) 43#endif 44#ifndef OPENMP_ATOMIC_FAIL_MODIFIER 45#define OPENMP_ATOMIC_FAIL_MODIFIER(Name) 46#endif 47#ifndef OPENMP_AT_KIND 48#define OPENMP_AT_KIND(Name) 49#endif 50#ifndef OPENMP_SEVERITY_KIND 51#define OPENMP_SEVERITY_KIND(Name) 52#endif 53#ifndef OPENMP_DEFAULTMAP_MODIFIER 54#define OPENMP_DEFAULTMAP_MODIFIER(Name) 55#endif 56#ifndef OPENMP_DEVICE_TYPE_KIND 57#define OPENMP_DEVICE_TYPE_KIND(Name) 58#endif 59#ifndef OPENMP_LASTPRIVATE_KIND 60#define OPENMP_LASTPRIVATE_KIND(Name) 61#endif 62#ifndef OPENMP_ORDER_KIND 63#define OPENMP_ORDER_KIND(Name) 64#endif 65#ifndef OPENMP_ORDER_MODIFIER 66#define OPENMP_ORDER_MODIFIER(Name) 67#endif 68#ifndef OPENMP_DEVICE_MODIFIER 69#define OPENMP_DEVICE_MODIFIER(Name) 70#endif 71#ifndef OPENMP_REDUCTION_MODIFIER 72#define OPENMP_REDUCTION_MODIFIER(Name) 73#endif 74#ifndef OPENMP_ADJUST_ARGS_KIND 75#define OPENMP_ADJUST_ARGS_KIND(Name) 76#endif 77#ifndef OPENMP_BIND_KIND 78#define OPENMP_BIND_KIND(Name) 79#endif 80#ifndef OPENMP_GRAINSIZE_MODIFIER 81#define OPENMP_GRAINSIZE_MODIFIER(Name) 82#endif 83#ifndef OPENMP_NUMTASKS_MODIFIER 84#define OPENMP_NUMTASKS_MODIFIER(Name) 85#endif 86#ifndef OPENMP_DOACROSS_MODIFIER 87#define OPENMP_DOACROSS_MODIFIER(Name) 88#endif 89#ifndef OPENMP_ALLOCATE_MODIFIER 90#define OPENMP_ALLOCATE_MODIFIER(Name) 91#endif 92 93// Static attributes for 'schedule' clause. 94OPENMP_SCHEDULE_KIND(static) 95OPENMP_SCHEDULE_KIND(dynamic) 96OPENMP_SCHEDULE_KIND(guided) 97OPENMP_SCHEDULE_KIND(auto) 98OPENMP_SCHEDULE_KIND(runtime) 99 100// Modifiers for 'schedule' clause. 101OPENMP_SCHEDULE_MODIFIER(monotonic) 102OPENMP_SCHEDULE_MODIFIER(nonmonotonic) 103OPENMP_SCHEDULE_MODIFIER(simd) 104 105// Modifiers for 'device' clause. 106OPENMP_DEVICE_MODIFIER(ancestor) 107OPENMP_DEVICE_MODIFIER(device_num) 108 109// Static attributes for 'defaultmap' clause. 110OPENMP_DEFAULTMAP_KIND(scalar) 111OPENMP_DEFAULTMAP_KIND(aggregate) 112OPENMP_DEFAULTMAP_KIND(pointer) 113OPENMP_DEFAULTMAP_KIND(all) 114 115// Modifiers for 'defaultmap' clause. 116OPENMP_DEFAULTMAP_MODIFIER(alloc) 117OPENMP_DEFAULTMAP_MODIFIER(to) 118OPENMP_DEFAULTMAP_MODIFIER(from) 119OPENMP_DEFAULTMAP_MODIFIER(tofrom) 120OPENMP_DEFAULTMAP_MODIFIER(firstprivate) 121OPENMP_DEFAULTMAP_MODIFIER(none) 122OPENMP_DEFAULTMAP_MODIFIER(default) 123OPENMP_DEFAULTMAP_MODIFIER(present) 124 125// Static attributes for 'depend' clause. 126OPENMP_DEPEND_KIND(in) 127OPENMP_DEPEND_KIND(out) 128OPENMP_DEPEND_KIND(inout) 129OPENMP_DEPEND_KIND(mutexinoutset) 130OPENMP_DEPEND_KIND(depobj) 131OPENMP_DEPEND_KIND(source) 132OPENMP_DEPEND_KIND(sink) 133OPENMP_DEPEND_KIND(inoutset) 134OPENMP_DEPEND_KIND(outallmemory) 135OPENMP_DEPEND_KIND(inoutallmemory) 136 137// Modifiers for 'linear' clause. 138OPENMP_LINEAR_KIND(val) 139OPENMP_LINEAR_KIND(ref) 140OPENMP_LINEAR_KIND(uval) 141OPENMP_LINEAR_KIND(step) 142 143// Modifiers for 'atomic_default_mem_order' clause. 144OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(seq_cst) 145OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(acq_rel) 146OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(relaxed) 147 148// Modifiers for atomic 'fail' clause. 149OPENMP_ATOMIC_FAIL_MODIFIER(seq_cst) 150OPENMP_ATOMIC_FAIL_MODIFIER(acquire) 151OPENMP_ATOMIC_FAIL_MODIFIER(relaxed) 152 153// Modifiers for 'at' clause. 154OPENMP_AT_KIND(compilation) 155OPENMP_AT_KIND(execution) 156 157// Modifiers for 'severity' clause. 158OPENMP_SEVERITY_KIND(fatal) 159OPENMP_SEVERITY_KIND(warning) 160 161// Map types for 'map' clause. 162OPENMP_MAP_KIND(alloc) 163OPENMP_MAP_KIND(to) 164OPENMP_MAP_KIND(from) 165OPENMP_MAP_KIND(tofrom) 166OPENMP_MAP_KIND(delete) 167OPENMP_MAP_KIND(release) 168 169// Map-type-modifiers for 'map' clause. 170OPENMP_MAP_MODIFIER_KIND(always) 171OPENMP_MAP_MODIFIER_KIND(close) 172OPENMP_MAP_MODIFIER_KIND(mapper) 173OPENMP_MAP_MODIFIER_KIND(iterator) 174OPENMP_MAP_MODIFIER_KIND(present) 175// This is an OpenMP extension for the sake of OpenACC support. 176OPENMP_MAP_MODIFIER_KIND(ompx_hold) 177 178// Modifiers for 'to' or 'from' clause. 179OPENMP_MOTION_MODIFIER_KIND(mapper) 180OPENMP_MOTION_MODIFIER_KIND(present) 181 182// Static attributes for 'dist_schedule' clause. 183OPENMP_DIST_SCHEDULE_KIND(static) 184 185// Device types for 'device_type' clause. 186OPENMP_DEVICE_TYPE_KIND(host) 187OPENMP_DEVICE_TYPE_KIND(nohost) 188OPENMP_DEVICE_TYPE_KIND(any) 189 190// Type of the 'lastprivate' clause. 191OPENMP_LASTPRIVATE_KIND(conditional) 192 193// Type of the 'order' clause. 194OPENMP_ORDER_KIND(concurrent) 195 196// Modifiers for the 'order' clause. 197OPENMP_ORDER_MODIFIER(reproducible) 198OPENMP_ORDER_MODIFIER(unconstrained) 199 200// Modifiers for 'reduction' clause. 201OPENMP_REDUCTION_MODIFIER(default) 202OPENMP_REDUCTION_MODIFIER(inscan) 203OPENMP_REDUCTION_MODIFIER(task) 204 205// Adjust-op kinds for the 'adjust_args' clause. 206OPENMP_ADJUST_ARGS_KIND(nothing) 207OPENMP_ADJUST_ARGS_KIND(need_device_ptr) 208 209// Binding kinds for the 'bind' clause. 210OPENMP_BIND_KIND(teams) 211OPENMP_BIND_KIND(parallel) 212OPENMP_BIND_KIND(thread) 213 214// Modifiers for the 'grainsize' clause. 215OPENMP_GRAINSIZE_MODIFIER(strict) 216 217// Modifiers for the 'num_tasks' clause. 218OPENMP_NUMTASKS_MODIFIER(strict) 219 220// Modifiers for 'allocate' clause. 221OPENMP_ALLOCATE_MODIFIER(allocator) 222OPENMP_ALLOCATE_MODIFIER(align) 223 224// Modifiers for the 'doacross' clause. 225OPENMP_DOACROSS_MODIFIER(source) 226OPENMP_DOACROSS_MODIFIER(sink) 227OPENMP_DOACROSS_MODIFIER(sink_omp_cur_iteration) 228OPENMP_DOACROSS_MODIFIER(source_omp_cur_iteration) 229 230#undef OPENMP_NUMTASKS_MODIFIER 231#undef OPENMP_GRAINSIZE_MODIFIER 232#undef OPENMP_BIND_KIND 233#undef OPENMP_ADJUST_ARGS_KIND 234#undef OPENMP_REDUCTION_MODIFIER 235#undef OPENMP_DEVICE_MODIFIER 236#undef OPENMP_ORDER_KIND 237#undef OPENMP_ORDER_MODIFIER 238#undef OPENMP_LASTPRIVATE_KIND 239#undef OPENMP_DEVICE_TYPE_KIND 240#undef OPENMP_LINEAR_KIND 241#undef OPENMP_DEPEND_KIND 242#undef OPENMP_SCHEDULE_MODIFIER 243#undef OPENMP_SCHEDULE_KIND 244#undef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND 245#undef OPENMP_ATOMIC_FAIL_MODIFIER 246#undef OPENMP_AT_KIND 247#undef OPENMP_SEVERITY_KIND 248#undef OPENMP_MAP_KIND 249#undef OPENMP_MAP_MODIFIER_KIND 250#undef OPENMP_MOTION_MODIFIER_KIND 251#undef OPENMP_DIST_SCHEDULE_KIND 252#undef OPENMP_DEFAULTMAP_KIND 253#undef OPENMP_DEFAULTMAP_MODIFIER 254#undef OPENMP_DOACROSS_MODIFIER 255#undef OPENMP_ALLOCATE_MODIFIER 256 257