clang 23.0.0git
CIRGenStmtOpenMP.cpp
Go to the documentation of this file.
1//===----------------------------------------------------------------------===//
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// Emit OpenMP Stmt nodes as CIR code.
10//
11//===----------------------------------------------------------------------===//
12
13#include "CIRGenBuilder.h"
14#include "CIRGenFunction.h"
15#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
17#include "llvm/Frontend/OpenMP/OMPConstants.h"
18using namespace clang;
19using namespace clang::CIRGen;
20
21mlir::LogicalResult
22CIRGenFunction::emitOMPScopeDirective(const OMPScopeDirective &s) {
23 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPScopeDirective");
24 return mlir::failure();
25}
26mlir::LogicalResult
28 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPErrorDirective");
29 return mlir::failure();
30}
31mlir::LogicalResult
32CIRGenFunction::emitOMPParallelDirective(const OMPParallelDirective &s) {
33 mlir::LogicalResult res = mlir::success();
36 mlir::Location begin = getLoc(s.getBeginLoc());
37 mlir::Location end = getLoc(s.getEndLoc());
38
39 auto parallelOp =
40 mlir::omp::ParallelOp::create(builder, begin, retTy, operands);
41 emitOpenMPClauses(parallelOp, s.clauses());
42
43 {
44 mlir::Block &block = parallelOp.getRegion().emplaceBlock();
45 mlir::OpBuilder::InsertionGuard guardCase(builder);
46 builder.setInsertionPointToEnd(&block);
47
48 LexicalScope ls{*this, begin, builder.getInsertionBlock()};
49
50 if (s.hasCancel())
51 getCIRGenModule().errorNYI(s.getBeginLoc(),
52 "OpenMP Parallel with Cancel");
53 if (s.getTaskReductionRefExpr())
54 getCIRGenModule().errorNYI(s.getBeginLoc(),
55 "OpenMP Parallel with Task Reduction");
56 // Don't lower the captured statement directly since this will be
57 // special-cased depending on the kind of OpenMP directive that is the
58 // parent, also the non-OpenMP context captured statements lowering does
59 // not apply directly.
60 const CapturedStmt *cs = s.getCapturedStmt(llvm::omp::OMPD_parallel);
61 const Stmt *bodyStmt = cs->getCapturedStmt();
62 res = emitStmt(bodyStmt, /*useCurrentScope=*/true);
63 mlir::omp::TerminatorOp::create(builder, end);
64 }
65 return res;
66}
67
68mlir::LogicalResult
69CIRGenFunction::emitOMPTaskwaitDirective(const OMPTaskwaitDirective &s) {
70 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTaskwaitDirective");
71 return mlir::failure();
72}
73mlir::LogicalResult
74CIRGenFunction::emitOMPTaskyieldDirective(const OMPTaskyieldDirective &s) {
75 getCIRGenModule().errorNYI(s.getSourceRange(),
76 "OpenMP OMPTaskyieldDirective");
77 return mlir::failure();
78}
79mlir::LogicalResult
80CIRGenFunction::emitOMPBarrierDirective(const OMPBarrierDirective &s) {
81 mlir::omp::BarrierOp::create(builder, getLoc(s.getBeginLoc()));
82 assert(s.clauses().empty() && "omp barrier doesn't support clauses");
83 return mlir::success();
84}
85mlir::LogicalResult
87 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPMetaDirective");
88 return mlir::failure();
89}
90mlir::LogicalResult
91CIRGenFunction::emitOMPCanonicalLoop(const OMPCanonicalLoop &s) {
92 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPCanonicalLoop");
93 return mlir::failure();
94}
95mlir::LogicalResult
96CIRGenFunction::emitOMPSimdDirective(const OMPSimdDirective &s) {
97 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPSimdDirective");
98 return mlir::failure();
99}
100mlir::LogicalResult
102 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTileDirective");
103 return mlir::failure();
104}
105mlir::LogicalResult
107 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPUnrollDirective");
108 return mlir::failure();
109}
110mlir::LogicalResult
112 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPFuseDirective");
113 return mlir::failure();
114}
115mlir::LogicalResult
116CIRGenFunction::emitOMPForDirective(const OMPForDirective &s) {
117 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPForDirective");
118 return mlir::failure();
119}
120mlir::LogicalResult
121CIRGenFunction::emitOMPForSimdDirective(const OMPForSimdDirective &s) {
122 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPForSimdDirective");
123 return mlir::failure();
124}
125mlir::LogicalResult
126CIRGenFunction::emitOMPSectionsDirective(const OMPSectionsDirective &s) {
127 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPSectionsDirective");
128 return mlir::failure();
129}
130mlir::LogicalResult
131CIRGenFunction::emitOMPSectionDirective(const OMPSectionDirective &s) {
132 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPSectionDirective");
133 return mlir::failure();
134}
135mlir::LogicalResult
136CIRGenFunction::emitOMPSingleDirective(const OMPSingleDirective &s) {
137 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPSingleDirective");
138 return mlir::failure();
139}
140mlir::LogicalResult
141CIRGenFunction::emitOMPMasterDirective(const OMPMasterDirective &s) {
142 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPMasterDirective");
143 return mlir::failure();
144}
145mlir::LogicalResult
146CIRGenFunction::emitOMPCriticalDirective(const OMPCriticalDirective &s) {
147 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPCriticalDirective");
148 return mlir::failure();
149}
150mlir::LogicalResult
151CIRGenFunction::emitOMPParallelForDirective(const OMPParallelForDirective &s) {
152 getCIRGenModule().errorNYI(s.getSourceRange(),
153 "OpenMP OMPParallelForDirective");
154 return mlir::failure();
155}
157 const OMPParallelForSimdDirective &s) {
158 getCIRGenModule().errorNYI(s.getSourceRange(),
159 "OpenMP OMPParallelForSimdDirective");
160 return mlir::failure();
161}
163 const OMPParallelMasterDirective &s) {
164 getCIRGenModule().errorNYI(s.getSourceRange(),
165 "OpenMP OMPParallelMasterDirective");
166 return mlir::failure();
167}
169 const OMPParallelSectionsDirective &s) {
170 getCIRGenModule().errorNYI(s.getSourceRange(),
171 "OpenMP OMPParallelSectionsDirective");
172 return mlir::failure();
173}
174mlir::LogicalResult
175CIRGenFunction::emitOMPTaskDirective(const OMPTaskDirective &s) {
176 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTaskDirective");
177 return mlir::failure();
178}
179mlir::LogicalResult
180CIRGenFunction::emitOMPTaskgroupDirective(const OMPTaskgroupDirective &s) {
181 getCIRGenModule().errorNYI(s.getSourceRange(),
182 "OpenMP OMPTaskgroupDirective");
183 return mlir::failure();
184}
185mlir::LogicalResult
186CIRGenFunction::emitOMPFlushDirective(const OMPFlushDirective &s) {
187 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPFlushDirective");
188 return mlir::failure();
189}
190mlir::LogicalResult
191CIRGenFunction::emitOMPDepobjDirective(const OMPDepobjDirective &s) {
192 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPDepobjDirective");
193 return mlir::failure();
194}
195mlir::LogicalResult
197 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPScanDirective");
198 return mlir::failure();
199}
200mlir::LogicalResult
201CIRGenFunction::emitOMPOrderedDirective(const OMPOrderedDirective &s) {
202 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPOrderedDirective");
203 return mlir::failure();
204}
205mlir::LogicalResult
206CIRGenFunction::emitOMPAtomicDirective(const OMPAtomicDirective &s) {
207 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPAtomicDirective");
208 return mlir::failure();
209}
210mlir::LogicalResult
212 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTargetDirective");
213 return mlir::failure();
214}
215mlir::LogicalResult
217 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTeamsDirective");
218 return mlir::failure();
219}
222 getCIRGenModule().errorNYI(s.getSourceRange(),
223 "OpenMP OMPCancellationPointDirective");
224 return mlir::failure();
225}
226mlir::LogicalResult
228 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPCancelDirective");
229 return mlir::failure();
230}
231mlir::LogicalResult
233 getCIRGenModule().errorNYI(s.getSourceRange(),
234 "OpenMP OMPTargetDataDirective");
235 return mlir::failure();
236}
239 getCIRGenModule().errorNYI(s.getSourceRange(),
240 "OpenMP OMPTargetEnterDataDirective");
241 return mlir::failure();
242}
245 getCIRGenModule().errorNYI(s.getSourceRange(),
246 "OpenMP OMPTargetExitDataDirective");
247 return mlir::failure();
248}
251 getCIRGenModule().errorNYI(s.getSourceRange(),
252 "OpenMP OMPTargetParallelDirective");
253 return mlir::failure();
254}
257 getCIRGenModule().errorNYI(s.getSourceRange(),
258 "OpenMP OMPTargetParallelForDirective");
259 return mlir::failure();
260}
261mlir::LogicalResult
263 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTaskLoopDirective");
264 return mlir::failure();
265}
268 getCIRGenModule().errorNYI(s.getSourceRange(),
269 "OpenMP OMPTaskLoopSimdDirective");
270 return mlir::failure();
271}
274 getCIRGenModule().errorNYI(s.getSourceRange(),
275 "OpenMP OMPMaskedTaskLoopDirective");
276 return mlir::failure();
277}
280 getCIRGenModule().errorNYI(s.getSourceRange(),
281 "OpenMP OMPMaskedTaskLoopSimdDirective");
282 return mlir::failure();
283}
286 getCIRGenModule().errorNYI(s.getSourceRange(),
287 "OpenMP OMPMasterTaskLoopDirective");
288 return mlir::failure();
289}
292 getCIRGenModule().errorNYI(s.getSourceRange(),
293 "OpenMP OMPMasterTaskLoopSimdDirective");
294 return mlir::failure();
295}
298 getCIRGenModule().errorNYI(s.getSourceRange(),
299 "OpenMP OMPParallelGenericLoopDirective");
300 return mlir::failure();
301}
303 const OMPParallelMaskedDirective &s) {
304 getCIRGenModule().errorNYI(s.getSourceRange(),
305 "OpenMP OMPParallelMaskedDirective");
306 return mlir::failure();
307}
310 getCIRGenModule().errorNYI(s.getSourceRange(),
311 "OpenMP OMPParallelMaskedTaskLoopDirective");
312 return mlir::failure();
313}
316 getCIRGenModule().errorNYI(s.getSourceRange(),
317 "OpenMP OMPParallelMaskedTaskLoopSimdDirective");
318 return mlir::failure();
319}
322 getCIRGenModule().errorNYI(s.getSourceRange(),
323 "OpenMP OMPParallelMasterTaskLoopDirective");
324 return mlir::failure();
325}
328 getCIRGenModule().errorNYI(s.getSourceRange(),
329 "OpenMP OMPParallelMasterTaskLoopSimdDirective");
330 return mlir::failure();
331}
332mlir::LogicalResult
334 getCIRGenModule().errorNYI(s.getSourceRange(),
335 "OpenMP OMPDistributeDirective");
336 return mlir::failure();
337}
340 getCIRGenModule().errorNYI(s.getSourceRange(),
341 "OpenMP OMPDistributeParallelForDirective");
342 return mlir::failure();
343}
346 getCIRGenModule().errorNYI(s.getSourceRange(),
347 "OpenMP OMPDistributeParallelForSimdDirective");
348 return mlir::failure();
349}
352 getCIRGenModule().errorNYI(s.getSourceRange(),
353 "OpenMP OMPDistributeSimdDirective");
354 return mlir::failure();
355}
358 getCIRGenModule().errorNYI(s.getSourceRange(),
359 "OpenMP OMPTargetParallelGenericLoopDirective");
360 return mlir::failure();
361}
364 getCIRGenModule().errorNYI(s.getSourceRange(),
365 "OpenMP OMPTargetParallelForSimdDirective");
366 return mlir::failure();
367}
368mlir::LogicalResult
370 getCIRGenModule().errorNYI(s.getSourceRange(),
371 "OpenMP OMPTargetSimdDirective");
372 return mlir::failure();
373}
376 getCIRGenModule().errorNYI(s.getSourceRange(),
377 "OpenMP OMPTargetTeamsGenericLoopDirective");
378 return mlir::failure();
379}
382 getCIRGenModule().errorNYI(s.getSourceRange(),
383 "OpenMP OMPTargetUpdateDirective");
384 return mlir::failure();
385}
388 getCIRGenModule().errorNYI(s.getSourceRange(),
389 "OpenMP OMPTeamsDistributeDirective");
390 return mlir::failure();
391}
394 getCIRGenModule().errorNYI(s.getSourceRange(),
395 "OpenMP OMPTeamsDistributeSimdDirective");
396 return mlir::failure();
397}
398mlir::LogicalResult
402 s.getSourceRange(), "OpenMP OMPTeamsDistributeParallelForSimdDirective");
403 return mlir::failure();
404}
407 getCIRGenModule().errorNYI(s.getSourceRange(),
408 "OpenMP OMPTeamsDistributeParallelForDirective");
409 return mlir::failure();
410}
413 getCIRGenModule().errorNYI(s.getSourceRange(),
414 "OpenMP OMPTeamsGenericLoopDirective");
415 return mlir::failure();
416}
417mlir::LogicalResult
419 getCIRGenModule().errorNYI(s.getSourceRange(),
420 "OpenMP OMPTargetTeamsDirective");
421 return mlir::failure();
422}
425 getCIRGenModule().errorNYI(s.getSourceRange(),
426 "OpenMP OMPTargetTeamsDistributeDirective");
427 return mlir::failure();
428}
429mlir::LogicalResult
433 s.getSourceRange(),
434 "OpenMP OMPTargetTeamsDistributeParallelForDirective");
435 return mlir::failure();
436}
437mlir::LogicalResult
441 s.getSourceRange(),
442 "OpenMP OMPTargetTeamsDistributeParallelForSimdDirective");
443 return mlir::failure();
444}
447 getCIRGenModule().errorNYI(s.getSourceRange(),
448 "OpenMP OMPTargetTeamsDistributeSimdDirective");
449 return mlir::failure();
450}
451mlir::LogicalResult
453 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPInteropDirective");
454 return mlir::failure();
455}
456mlir::LogicalResult
458 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPDispatchDirective");
459 return mlir::failure();
460}
461mlir::LogicalResult
463 getCIRGenModule().errorNYI(s.getSourceRange(),
464 "OpenMP OMPGenericLoopDirective");
465 return mlir::failure();
466}
467mlir::LogicalResult
469 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPReverseDirective");
470 return mlir::failure();
471}
472mlir::LogicalResult
474 getCIRGenModule().errorNYI(s.getSourceRange(),
475 "OpenMP OMPInterchangeDirective");
476 return mlir::failure();
477}
478mlir::LogicalResult
480 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPAssumeDirective");
481 return mlir::failure();
482}
483mlir::LogicalResult
485 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPMaskedDirective");
486 return mlir::failure();
487}
488mlir::LogicalResult
490 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPStripeDirective");
491 return mlir::failure();
492}
This file defines OpenMP AST classes for executable directives and clauses.
__device__ __2f16 float __ockl_bool s
This represents 'pragma omp cancel' directive.
This represents 'pragma omp cancellation point' directive.
This represents 'pragma omp dispatch' directive.
This represents 'pragma omp distribute' directive.
This represents 'pragma omp distribute parallel for' composite directive.
This represents 'pragma omp distribute parallel for simd' composite directive.
This represents 'pragma omp distribute simd' composite directive.
This represents 'pragma omp error' directive.
Represents the 'pragma omp fuse' loop transformation directive.
This represents 'pragma omp loop' directive.
Represents the 'pragma omp interchange' loop transformation directive.
This represents 'pragma omp interop' directive.
This represents 'pragma omp masked' directive.
This represents 'pragma omp masked taskloop' directive.
This represents 'pragma omp masked taskloop simd' directive.
This represents 'pragma omp master taskloop' directive.
This represents 'pragma omp master taskloop simd' directive.
This represents 'pragma omp metadirective' directive.
This represents 'pragma omp parallel loop' directive.
This represents 'pragma omp parallel masked taskloop' directive.
This represents 'pragma omp parallel masked taskloop simd' directive.
This represents 'pragma omp parallel master taskloop' directive.
This represents 'pragma omp parallel master taskloop simd' directive.
Represents the 'pragma omp reverse' loop transformation directive.
This represents 'pragma omp scan' directive.
This represents the 'pragma omp stripe' loop transformation directive.
This represents 'pragma omp target data' directive.
This represents 'pragma omp target' directive.
This represents 'pragma omp target enter data' directive.
This represents 'pragma omp target exit data' directive.
This represents 'pragma omp target parallel' directive.
This represents 'pragma omp target parallel for' directive.
This represents 'pragma omp target parallel for simd' directive.
This represents 'pragma omp target parallel loop' directive.
This represents 'pragma omp target simd' directive.
This represents 'pragma omp target teams' directive.
This represents 'pragma omp target teams distribute' combined directive.
This represents 'pragma omp target teams distribute parallel for' combined directive.
This represents 'pragma omp target teams distribute parallel for simd' combined directive.
This represents 'pragma omp target teams distribute simd' combined directive.
This represents 'pragma omp target teams loop' directive.
This represents 'pragma omp target update' directive.
This represents 'pragma omp taskloop' directive.
This represents 'pragma omp taskloop simd' directive.
This represents 'pragma omp teams' directive.
This represents 'pragma omp teams distribute' directive.
This represents 'pragma omp teams distribute parallel for' composite directive.
This represents 'pragma omp teams distribute parallel for simd' composite directive.
This represents 'pragma omp teams distribute simd' combined directive.
This represents 'pragma omp teams loop' directive.
This represents the 'pragma omp tile' loop transformation directive.
This represents the 'pragma omp unroll' loop transformation directive.
mlir::LogicalResult emitOMPTargetParallelForDirective(const OMPTargetParallelForDirective &s)
mlir::LogicalResult emitOMPParallelMasterTaskLoopSimdDirective(const OMPParallelMasterTaskLoopSimdDirective &s)
mlir::LogicalResult emitOMPSimdDirective(const OMPSimdDirective &s)
mlir::LogicalResult emitOMPCriticalDirective(const OMPCriticalDirective &s)
mlir::LogicalResult emitOMPParallelMasterDirective(const OMPParallelMasterDirective &s)
mlir::LogicalResult emitOMPCancellationPointDirective(const OMPCancellationPointDirective &s)
mlir::LogicalResult emitOMPParallelMaskedTaskLoopDirective(const OMPParallelMaskedTaskLoopDirective &s)
mlir::LogicalResult emitOMPReverseDirective(const OMPReverseDirective &s)
mlir::LogicalResult emitOMPTileDirective(const OMPTileDirective &s)
mlir::LogicalResult emitOMPTargetTeamsDirective(const OMPTargetTeamsDirective &s)
mlir::LogicalResult emitOMPTeamsDistributeParallelForDirective(const OMPTeamsDistributeParallelForDirective &s)
mlir::LogicalResult emitOMPBarrierDirective(const OMPBarrierDirective &s)
mlir::LogicalResult emitOMPTargetParallelDirective(const OMPTargetParallelDirective &s)
mlir::LogicalResult emitOMPTargetDirective(const OMPTargetDirective &s)
mlir::LogicalResult emitOMPScopeDirective(const OMPScopeDirective &s)
mlir::Location getLoc(clang::SourceLocation srcLoc)
Helpers to convert Clang's SourceLocation to a MLIR Location.
mlir::LogicalResult emitOMPDepobjDirective(const OMPDepobjDirective &s)
mlir::LogicalResult emitOMPDistributeParallelForSimdDirective(const OMPDistributeParallelForSimdDirective &s)
mlir::LogicalResult emitOMPUnrollDirective(const OMPUnrollDirective &s)
mlir::LogicalResult emitOMPTaskDirective(const OMPTaskDirective &s)
mlir::LogicalResult emitOMPTeamsGenericLoopDirective(const OMPTeamsGenericLoopDirective &s)
mlir::LogicalResult emitOMPCanonicalLoop(const OMPCanonicalLoop &s)
mlir::LogicalResult emitOMPTeamsDirective(const OMPTeamsDirective &s)
mlir::LogicalResult emitOMPMaskedTaskLoopDirective(const OMPMaskedTaskLoopDirective &s)
mlir::LogicalResult emitOMPFuseDirective(const OMPFuseDirective &s)
mlir::LogicalResult emitOMPSectionDirective(const OMPSectionDirective &s)
mlir::LogicalResult emitOMPParallelForSimdDirective(const OMPParallelForSimdDirective &s)
mlir::LogicalResult emitOMPDistributeParallelForDirective(const OMPDistributeParallelForDirective &s)
mlir::LogicalResult emitOMPMasterTaskLoopSimdDirective(const OMPMasterTaskLoopSimdDirective &s)
mlir::LogicalResult emitOMPTaskwaitDirective(const OMPTaskwaitDirective &s)
mlir::LogicalResult emitOMPFlushDirective(const OMPFlushDirective &s)
mlir::LogicalResult emitOMPGenericLoopDirective(const OMPGenericLoopDirective &s)
mlir::LogicalResult emitOMPTargetUpdateDirective(const OMPTargetUpdateDirective &s)
mlir::LogicalResult emitOMPOrderedDirective(const OMPOrderedDirective &s)
mlir::LogicalResult emitOMPTargetParallelForSimdDirective(const OMPTargetParallelForSimdDirective &s)
mlir::LogicalResult emitOMPInterchangeDirective(const OMPInterchangeDirective &s)
mlir::LogicalResult emitOMPDispatchDirective(const OMPDispatchDirective &s)
mlir::LogicalResult emitOMPParallelDirective(const OMPParallelDirective &s)
mlir::LogicalResult emitOMPForSimdDirective(const OMPForSimdDirective &s)
mlir::LogicalResult emitOMPTaskLoopDirective(const OMPTaskLoopDirective &s)
mlir::LogicalResult emitOMPTargetDataDirective(const OMPTargetDataDirective &s)
mlir::LogicalResult emitOMPTargetParallelGenericLoopDirective(const OMPTargetParallelGenericLoopDirective &s)
mlir::LogicalResult emitOMPParallelMaskedDirective(const OMPParallelMaskedDirective &s)
mlir::LogicalResult emitOMPMaskedTaskLoopSimdDirective(const OMPMaskedTaskLoopSimdDirective &s)
mlir::LogicalResult emitOMPAtomicDirective(const OMPAtomicDirective &s)
mlir::LogicalResult emitOMPTeamsDistributeParallelForSimdDirective(const OMPTeamsDistributeParallelForSimdDirective &s)
mlir::LogicalResult emitOMPTaskgroupDirective(const OMPTaskgroupDirective &s)
mlir::LogicalResult emitOMPParallelMaskedTaskLoopSimdDirective(const OMPParallelMaskedTaskLoopSimdDirective &s)
mlir::LogicalResult emitOMPTeamsDistributeDirective(const OMPTeamsDistributeDirective &s)
mlir::LogicalResult emitOMPInteropDirective(const OMPInteropDirective &s)
mlir::LogicalResult emitOMPErrorDirective(const OMPErrorDirective &s)
mlir::LogicalResult emitOMPSingleDirective(const OMPSingleDirective &s)
mlir::LogicalResult emitOMPTaskyieldDirective(const OMPTaskyieldDirective &s)
mlir::LogicalResult emitOMPTargetTeamsDistributeSimdDirective(const OMPTargetTeamsDistributeSimdDirective &s)
mlir::LogicalResult emitOMPScanDirective(const OMPScanDirective &s)
mlir::LogicalResult emitOMPTargetEnterDataDirective(const OMPTargetEnterDataDirective &s)
mlir::LogicalResult emitOMPMasterTaskLoopDirective(const OMPMasterTaskLoopDirective &s)
mlir::LogicalResult emitOMPForDirective(const OMPForDirective &s)
mlir::LogicalResult emitOMPMasterDirective(const OMPMasterDirective &s)
mlir::LogicalResult emitOMPMetaDirective(const OMPMetaDirective &s)
mlir::LogicalResult emitOMPDistributeSimdDirective(const OMPDistributeSimdDirective &s)
mlir::LogicalResult emitOMPParallelGenericLoopDirective(const OMPParallelGenericLoopDirective &s)
mlir::LogicalResult emitOMPMaskedDirective(const OMPMaskedDirective &s)
mlir::LogicalResult emitOMPTargetExitDataDirective(const OMPTargetExitDataDirective &s)
mlir::LogicalResult emitOMPTargetTeamsDistributeParallelForDirective(const OMPTargetTeamsDistributeParallelForDirective &s)
mlir::LogicalResult emitOMPParallelForDirective(const OMPParallelForDirective &s)
mlir::LogicalResult emitOMPSectionsDirective(const OMPSectionsDirective &s)
mlir::LogicalResult emitOMPDistributeDirective(const OMPDistributeDirective &s)
mlir::LogicalResult emitOMPTargetTeamsDistributeParallelForSimdDirective(const OMPTargetTeamsDistributeParallelForSimdDirective &s)
mlir::LogicalResult emitOMPTargetTeamsGenericLoopDirective(const OMPTargetTeamsGenericLoopDirective &s)
mlir::LogicalResult emitOMPTeamsDistributeSimdDirective(const OMPTeamsDistributeSimdDirective &s)
mlir::LogicalResult emitOMPTaskLoopSimdDirective(const OMPTaskLoopSimdDirective &s)
mlir::LogicalResult emitOMPParallelMasterTaskLoopDirective(const OMPParallelMasterTaskLoopDirective &s)
mlir::LogicalResult emitStmt(const clang::Stmt *s, bool useCurrentScope, llvm::ArrayRef< const Attr * > attrs={})
mlir::LogicalResult emitOMPCancelDirective(const OMPCancelDirective &s)
mlir::LogicalResult emitOMPStripeDirective(const OMPStripeDirective &s)
mlir::LogicalResult emitOMPTargetTeamsDistributeDirective(const OMPTargetTeamsDistributeDirective &s)
mlir::LogicalResult emitOMPParallelSectionsDirective(const OMPParallelSectionsDirective &s)
mlir::LogicalResult emitOMPTargetSimdDirective(const OMPTargetSimdDirective &s)
mlir::LogicalResult emitOMPAssumeDirective(const OMPAssumeDirective &s)
DiagnosticBuilder errorNYI(SourceLocation, llvm::StringRef)
Helpers to emit "not yet implemented" error diagnostics.
This captures a statement into a function.
Definition Stmt.h:3929
Stmt * getCapturedStmt()
Retrieve the statement being captured.
Definition Stmt.h:4033
Stmt - This represents one statement.
Definition Stmt.h:86
The JSON file list parser is used to communicate input to InstallAPI.
Represents a scope, including function bodies, compound statements, and the substatements of if/while...