MLIR  19.0.0git
OpenMPClauseOperands.h
Go to the documentation of this file.
1 //===-- OpenMPClauseOperands.h ----------------------------------*- 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 //
9 // This file declares the structures defining MLIR operands associated with each
10 // OpenMP clause, and structures grouping the appropriate operands for each
11 // construct.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef MLIR_DIALECT_OPENMP_OPENMPCLAUSEOPERANDS_H_
16 #define MLIR_DIALECT_OPENMP_OPENMPCLAUSEOPERANDS_H_
17 
19 #include "llvm/ADT/SmallVector.h"
20 
21 #include "mlir/Dialect/OpenMP/OpenMPOpsEnums.h.inc"
22 
23 #define GET_ATTRDEF_CLASSES
24 #include "mlir/Dialect/OpenMP/OpenMPOpsAttributes.h.inc"
25 
26 namespace mlir {
27 namespace omp {
28 
29 //===----------------------------------------------------------------------===//
30 // Mixin structures defining MLIR operands associated with each OpenMP clause.
31 //===----------------------------------------------------------------------===//
32 
36 };
37 
40 };
41 
44 };
45 
49 };
50 
54 };
55 
58 };
59 
61  // The default capture type.
62  DeclareTargetDeviceType deviceType = DeclareTargetDeviceType::any;
63 };
64 
68 };
69 
72  ClauseDependAttr doacrossDependTypeAttr;
73  IntegerAttr doacrossNumLoopsAttr;
74 };
75 
78 };
79 
82 };
83 
86 };
87 struct HintClauseOps {
88  IntegerAttr hintAttr;
89 };
90 
91 struct IfClauseOps {
93 };
94 
98 };
99 
102 };
103 
106 };
107 
110 };
111 
112 struct MapClauseOps {
114 };
115 
117  UnitAttr mergeableAttr;
118 };
119 
121  StringAttr nameAttr;
122 };
123 
125  UnitAttr nogroupAttr;
126 };
127 
130 };
131 
133  UnitAttr nowaitAttr;
134 };
135 
138 };
139 
142 };
143 
146 };
147 
149  ClauseOrderKindAttr orderAttr;
150 };
151 
153  IntegerAttr orderedAttr;
154 };
155 
158 };
159 
162 };
163 
165  // SSA values that correspond to "original" values being privatized.
166  // They refer to the SSA value outside the OpenMP region from which a clone is
167  // created inside the region.
169  // The list of symbols referring to delayed privatizer ops (i.e. `omp.private`
170  // ops).
172 };
173 
175  ClauseProcBindKindAttr procBindKindAttr;
176 };
177 
182 };
183 
185  IntegerAttr safelenAttr;
186 };
187 
189  ClauseScheduleKindAttr scheduleValAttr;
190  ScheduleModifierAttr scheduleModAttr;
193 };
194 
196  IntegerAttr simdlenAttr;
197 };
198 
202 };
203 
206 };
207 
209  UnitAttr untiedAttr;
210 };
211 
214 };
215 
216 //===----------------------------------------------------------------------===//
217 // Structures defining clause operands associated with each OpenMP leaf
218 // construct.
219 //
220 // These mirror the arguments expected by the corresponding OpenMP MLIR ops.
221 //===----------------------------------------------------------------------===//
222 
223 namespace detail {
224 template <typename... Mixins>
225 struct Clauses : public Mixins... {};
226 } // namespace detail
227 
229 
230 // TODO `indirect` clause.
232 
236 
238 
239 // TODO `filter` clause.
241 
243 
245 
249 
252 
253 // TODO `linear` clause.
258 
261 
262 // TODO `defaultmap`, `uses_allocators` clauses.
268 
271 
275 
276 // TODO `affinity`, `detach` clauses.
281 
284 
290 
292 
296 
301 
302 } // namespace omp
303 } // namespace mlir
304 
305 #endif // MLIR_DIALECT_OPENMP_OPENMPCLAUSEOPERANDS_H_
This class represents an instance of an SSA value in the MLIR system, representing a computable value...
Definition: Value.h:96
Include the generated interface declarations.
llvm::SmallVector< Attribute > alignmentAttrs
llvm::SmallVector< Value > alignedVars
llvm::SmallVector< Value > allocateVars
llvm::SmallVector< Value > allocatorVars
llvm::SmallVector< Value > loopLBVar
llvm::SmallVector< Value > loopUBVar
llvm::SmallVector< Value > loopStepVar
llvm::SmallVector< Attribute > copyprivateFuncs
llvm::SmallVector< Value > copyprivateVars
llvm::SmallVector< Value > dependVars
llvm::SmallVector< Attribute > dependTypeAttrs
DeclareTargetDeviceType deviceType
llvm::SmallVector< Value > doacrossVectorVars
llvm::SmallVector< Value > hasDeviceAddrVars
llvm::SmallVector< Attribute > inReductionDeclSymbols
llvm::SmallVector< Value > inReductionVars
llvm::SmallVector< Value > isDevicePtrVars
llvm::SmallVector< Value > linearStepVars
llvm::SmallVector< Value > linearVars
llvm::SmallVector< Value > mapVars
llvm::SmallVector< Value > nontemporalVars
llvm::SmallVector< Attribute > privatizers
llvm::SmallVector< Value > privateVars
ClauseProcBindKindAttr procBindKindAttr
llvm::SmallVector< Value > reductionVars
llvm::SmallVector< Attribute > reductionDeclSymbols
ScheduleModifierAttr scheduleModAttr
ClauseScheduleKindAttr scheduleValAttr
llvm::SmallVector< Attribute > taskReductionDeclSymbols
llvm::SmallVector< Value > taskReductionVars
llvm::SmallVector< Value > useDevicePtrVars
llvm::SmallVector< Value > useDeviceAddrVars