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_DEFAULTMAP_MODIFIER 45#define OPENMP_DEFAULTMAP_MODIFIER(Name) 46#endif 47#ifndef OPENMP_DEVICE_TYPE_KIND 48#define OPENMP_DEVICE_TYPE_KIND(Name) 49#endif 50#ifndef OPENMP_LASTPRIVATE_KIND 51#define OPENMP_LASTPRIVATE_KIND(Name) 52#endif 53#ifndef OPENMP_ORDER_KIND 54#define OPENMP_ORDER_KIND(Name) 55#endif 56#ifndef OPENMP_DEVICE_MODIFIER 57#define OPENMP_DEVICE_MODIFIER(Name) 58#endif 59#ifndef OPENMP_REDUCTION_MODIFIER 60#define OPENMP_REDUCTION_MODIFIER(Name) 61#endif 62#ifndef OPENMP_ADJUST_ARGS_KIND 63#define OPENMP_ADJUST_ARGS_KIND(Name) 64#endif 65#ifndef OPENMP_BIND_KIND 66#define OPENMP_BIND_KIND(Name) 67#endif 68 69// Static attributes for 'schedule' clause. 70OPENMP_SCHEDULE_KIND(static) 71OPENMP_SCHEDULE_KIND(dynamic) 72OPENMP_SCHEDULE_KIND(guided) 73OPENMP_SCHEDULE_KIND(auto) 74OPENMP_SCHEDULE_KIND(runtime) 75 76// Modifiers for 'schedule' clause. 77OPENMP_SCHEDULE_MODIFIER(monotonic) 78OPENMP_SCHEDULE_MODIFIER(nonmonotonic) 79OPENMP_SCHEDULE_MODIFIER(simd) 80 81// Modifiers for 'device' clause. 82OPENMP_DEVICE_MODIFIER(ancestor) 83OPENMP_DEVICE_MODIFIER(device_num) 84 85// Static attributes for 'defaultmap' clause. 86OPENMP_DEFAULTMAP_KIND(scalar) 87OPENMP_DEFAULTMAP_KIND(aggregate) 88OPENMP_DEFAULTMAP_KIND(pointer) 89 90// Modifiers for 'defaultmap' clause. 91OPENMP_DEFAULTMAP_MODIFIER(alloc) 92OPENMP_DEFAULTMAP_MODIFIER(to) 93OPENMP_DEFAULTMAP_MODIFIER(from) 94OPENMP_DEFAULTMAP_MODIFIER(tofrom) 95OPENMP_DEFAULTMAP_MODIFIER(firstprivate) 96OPENMP_DEFAULTMAP_MODIFIER(none) 97OPENMP_DEFAULTMAP_MODIFIER(default) 98OPENMP_DEFAULTMAP_MODIFIER(present) 99 100// Static attributes for 'depend' clause. 101OPENMP_DEPEND_KIND(in) 102OPENMP_DEPEND_KIND(out) 103OPENMP_DEPEND_KIND(inout) 104OPENMP_DEPEND_KIND(mutexinoutset) 105OPENMP_DEPEND_KIND(depobj) 106OPENMP_DEPEND_KIND(source) 107OPENMP_DEPEND_KIND(sink) 108OPENMP_DEPEND_KIND(inoutset) 109OPENMP_DEPEND_KIND(outallmemory) 110OPENMP_DEPEND_KIND(inoutallmemory) 111 112// Modifiers for 'linear' clause. 113OPENMP_LINEAR_KIND(val) 114OPENMP_LINEAR_KIND(ref) 115OPENMP_LINEAR_KIND(uval) 116 117// Modifiers for 'atomic_default_mem_order' clause. 118OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(seq_cst) 119OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(acq_rel) 120OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(relaxed) 121 122// Map types for 'map' clause. 123OPENMP_MAP_KIND(alloc) 124OPENMP_MAP_KIND(to) 125OPENMP_MAP_KIND(from) 126OPENMP_MAP_KIND(tofrom) 127OPENMP_MAP_KIND(delete) 128OPENMP_MAP_KIND(release) 129 130// Map-type-modifiers for 'map' clause. 131OPENMP_MAP_MODIFIER_KIND(always) 132OPENMP_MAP_MODIFIER_KIND(close) 133OPENMP_MAP_MODIFIER_KIND(mapper) 134OPENMP_MAP_MODIFIER_KIND(present) 135// This is an OpenMP extension for the sake of OpenACC support. 136OPENMP_MAP_MODIFIER_KIND(ompx_hold) 137 138// Modifiers for 'to' or 'from' clause. 139OPENMP_MOTION_MODIFIER_KIND(mapper) 140OPENMP_MOTION_MODIFIER_KIND(present) 141 142// Static attributes for 'dist_schedule' clause. 143OPENMP_DIST_SCHEDULE_KIND(static) 144 145// Device types for 'device_type' clause. 146OPENMP_DEVICE_TYPE_KIND(host) 147OPENMP_DEVICE_TYPE_KIND(nohost) 148OPENMP_DEVICE_TYPE_KIND(any) 149 150// Type of the 'lastprivate' clause. 151OPENMP_LASTPRIVATE_KIND(conditional) 152 153// Type of the 'order' clause. 154OPENMP_ORDER_KIND(concurrent) 155 156// Modifiers for 'reduction' clause. 157OPENMP_REDUCTION_MODIFIER(default) 158OPENMP_REDUCTION_MODIFIER(inscan) 159OPENMP_REDUCTION_MODIFIER(task) 160 161// Adjust-op kinds for the 'adjust_args' clause. 162OPENMP_ADJUST_ARGS_KIND(nothing) 163OPENMP_ADJUST_ARGS_KIND(need_device_ptr) 164 165// Binding kinds for the 'bind' clause. 166OPENMP_BIND_KIND(teams) 167OPENMP_BIND_KIND(parallel) 168OPENMP_BIND_KIND(thread) 169 170#undef OPENMP_BIND_KIND 171#undef OPENMP_ADJUST_ARGS_KIND 172#undef OPENMP_REDUCTION_MODIFIER 173#undef OPENMP_DEVICE_MODIFIER 174#undef OPENMP_ORDER_KIND 175#undef OPENMP_LASTPRIVATE_KIND 176#undef OPENMP_DEVICE_TYPE_KIND 177#undef OPENMP_LINEAR_KIND 178#undef OPENMP_DEPEND_KIND 179#undef OPENMP_SCHEDULE_MODIFIER 180#undef OPENMP_SCHEDULE_KIND 181#undef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND 182#undef OPENMP_MAP_KIND 183#undef OPENMP_MAP_MODIFIER_KIND 184#undef OPENMP_MOTION_MODIFIER_KIND 185#undef OPENMP_DIST_SCHEDULE_KIND 186#undef OPENMP_DEFAULTMAP_KIND 187#undef OPENMP_DEFAULTMAP_MODIFIER 188 189