LLVM: include/llvm/Frontend/OpenMP/ClauseT.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41#ifndef LLVM_FRONTEND_OPENMP_CLAUSET_H
42#define LLVM_FRONTEND_OPENMP_CLAUSET_H
43
52
53#include
54#include
55#include
56#include <type_traits>
57#include
58#include
59
60#define ENUM(Name, ...) enum class Name { __VA_ARGS__ }
61#define OPT(x) std::optional
62
63
64
65
66
67
68
69
70
71
72
73
74
75#define CLAUSET_SCOPED_ENUM_MEMBER_CONVERT(Ov, Tv) \
76 if (v == OtherEnum::Ov) { \
77 return ThisEnum::Tv; \
78 }
79
80
81#define CLAUSET_UNSCOPED_ENUM_MEMBER_CONVERT(Ov, Tv) \
82 if (v == Ov) { \
83 return ThisEnum::Tv; \
84 }
85
86#define CLAUSET_ENUM_CONVERT(func, OtherE, ThisE, Maps) \
87 auto func = [](OtherE v) -> ThisE { \
88 using ThisEnum = ThisE; \
89 using OtherEnum = OtherE; \
90 (void)sizeof(OtherEnum); \
91 Maps; \
92 llvm_unreachable("Unexpected value in " #OtherE); \
93 }
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
112
114 static constexpr bool value = false;
115};
116
120
122
123
125
126template <typename... Types1, typename... Types2>
127struct UnionOfTwo<std::variant<Types1...>, std::variant<Types2...>> {
128 using type = std::variant<Types1..., Types2...>;
129};
130}
131
134
135
136
137template <typename...> struct Union;
138
140
141 using type = std::variant<>;
142};
143
144template <typename T, typename... Ts> struct Union<T, Ts...> {
148};
149
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180template <typename IdType, typename ExprType> struct ObjectT;
181
182
183template <typename I, typename E>
185 return o1.id() == o2.id();
186}
187
189
191
192template <typename I, typename E>
198 ENUM(IntrinsicOperator, Power, Multiply, Divide, Add, Subtract, Concat, LT,
199 LE, EQ, NE, GE, GT, NOT, AND, OR, EQV, NEQV, Min, Max);
201 std::variant<DefinedOpName, IntrinsicOperator> u;
202};
203
204
205template
211
212
213template <typename TypeType, typename IdType, typename ExprType>
219
220
221
222
223
224
225
226
227
228
229template <typename I, typename E>
235
236
237
238ENUM(MemoryOrder, AcqRel, Acquire, Relaxed, Release, SeqCst);
239ENUM(MotionExpectation, Present);
240
241
242ENUM(DependenceType, Depobj, In, Inout, Inoutset, Mutexinoutset, Out, Sink,
243 Source);
244ENUM(Prescriptiveness, Strict);
245
246template <typename I, typename E>
250 std::tuple<DefinedOperatorT<I, E>, E> t;
251 };
254};
255
256template <typename I, typename E>
261
262
263
264
265
266
267
268
269template <typename I, typename E>
274
275template <typename T, typename I, typename E>
277
278template
279std::enable_if_t<T::EmptyTrait::value, bool> operator==(const T &a,
280 const T &b) {
281 return true;
282}
283template
284std::enable_if_t<T::IncompleteTrait::value, bool> operator==(const T &a,
285 const T &b) {
286 return true;
287}
288template
289std::enable_if_t<T::WrapperTrait::value, bool> operator==(const T &a,
290 const T &b) {
291 return a.v == b.v;
292}
293template
294std::enable_if_t<T::TupleTrait::value, bool> operator==(const T &a,
295 const T &b) {
296 return a.t == b.t;
297}
298template
299std::enable_if_t<T::UnionTrait::value, bool> operator==(const T &a,
300 const T &b) {
301 return a.u == b.u;
302}
303}
304
306
309
310template <typename T, typename I, typename E>
312
313template <
314 typename ContainerTy, typename FunctionTy,
316 typename ResultTy = std::invoke_result_t<FunctionTy, ElemTy>>
322
324using type::operator==;
325
326
327template <typename T, typename I, typename E>
333
334
335template <typename T, typename I, typename E>
339
340
341template <typename T, typename I, typename E>
345
346
347template <typename T, typename I, typename E>
351
352
353template <typename T, typename I, typename E>
361
362
363template <typename T, typename I, typename E>
370
371
372template <typename T, typename I, typename E>
380
381template <typename T, typename I, typename E>
383
384
385template <typename T, typename I, typename E>
395
396
397template <typename T, typename I, typename E>
403
404
405template <typename T, typename I, typename E>
409
410
411template <typename T, typename I, typename E>
413 ENUM(ActionTime, Compilation, Execution);
416};
417
418
419template <typename T, typename I, typename E>
425
426
427template <typename T, typename I, typename E>
433
434
435template <typename T, typename I, typename E>
439
440
441template <typename T, typename I, typename E>
447
448
449template <typename T, typename I, typename E>
453
454template <typename T, typename I, typename E>
458
459
460template <typename T, typename I, typename E>
466
467
468template <typename T, typename I, typename E>
474
475
476template <typename T, typename I, typename E>
482
483
484template <typename T, typename I, typename E>
486 ENUM(DataSharingAttribute, Firstprivate, None, Private, Shared);
489};
490
491
492template <typename T, typename I, typename E>
495 Present);
496 ENUM(VariableCategory, All, Scalar, Aggregate, Pointer, Allocatable);
498 std::tuple<ImplicitBehavior, OPT(VariableCategory)> t;
499};
500
501template <typename T, typename I, typename E>
503
504
505template <typename T, typename I, typename E>
510
516
519 std::variant<Doacross, TaskDep> u;
520};
521
522
523template <typename T, typename I, typename E>
530
531
532template <typename T, typename I, typename E>
538
539
540template <typename T, typename I, typename E>
543 ENUM(DeviceModifier, Ancestor, DeviceNum);
546};
547
548
549template <typename T, typename I, typename E>
555
556
557template <typename T, typename I, typename E>
559 ENUM(DeviceTypeDescription, Any, Host, Nohost);
562};
563
564
565template <typename T, typename I, typename E>
572
573
574template <typename T, typename I, typename E>
579
580 std::tuple<DependenceType, Vector> t;
581};
582
583
584template <typename T, typename I, typename E>
590
591template <typename T, typename I, typename E>
593 ENUM(AccessGroup, Cgroup);
598};
599
600
601template <typename T, typename I, typename E>
608
609
610template <typename T, typename I, typename E>
616
617
618template <typename T, typename I, typename E>
624
625
626template <typename T, typename I, typename E>
632
633
634template <typename T, typename I, typename E>
640
641
642template <typename T, typename I, typename E>
648
649
650template <typename T, typename I, typename E>
661
662
663template <typename T, typename I, typename E>
667
668
669template <typename T, typename I, typename E>
676
677
678template <typename T, typename I, typename E>
682
683
684template <typename T, typename I, typename E>
688
689
690template <typename T, typename I, typename E>
696
697
698template <typename T, typename I, typename E>
704
705
706template <typename T, typename I, typename E>
711
712
713template <typename T, typename I, typename E>
720
721
722template <typename T, typename I, typename E>
726
727
728template <typename T, typename I, typename E>
734
735
736template <typename T, typename I, typename E>
742
743
744template <typename T, typename I, typename E>
748
749
750template <typename T, typename I, typename E>
755 ENUM(InteropType, Target, Targetsync);
757
760};
761
762
763template <typename T, typename I, typename E>
769
770
771template <typename T, typename I, typename E>
774
775
778 std::tuple<ReductionIdentifiers, List> t;
779};
780
781
782template <typename T, typename I, typename E>
788
789
790template <typename T, typename I, typename E>
793 ENUM(LastprivateModifier, Conditional);
795 std::tuple<OPT(LastprivateModifier), List> t;
796};
797
798
799template <typename T, typename I, typename E>
801
803
805 ENUM(LinearModifier, Ref, Val, Uval);
806
808
810};
811
812
813template <typename T, typename I, typename E>
819
820
821template <typename T, typename I, typename E>
824 ENUM(MapType, To, From, Tofrom, Storage);
826 ENUM(MapTypeModifier, Always, Close, Delete, Present, Self, OmpxHold);
827 ENUM(RefModifier, RefPtee, RefPtr, RefPtrPtee);
828
832
837};
838
839
840template <typename T, typename I, typename E>
844
845
846template <typename T, typename I, typename E>
850
851
852template <typename T, typename I, typename E>
858
859
860template <typename T, typename I, typename E>
866
867
868template <typename T, typename I, typename E>
872
873
874template <typename T, typename I, typename E>
880
881
882template <typename T, typename I, typename E>
886
887
888template <typename T, typename I, typename E>
892
893
894template <typename T, typename I, typename E>
898
899
900template <typename T, typename I, typename E>
904
905
906template <typename T, typename I, typename E>
910
911
912template <typename T, typename I, typename E>
918
919
920template <typename T, typename I, typename E>
924
925
926template <typename T, typename I, typename E>
933
934
935template <typename T, typename I, typename E>
939
940
945
946
947
951};
952
953
954template <typename T, typename I, typename E>
960
961template <typename T, typename I, typename E>
965
966template <typename T, typename I, typename E>
970
971template <typename T, typename I, typename E>
976
977
978template <typename T, typename I, typename E>
980 ENUM(OrderModifier, Reproducible, Unconstrained);
981 ENUM(Ordering, Concurrent);
983 std::tuple<OPT(OrderModifier), Ordering> t;
984};
985
986
987template <typename T, typename I, typename E>
993
994
995template <typename T, typename I, typename E>
999
1000
1001template <typename T, typename I, typename E>
1007
1008
1009template <typename T, typename I, typename E>
1015
1016
1017template <typename T, typename I, typename E>
1023
1024
1025template <typename T, typename I, typename E>
1031
1032
1033template <typename T, typename I, typename E>
1035 ENUM(AffinityPolicy, Close, Master, Spread, Primary);
1038};
1039
1040
1041template <typename T, typename I, typename E>
1045
1046
1047template <typename T, typename I, typename E>
1057
1058
1059template <typename T, typename I, typename E>
1063
1064
1065template <typename T, typename I, typename E>
1069
1070
1071template <typename T, typename I, typename E>
1075
1076
1077template <typename T, typename I, typename E>
1083
1084
1085template <typename T, typename I, typename E>
1091
1092
1093template <typename T, typename I, typename E>
1095 ENUM(Kind, Static, Dynamic, Guided, Auto, Runtime);
1097 ENUM(OrderingModifier, Monotonic, Nonmonotonic);
1101};
1102
1103
1104template <typename T, typename I, typename E>
1110
1111
1112template <typename T, typename I, typename E>
1116
1117
1118template <typename T, typename I, typename E>
1120 ENUM(SevLevel, Fatal, Warning);
1123};
1124
1125
1126template <typename T, typename I, typename E>
1132
1133
1134template <typename T, typename I, typename E>
1138
1139
1140template <typename T, typename I, typename E>
1146
1147
1148template <typename T, typename I, typename E>
1154
1155
1156template <typename T, typename I, typename E>
1159
1160
1163 std::tuple<ReductionIdentifiers, List> t;
1164};
1165
1166
1167template <typename T, typename I, typename E>
1173
1174
1175template <typename T, typename I, typename E>
1179
1180
1181template <typename T, typename I, typename E>
1183 ENUM(ThreadsetPolicy, Omp_Pool, Omp_Team);
1186};
1187
1188
1189template <typename T, typename I, typename E>
1200
1201
1202template <typename T, typename I, typename E>
1206
1207
1208template <typename T, typename I, typename E>
1214
1215
1216template <typename T, typename I, typename E>
1222
1223
1224template <typename T, typename I, typename E>
1230
1231template <typename T, typename I, typename E>
1235
1236
1237template <typename T, typename I, typename E>
1241
1242
1243
1244
1245template <typename T, typename I, typename E>
1251
1252
1253template <typename T, typename I, typename E>
1259
1260
1261template <typename T, typename I, typename E>
1267
1268
1269template <typename T, typename I, typename E>
1275
1276
1277template <typename T, typename I, typename E>
1290
1291
1292template <typename T, typename I, typename E>
1296
1297
1298template <typename T, typename I, typename E>
1302
1303
1304template <typename T, typename I, typename E>
1308
1309
1310template <typename T, typename I, typename E> struct LooprangeT {
1313
1315 std::tuple<Begin, End> t;
1316};
1317
1318
1319
1320template <typename T, typename I, typename E>
1324
1325template <typename T, typename I, typename E>
1327 AcqRelT<T, I, E>, AcquireT<T, I, E>, CaptureT<T, I, E>, CompareT<T, I, E>,
1328 FullT<T, I, E>, InbranchT<T, I, E>, MergeableT<T, I, E>, NogroupT<T, I, E>,
1331 NowaitT<T, I, E>, ReadT<T, I, E>, RelaxedT<T, I, E>, ReleaseT<T, I, E>,
1332 SeqCstT<T, I, E>, SimdT<T, I, E>, ThreadsT<T, I, E>, UnknownT<T, I, E>,
1333 UntiedT<T, I, E>, UseT<T, I, E>, WeakT<T, I, E>, WriteT<T, I, E>>;
1334
1335template <typename T, typename I, typename E>
1341
1342template <typename T, typename I, typename E>
1352
1353template <typename T, typename I, typename E>
1355
1356template <typename T, typename I, typename E>
1364 FailT<T, I, E>, FilterT<T, I, E>, FinalT<T, I, E>, FirstprivateT<T, I, E>,
1372 SelfMapsT<T, I, E>, SeverityT<T, I, E>, SharedT<T, I, E>, SimdlenT<T, I, E>,
1377
1378template <typename T, typename I, typename E>
1387}
1388
1389using type::operator==;
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403template <typename TypeType, typename IdType, typename ExprType,
1404 typename... Extras>
1409
1410
1411 using BaseT = ClauseT<TypeType, IdType, ExprType, Extras...>;
1412
1415 std::variant<Extras...>>::type;
1416
1420};
1421
1423 llvm::omp::Directive id = llvm::omp::Directive::OMPD_unknown;
1425};
1426
1427}
1428
1429#undef OPT
1430#undef ENUM
1431
1432#endif
AMDGPU Prepare AGPR Alloc
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
#define ENUM(Name,...)
Definition ClauseT.h:60
#define OPT(x)
Definition ClauseT.h:61
DXIL Resource Implicit Binding
This file defines the DenseMap class.
This file defines the DenseSet and SmallDenseSet classes.
This file defines the SmallVector class.
static constexpr int Concat[]
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
constexpr bool is_variant_v
Definition ClauseT.h:121
OutputIt transform(R &&Range, OutputIt d_first, UnaryFunction F)
Wrapper function around std::transform to apply a function to a range and store the result elsewhere.
Implement std::hash so that hash_code can be used in STL containers.
typename type::Union< EmptyClausesT< T, I, E >, ExtensionClausesT< T, I, E >, IncompleteClausesT< T, I, E >, TupleClausesT< T, I, E >, UnionClausesT< T, I, E >, WrapperClausesT< T, I, E > >::type UnionOfAllClausesT
Definition ClauseT.h:1379
std::variant< OmpxAttributeT< T, I, E >, OmpxBareT< T, I, E >, OmpxDynCgroupMemT< T, I, E > > ExtensionClausesT
Definition ClauseT.h:1321
std::variant< AdjustArgsT< T, I, E >, AppendArgsT< T, I, E >, CollectorT< T, I, E >, GraphIdT< T, I, E >, GraphResetT< T, I, E >, InductorT< T, I, E >, MatchT< T, I, E >, OtherwiseT< T, I, E >, ReplayableT< T, I, E >, TransparentT< T, I, E >, WhenT< T, I, E > > IncompleteClausesT
Definition ClauseT.h:1336
std::variant< AcqRelT< T, I, E >, AcquireT< T, I, E >, CaptureT< T, I, E >, CompareT< T, I, E >, FullT< T, I, E >, InbranchT< T, I, E >, MergeableT< T, I, E >, NogroupT< T, I, E >, NoOpenmpConstructsT< T, I, E >, NoOpenmpRoutinesT< T, I, E >, NoOpenmpT< T, I, E >, NoParallelismT< T, I, E >, NotinbranchT< T, I, E >, NowaitT< T, I, E >, ReadT< T, I, E >, RelaxedT< T, I, E >, ReleaseT< T, I, E >, SeqCstT< T, I, E >, SimdT< T, I, E >, ThreadsT< T, I, E >, UnknownT< T, I, E >, UntiedT< T, I, E >, UseT< T, I, E >, WeakT< T, I, E >, WriteT< T, I, E > > EmptyClausesT
Definition ClauseT.h:1326
std::variant< DependT< T, I, E > > UnionClausesT
Definition ClauseT.h:1354
std::variant< AbsentT< T, I, E >, AlignT< T, I, E >, AllocatorT< T, I, E >, AtomicDefaultMemOrderT< T, I, E >, AtT< T, I, E >, BindT< T, I, E >, CollapseT< T, I, E >, ContainsT< T, I, E >, CopyinT< T, I, E >, CopyprivateT< T, I, E >, DefaultT< T, I, E >, DestroyT< T, I, E >, DetachT< T, I, E >, DeviceSafesyncT< T, I, E >, DeviceTypeT< T, I, E >, DynamicAllocatorsT< T, I, E >, EnterT< T, I, E >, ExclusiveT< T, I, E >, FailT< T, I, E >, FilterT< T, I, E >, FinalT< T, I, E >, FirstprivateT< T, I, E >, HasDeviceAddrT< T, I, E >, HintT< T, I, E >, HoldsT< T, I, E >, InclusiveT< T, I, E >, IndirectT< T, I, E >, InitializerT< T, I, E >, IsDevicePtrT< T, I, E >, LinkT< T, I, E >, MessageT< T, I, E >, NocontextT< T, I, E >, NontemporalT< T, I, E >, NovariantsT< T, I, E >, NumTeamsT< T, I, E >, NumThreadsT< T, I, E >, OrderedT< T, I, E >, PartialT< T, I, E >, PriorityT< T, I, E >, PrivateT< T, I, E >, ProcBindT< T, I, E >, ReverseOffloadT< T, I, E >, SafelenT< T, I, E >, SelfMapsT< T, I, E >, SeverityT< T, I, E >, SharedT< T, I, E >, SimdlenT< T, I, E >, SizesT< T, I, E >, PermutationT< T, I, E >, ThreadLimitT< T, I, E >, ThreadsetT< T, I, E >, UnifiedAddressT< T, I, E >, UnifiedSharedMemoryT< T, I, E >, UniformT< T, I, E >, UpdateT< T, I, E >, UseDeviceAddrT< T, I, E >, UseDevicePtrT< T, I, E >, UsesAllocatorsT< T, I, E > > WrapperClausesT
Definition ClauseT.h:1357
std::variant< AffinityT< T, I, E >, AlignedT< T, I, E >, AllocateT< T, I, E >, DefaultmapT< T, I, E >, DeviceT< T, I, E >, DistScheduleT< T, I, E >, DoacrossT< T, I, E >, DynGroupprivateT< T, I, E >, FromT< T, I, E >, GrainsizeT< T, I, E >, IfT< T, I, E >, InitT< T, I, E >, InReductionT< T, I, E >, LastprivateT< T, I, E >, LinearT< T, I, E >, LooprangeT< T, I, E >, MapT< T, I, E >, NumTasksT< T, I, E >, OrderT< T, I, E >, ReductionT< T, I, E >, ScheduleT< T, I, E >, TaskReductionT< T, I, E >, ToT< T, I, E > > TupleClausesT
Definition ClauseT.h:1343
llvm::omp::Directive DirectiveName
Definition ClauseT.h:190
ListT< IteratorSpecifierT< T, I, E > > IteratorT
Definition ClauseT.h:276
bool operator==(const ObjectT< I, E > &o1, const ObjectT< I, E > &o2)
Definition ClauseT.h:184
ListT< ObjectT< I, E > > ObjectListT
Definition ClauseT.h:188
llvm::SmallVector< T, 0 > ListT
Definition ClauseT.h:150
type::ObjectListT< I, E > ObjectListT
Definition ClauseT.h:308
type::IteratorT< T, I, E > IteratorT
Definition ClauseT.h:311
type::ListT< T > ListT
Definition ClauseT.h:305
ListT< ResultTy > makeList(ContainerTy &&container, FunctionTy &&func)
Definition ClauseT.h:317
type::ObjectT< I, E > ObjectT
Definition ClauseT.h:307
std::variant< Types1..., Types2... > type
Definition ClauseT.h:128
static constexpr bool value
Definition ClauseT.h:118
static constexpr bool value
Definition ClauseT.h:114
Definition ClauseT.h:1405
IdType IdTy
Definition ClauseT.h:1407
std::true_type UnionTrait
Definition ClauseT.h:1418
typename type::Union< clause::UnionOfAllClausesT< TypeType, IdType, ExprType >, std::variant< Extras... > >::type VariantTy
Definition ClauseT.h:1413
ExprType ExprTy
Definition ClauseT.h:1408
ClauseT< TypeType, IdType, ExprType, Extras... > BaseT
Definition ClauseT.h:1411
VariantTy u
Definition ClauseT.h:1419
llvm::omp::Clause id
Definition ClauseT.h:1417
TypeType TypeTy
Definition ClauseT.h:1406
Definition ClauseT.h:1422
tomp::type::ListT< ClauseType > clauses
Definition ClauseT.h:1424
List v
Definition ClauseT.h:331
std::true_type WrapperTrait
Definition ClauseT.h:330
ListT< type::DirectiveName > List
Definition ClauseT.h:329
std::true_type EmptyTrait
Definition ClauseT.h:337
std::true_type EmptyTrait
Definition ClauseT.h:343
std::true_type IncompleteTrait
Definition ClauseT.h:349
type::IteratorT< T, I, E > Iterator
Definition ClauseT.h:355
std::tuple< OPT(Iterator), LocatorList > t
Definition ClauseT.h:359
std::true_type TupleTrait
Definition ClauseT.h:358
ObjectListT< I, E > LocatorList
Definition ClauseT.h:356
Alignment v
Definition ClauseT.h:368
E Alignment
Definition ClauseT.h:365
std::true_type WrapperTrait
Definition ClauseT.h:367
std::tuple< OPT(Alignment), List > t
Definition ClauseT.h:378
E Alignment
Definition ClauseT.h:374
ObjectListT< I, E > List
Definition ClauseT.h:375
std::true_type TupleTrait
Definition ClauseT.h:377
std::true_type TupleTrait
Definition ClauseT.h:392
ObjectListT< I, E > List
Definition ClauseT.h:390
std::tuple< OPT(AllocatorComplexModifier), OPT(AlignModifier), List > t
Definition ClauseT.h:393
AllocatorT< T, I, E > AllocatorComplexModifier
Definition ClauseT.h:388
AlignT< T, I, E > AlignModifier
Definition ClauseT.h:389
std::true_type WrapperTrait
Definition ClauseT.h:400
Allocator v
Definition ClauseT.h:401
E Allocator
Definition ClauseT.h:399
std::true_type IncompleteTrait
Definition ClauseT.h:407
ActionTime v
Definition ClauseT.h:415
ENUM(ActionTime, Compilation, Execution)
std::true_type WrapperTrait
Definition ClauseT.h:414
std::true_type WrapperTrait
Definition ClauseT.h:422
type::MemoryOrder MemoryOrder
Definition ClauseT.h:421
MemoryOrder v
Definition ClauseT.h:423
Binding v
Definition ClauseT.h:431
ENUM(Binding, Teams, Parallel, Thread)
std::true_type WrapperTrait
Definition ClauseT.h:430
std::true_type EmptyTrait
Definition ClauseT.h:437
E N
Definition ClauseT.h:443
std::true_type WrapperTrait
Definition ClauseT.h:444
N v
Definition ClauseT.h:445
std::true_type IncompleteTrait
Definition ClauseT.h:451
std::true_type EmptyTrait
Definition ClauseT.h:456
List v
Definition ClauseT.h:464
ListT< type::DirectiveName > List
Definition ClauseT.h:462
std::true_type WrapperTrait
Definition ClauseT.h:463
std::true_type WrapperTrait
Definition ClauseT.h:471
List v
Definition ClauseT.h:472
ObjectListT< I, E > List
Definition ClauseT.h:470
ObjectListT< I, E > List
Definition ClauseT.h:478
List v
Definition ClauseT.h:480
std::true_type WrapperTrait
Definition ClauseT.h:479
DataSharingAttribute v
Definition ClauseT.h:488
std::true_type WrapperTrait
Definition ClauseT.h:487
ENUM(DataSharingAttribute, Firstprivate, None, Private, Shared)
ENUM(ImplicitBehavior, Alloc, To, From, Tofrom, Firstprivate, None, Default, Present)
ENUM(VariableCategory, All, Scalar, Aggregate, Pointer, Allocatable)
std::tuple< ImplicitBehavior, OPT(VariableCategory)> t
Definition ClauseT.h:498
std::true_type TupleTrait
Definition ClauseT.h:497
std::true_type TupleTrait
Definition ClauseT.h:512
std::tuple< DependenceType, OPT(Iterator), LocatorList > t
Definition ClauseT.h:514
tomp::type::DependenceType DependenceType
Definition ClauseT.h:509
DoacrossT< T, I, E > Doacross
Definition ClauseT.h:517
std::true_type UnionTrait
Definition ClauseT.h:518
ObjectListT< I, E > LocatorList
Definition ClauseT.h:508
type::IteratorT< T, I, E > Iterator
Definition ClauseT.h:507
std::variant< Doacross, TaskDep > u
Definition ClauseT.h:519
std::true_type WrapperTrait
Definition ClauseT.h:526
ObjectT< I, E > DestroyVar
Definition ClauseT.h:525
ObjectT< I, E > EventHandle
Definition ClauseT.h:534
EventHandle v
Definition ClauseT.h:536
std::true_type WrapperTrait
Definition ClauseT.h:535
E Requires
Definition ClauseT.h:551
std::true_type WrapperTrait
Definition ClauseT.h:552
std::tuple< OPT(DeviceModifier), DeviceDescription > t
Definition ClauseT.h:545
std::true_type TupleTrait
Definition ClauseT.h:544
ENUM(DeviceModifier, Ancestor, DeviceNum)
E DeviceDescription
Definition ClauseT.h:542
DeviceTypeDescription v
Definition ClauseT.h:561
std::true_type WrapperTrait
Definition ClauseT.h:560
ENUM(DeviceTypeDescription, Any, Host, Nohost)
std::tuple< Kind, OPT(ChunkSize)> t
Definition ClauseT.h:570
E ChunkSize
Definition ClauseT.h:568
std::true_type TupleTrait
Definition ClauseT.h:569
std::true_type TupleTrait
Definition ClauseT.h:578
ListT< type::LoopIterationT< I, E > > Vector
Definition ClauseT.h:576
tomp::type::DependenceType DependenceType
Definition ClauseT.h:577
std::tuple< DependenceType, Vector > t
Definition ClauseT.h:580
ENUM(AccessGroup, Cgroup)
ENUM(Fallback, Abort, Default_Mem, Null)
E Size
Definition ClauseT.h:595
std::true_type TupleTrait
Definition ClauseT.h:596
std::tuple< OPT(AccessGroup), OPT(Fallback), Size > t
Definition ClauseT.h:597
E Requires
Definition ClauseT.h:586
std::true_type WrapperTrait
Definition ClauseT.h:587
std::true_type TupleTrait
Definition ClauseT.h:605
std::tuple< OPT(Modifier), List > t
Definition ClauseT.h:606
ObjectListT< I, E > List
Definition ClauseT.h:603
std::true_type WrapperTrait
Definition ClauseT.h:612
ObjectListT< I, E > List
Definition ClauseT.h:613
List v
Definition ClauseT.h:614
MemoryOrder v
Definition ClauseT.h:622
std::true_type WrapperTrait
Definition ClauseT.h:621
type::MemoryOrder MemoryOrder
Definition ClauseT.h:620
std::true_type WrapperTrait
Definition ClauseT.h:629
E ThreadNum
Definition ClauseT.h:628
ThreadNum v
Definition ClauseT.h:630
E Finalize
Definition ClauseT.h:636
Finalize v
Definition ClauseT.h:638
std::true_type WrapperTrait
Definition ClauseT.h:637
std::true_type WrapperTrait
Definition ClauseT.h:645
List v
Definition ClauseT.h:646
ObjectListT< I, E > List
Definition ClauseT.h:644
std::true_type TupleTrait
Definition ClauseT.h:658
type::IteratorT< T, I, E > Iterator
Definition ClauseT.h:654
std::tuple< OPT(Expectation), OPT(Mappers), OPT(Iterator), LocatorList > t
Definition ClauseT.h:659
ListT< type::MapperT< I, E > > Mappers
Definition ClauseT.h:656
type::MotionExpectation Expectation
Definition ClauseT.h:653
ObjectListT< I, E > LocatorList
Definition ClauseT.h:652
std::true_type EmptyTrait
Definition ClauseT.h:665
type::Prescriptiveness Prescriptiveness
Definition ClauseT.h:671
std::true_type TupleTrait
Definition ClauseT.h:673
E GrainSize
Definition ClauseT.h:672
std::tuple< OPT(Prescriptiveness), GrainSize > t
Definition ClauseT.h:674
std::true_type IncompleteTrait
Definition ClauseT.h:680
std::true_type IncompleteTrait
Definition ClauseT.h:686
List v
Definition ClauseT.h:694
ObjectListT< I, E > List
Definition ClauseT.h:692
std::true_type WrapperTrait
Definition ClauseT.h:693
E HintExpr
Definition ClauseT.h:700
HintExpr v
Definition ClauseT.h:702
std::true_type WrapperTrait
Definition ClauseT.h:701
std::true_type WrapperTrait
Definition ClauseT.h:708
E v
Definition ClauseT.h:709
std::tuple< OPT(DirectiveNameModifier), IfExpression > t
Definition ClauseT.h:718
E IfExpression
Definition ClauseT.h:716
std::true_type TupleTrait
Definition ClauseT.h:717
type::DirectiveName DirectiveNameModifier
Definition ClauseT.h:715
std::tuple< ReductionIdentifiers, List > t
Definition ClauseT.h:778
std::true_type TupleTrait
Definition ClauseT.h:777
ObjectListT< I, E > List
Definition ClauseT.h:773
ListT< type::ReductionIdentifierT< I, E > > ReductionIdentifiers
Definition ClauseT.h:776
std::true_type EmptyTrait
Definition ClauseT.h:724
std::true_type WrapperTrait
Definition ClauseT.h:731
List v
Definition ClauseT.h:732
ObjectListT< I, E > List
Definition ClauseT.h:730
E InvokedByFptr
Definition ClauseT.h:738
std::true_type WrapperTrait
Definition ClauseT.h:739
std::true_type IncompleteTrait
Definition ClauseT.h:746
ListT< ForeignRuntimeId > InteropPreference
Definition ClauseT.h:754
E ForeignRuntimeId
Definition ClauseT.h:752
ObjectT< I, E > InteropVar
Definition ClauseT.h:753
ListT< InteropType > InteropTypes
Definition ClauseT.h:756
std::tuple< OPT(InteropPreference), InteropTypes, InteropVar > t
Definition ClauseT.h:759
ENUM(InteropType, Target, Targetsync)
std::true_type TupleTrait
Definition ClauseT.h:758
InitializerExpr v
Definition ClauseT.h:767
std::true_type WrapperTrait
Definition ClauseT.h:766
E InitializerExpr
Definition ClauseT.h:765
List v
Definition ClauseT.h:786
ObjectListT< I, E > List
Definition ClauseT.h:784
std::true_type WrapperTrait
Definition ClauseT.h:785
std::tuple< OPT(LastprivateModifier), List > t
Definition ClauseT.h:795
ENUM(LastprivateModifier, Conditional)
std::true_type TupleTrait
Definition ClauseT.h:794
ObjectListT< I, E > List
Definition ClauseT.h:792
std::true_type TupleTrait
Definition ClauseT.h:807
ObjectListT< I, E > List
Definition ClauseT.h:802
std::tuple< OPT(StepComplexModifier), OPT(LinearModifier), List > t
Definition ClauseT.h:809
ENUM(LinearModifier, Ref, Val, Uval)
E StepComplexModifier
Definition ClauseT.h:804
std::true_type WrapperTrait
Definition ClauseT.h:816
List v
Definition ClauseT.h:817
ObjectListT< I, E > List
Definition ClauseT.h:815
Definition ClauseT.h:1310
std::tuple< Begin, End > t
Definition ClauseT.h:1315
std::true_type TupleTrait
Definition ClauseT.h:1314
E End
Definition ClauseT.h:1312
E Begin
Definition ClauseT.h:1311
ENUM(RefModifier, RefPtee, RefPtr, RefPtrPtee)
ListT< type::MapperT< I, E > > Mappers
Definition ClauseT.h:829
std::tuple< OPT(MapType), OPT(MapTypeModifiers), OPT(AttachModifier), OPT(RefModifier), OPT(Mappers), OPT(Iterator), LocatorList > t
Definition ClauseT.h:836
ObjectListT< I, E > LocatorList
Definition ClauseT.h:823
type::IteratorT< T, I, E > Iterator
Definition ClauseT.h:830
ENUM(MapTypeModifier, Always, Close, Delete, Present, Self, OmpxHold)
ListT< MapTypeModifier > MapTypeModifiers
Definition ClauseT.h:831
ENUM(MapType, To, From, Tofrom, Storage)
ENUM(AttachModifier, Always, Auto, Never)
std::true_type TupleTrait
Definition ClauseT.h:833
std::true_type IncompleteTrait
Definition ClauseT.h:842
std::true_type EmptyTrait
Definition ClauseT.h:848
MsgString v
Definition ClauseT.h:856
E MsgString
Definition ClauseT.h:854
std::true_type WrapperTrait
Definition ClauseT.h:855
std::true_type EmptyTrait
Definition ClauseT.h:896
std::true_type EmptyTrait
Definition ClauseT.h:890
std::true_type EmptyTrait
Definition ClauseT.h:884
std::true_type EmptyTrait
Definition ClauseT.h:902
std::true_type WrapperTrait
Definition ClauseT.h:863
DoNotUpdateContext v
Definition ClauseT.h:864
E DoNotUpdateContext
Definition ClauseT.h:862
std::true_type EmptyTrait
Definition ClauseT.h:870
ObjectListT< I, E > List
Definition ClauseT.h:876
std::true_type WrapperTrait
Definition ClauseT.h:877
List v
Definition ClauseT.h:878
std::true_type EmptyTrait
Definition ClauseT.h:908
E DoNotUseVariant
Definition ClauseT.h:914
std::true_type WrapperTrait
Definition ClauseT.h:915
DoNotUseVariant v
Definition ClauseT.h:916
std::true_type EmptyTrait
Definition ClauseT.h:922
std::tuple< OPT(Prescriptiveness), NumTasks > t
Definition ClauseT.h:931
E NumTasks
Definition ClauseT.h:929
type::Prescriptiveness Prescriptiveness
Definition ClauseT.h:928
std::true_type TupleTrait
Definition ClauseT.h:930
std::true_type TupleTrait
Definition ClauseT.h:942
std::tuple< OPT(LowerBound), UpperBound > t
Definition ClauseT.h:943
std::true_type WrapperTrait
Definition ClauseT.h:949
ListT< Range > List
Definition ClauseT.h:948
E LowerBound
Definition ClauseT.h:937
E UpperBound
Definition ClauseT.h:938
List v
Definition ClauseT.h:950
Nthreads v
Definition ClauseT.h:958
E Nthreads
Definition ClauseT.h:956
std::true_type WrapperTrait
Definition ClauseT.h:957
std::true_type EmptyTrait
Definition ClauseT.h:963
std::true_type EmptyTrait
Definition ClauseT.h:968
E v
Definition ClauseT.h:974
std::true_type WrapperTrait
Definition ClauseT.h:973
std::tuple< OPT(OrderModifier), Ordering > t
Definition ClauseT.h:983
ENUM(OrderModifier, Reproducible, Unconstrained)
std::true_type TupleTrait
Definition ClauseT.h:982
ENUM(Ordering, Concurrent)
std::true_type WrapperTrait
Definition ClauseT.h:990
E N
Definition ClauseT.h:989
std::true_type IncompleteTrait
Definition ClauseT.h:997
Definition ClauseT.h:1002
std::true_type WrapperTrait
Definition ClauseT.h:1004
E UnrollFactor
Definition ClauseT.h:1003
Definition ClauseT.h:1010
ArgList v
Definition ClauseT.h:1013
ListT< E > ArgList
Definition ClauseT.h:1011
std::true_type WrapperTrait
Definition ClauseT.h:1012
Definition ClauseT.h:1018
E PriorityValue
Definition ClauseT.h:1019
std::true_type WrapperTrait
Definition ClauseT.h:1020
PriorityValue v
Definition ClauseT.h:1021
Definition ClauseT.h:1026
List v
Definition ClauseT.h:1029
std::true_type WrapperTrait
Definition ClauseT.h:1028
ObjectListT< I, E > List
Definition ClauseT.h:1027
Definition ClauseT.h:1034
AffinityPolicy v
Definition ClauseT.h:1037
std::true_type WrapperTrait
Definition ClauseT.h:1036
ENUM(AffinityPolicy, Close, Master, Spread, Primary)
Definition ClauseT.h:1042
std::true_type EmptyTrait
Definition ClauseT.h:1043
Definition ClauseT.h:1048
std::true_type TupleTrait
Definition ClauseT.h:1054
std::tuple< OPT(ReductionModifier), ReductionIdentifiers, List > t
Definition ClauseT.h:1055
ENUM(ReductionModifier, Default, Inscan, Task)
ObjectListT< I, E > List
Definition ClauseT.h:1049
ListT< type::ReductionIdentifierT< I, E > > ReductionIdentifiers
Definition ClauseT.h:1052
Definition ClauseT.h:1060
std::true_type EmptyTrait
Definition ClauseT.h:1061
Definition ClauseT.h:1066
std::true_type EmptyTrait
Definition ClauseT.h:1067
Definition ClauseT.h:1072
std::true_type IncompleteTrait
Definition ClauseT.h:1073
Definition ClauseT.h:1078
std::true_type WrapperTrait
Definition ClauseT.h:1080
E Requires
Definition ClauseT.h:1079
Definition ClauseT.h:1086
E Length
Definition ClauseT.h:1087
std::true_type WrapperTrait
Definition ClauseT.h:1088
Length v
Definition ClauseT.h:1089
Definition ClauseT.h:1094
std::true_type TupleTrait
Definition ClauseT.h:1099
E ChunkSize
Definition ClauseT.h:1096
std::tuple< Kind, OPT(OrderingModifier), OPT(ChunkModifier), OPT(ChunkSize)> t
Definition ClauseT.h:1100
ENUM(OrderingModifier, Monotonic, Nonmonotonic)
ENUM(ChunkModifier, Simd)
ENUM(Kind, Static, Dynamic, Guided, Auto, Runtime)
Definition ClauseT.h:1105
E Requires
Definition ClauseT.h:1106
std::true_type WrapperTrait
Definition ClauseT.h:1107
Definition ClauseT.h:1113
std::true_type EmptyTrait
Definition ClauseT.h:1114
Definition ClauseT.h:1119
ENUM(SevLevel, Fatal, Warning)
SevLevel v
Definition ClauseT.h:1122
std::true_type WrapperTrait
Definition ClauseT.h:1121
Definition ClauseT.h:1135
std::true_type EmptyTrait
Definition ClauseT.h:1136
Definition ClauseT.h:1141
std::true_type WrapperTrait
Definition ClauseT.h:1143
Length v
Definition ClauseT.h:1144
E Length
Definition ClauseT.h:1142
Definition ClauseT.h:1149
ListT< E > SizeList
Definition ClauseT.h:1150
std::true_type WrapperTrait
Definition ClauseT.h:1151
SizeList v
Definition ClauseT.h:1152
Definition ClauseT.h:1157
ObjectListT< I, E > List
Definition ClauseT.h:1158
std::true_type TupleTrait
Definition ClauseT.h:1162
ListT< type::ReductionIdentifierT< I, E > > ReductionIdentifiers
Definition ClauseT.h:1161
std::tuple< ReductionIdentifiers, List > t
Definition ClauseT.h:1163
Definition ClauseT.h:1168
Threadlim v
Definition ClauseT.h:1171
E Threadlim
Definition ClauseT.h:1169
std::true_type WrapperTrait
Definition ClauseT.h:1170
Definition ClauseT.h:1176
std::true_type EmptyTrait
Definition ClauseT.h:1177
Definition ClauseT.h:1182
ThreadsetPolicy v
Definition ClauseT.h:1185
std::true_type WrapperTrait
Definition ClauseT.h:1184
ENUM(ThreadsetPolicy, Omp_Pool, Omp_Team)
Definition ClauseT.h:1190
std::true_type TupleTrait
Definition ClauseT.h:1197
type::MotionExpectation Expectation
Definition ClauseT.h:1192
std::tuple< OPT(Expectation), OPT(Mappers), OPT(Iterator), LocatorList > t
Definition ClauseT.h:1198
type::IteratorT< T, I, E > Iterator
Definition ClauseT.h:1195
ObjectListT< I, E > LocatorList
Definition ClauseT.h:1191
ListT< type::MapperT< I, E > > Mappers
Definition ClauseT.h:1194
Definition ClauseT.h:1203
std::true_type IncompleteTrait
Definition ClauseT.h:1204
Definition ClauseT.h:1209
E Requires
Definition ClauseT.h:1210
std::true_type WrapperTrait
Definition ClauseT.h:1211
Definition ClauseT.h:1225
std::true_type WrapperTrait
Definition ClauseT.h:1227
ParameterList v
Definition ClauseT.h:1228
ObjectListT< I, E > ParameterList
Definition ClauseT.h:1226
Definition ClauseT.h:1232
std::true_type EmptyTrait
Definition ClauseT.h:1233
Definition ClauseT.h:1238
std::true_type EmptyTrait
Definition ClauseT.h:1239
Definition ClauseT.h:1246
std::true_type WrapperTrait
Definition ClauseT.h:1248
tomp::type::DependenceType DependenceType
Definition ClauseT.h:1247
Definition ClauseT.h:1262
std::true_type WrapperTrait
Definition ClauseT.h:1264
List v
Definition ClauseT.h:1265
ObjectListT< I, E > List
Definition ClauseT.h:1263
Definition ClauseT.h:1270
ObjectListT< I, E > List
Definition ClauseT.h:1271
List v
Definition ClauseT.h:1273
std::true_type WrapperTrait
Definition ClauseT.h:1272
Definition ClauseT.h:1254
ObjectT< I, E > InteropVar
Definition ClauseT.h:1255
InteropVar v
Definition ClauseT.h:1257
std::true_type WrapperTrait
Definition ClauseT.h:1256
Definition ClauseT.h:1282
std::tuple< OPT(MemSpace), OPT(TraitsArray), Allocator > t
Definition ClauseT.h:1284
std::true_type TupleTrait
Definition ClauseT.h:1283
Definition ClauseT.h:1278
ListT< AllocatorSpec > Allocators
Definition ClauseT.h:1286
std::true_type WrapperTrait
Definition ClauseT.h:1287
E Allocator
Definition ClauseT.h:1281
ObjectT< I, E > TraitsArray
Definition ClauseT.h:1280
Allocators v
Definition ClauseT.h:1288
E MemSpace
Definition ClauseT.h:1279
Definition ClauseT.h:1293
std::true_type EmptyTrait
Definition ClauseT.h:1294
Definition ClauseT.h:1299
std::true_type IncompleteTrait
Definition ClauseT.h:1300
Definition ClauseT.h:1305
std::true_type EmptyTrait
Definition ClauseT.h:1306
std::true_type WrapperTrait
Definition ClauseT.h:195
ObjectT< I, E > v
Definition ClauseT.h:196
std::true_type UnionTrait
Definition ClauseT.h:200
std::variant< DefinedOpName, IntrinsicOperator > u
Definition ClauseT.h:201
ENUM(IntrinsicOperator, Power, Multiply, Divide, Add, Subtract, Concat, LT, LE, EQ, NE, GE, GT, NOT, AND, OR, EQV, NEQV, Min, Max)
std::true_type TupleTrait
Definition ClauseT.h:216
std::tuple< OPT(TypeType), ObjectT< IdType, ExprType >, RangeT< ExprType > > t
Definition ClauseT.h:217
std::tuple< DefinedOperatorT< I, E >, E > t
Definition ClauseT.h:250
std::true_type TupleTrait
Definition ClauseT.h:249
std::tuple< ObjectT< I, E >, OPT(Distance)> t
Definition ClauseT.h:253
std::true_type TupleTrait
Definition ClauseT.h:252
MapperIdentifier v
Definition ClauseT.h:233
ObjectT< I, E > MapperIdentifier
Definition ClauseT.h:231
std::true_type WrapperTrait
Definition ClauseT.h:232
ObjectT< I, E > v
Definition ClauseT.h:259
std::true_type WrapperTrait
Definition ClauseT.h:258
std::true_type TupleTrait
Definition ClauseT.h:208
std::tuple< E, E, OPT(E)> t
Definition ClauseT.h:209
std::true_type UnionTrait
Definition ClauseT.h:271
std::variant< DefinedOperatorT< I, E >, ProcedureDesignatorT< I, E > > u
Definition ClauseT.h:272
typename detail::UnionOfTwo< T, typename Union< Ts... >::type >::type type
Definition ClauseT.h:146
std::variant<> type
Definition ClauseT.h:141