clang 22.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
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
57 res = emitStmt(s.getAssociatedStmt(), /*useCurrentScope=*/true);
58
59 mlir::omp::TerminatorOp::create(builder, end);
60 }
61 return res;
62}
63
64mlir::LogicalResult
65CIRGenFunction::emitOMPTaskwaitDirective(const OMPTaskwaitDirective &s) {
66 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTaskwaitDirective");
67 return mlir::failure();
68}
69mlir::LogicalResult
70CIRGenFunction::emitOMPTaskyieldDirective(const OMPTaskyieldDirective &s) {
71 getCIRGenModule().errorNYI(s.getSourceRange(),
72 "OpenMP OMPTaskyieldDirective");
73 return mlir::failure();
74}
75mlir::LogicalResult
76CIRGenFunction::emitOMPBarrierDirective(const OMPBarrierDirective &s) {
77 mlir::omp::BarrierOp::create(builder, getLoc(s.getBeginLoc()));
78 assert(s.clauses().empty() && "omp barrier doesn't support clauses");
79 return mlir::success();
80}
81mlir::LogicalResult
83 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPMetaDirective");
84 return mlir::failure();
85}
86mlir::LogicalResult
87CIRGenFunction::emitOMPCanonicalLoop(const OMPCanonicalLoop &s) {
88 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPCanonicalLoop");
89 return mlir::failure();
90}
91mlir::LogicalResult
92CIRGenFunction::emitOMPSimdDirective(const OMPSimdDirective &s) {
93 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPSimdDirective");
94 return mlir::failure();
95}
96mlir::LogicalResult
98 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTileDirective");
99 return mlir::failure();
100}
101mlir::LogicalResult
103 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPUnrollDirective");
104 return mlir::failure();
105}
106mlir::LogicalResult
108 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPFuseDirective");
109 return mlir::failure();
110}
111mlir::LogicalResult
112CIRGenFunction::emitOMPForDirective(const OMPForDirective &s) {
113 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPForDirective");
114 return mlir::failure();
115}
116mlir::LogicalResult
117CIRGenFunction::emitOMPForSimdDirective(const OMPForSimdDirective &s) {
118 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPForSimdDirective");
119 return mlir::failure();
120}
121mlir::LogicalResult
122CIRGenFunction::emitOMPSectionsDirective(const OMPSectionsDirective &s) {
123 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPSectionsDirective");
124 return mlir::failure();
125}
126mlir::LogicalResult
127CIRGenFunction::emitOMPSectionDirective(const OMPSectionDirective &s) {
128 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPSectionDirective");
129 return mlir::failure();
130}
131mlir::LogicalResult
132CIRGenFunction::emitOMPSingleDirective(const OMPSingleDirective &s) {
133 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPSingleDirective");
134 return mlir::failure();
135}
136mlir::LogicalResult
137CIRGenFunction::emitOMPMasterDirective(const OMPMasterDirective &s) {
138 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPMasterDirective");
139 return mlir::failure();
140}
141mlir::LogicalResult
142CIRGenFunction::emitOMPCriticalDirective(const OMPCriticalDirective &s) {
143 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPCriticalDirective");
144 return mlir::failure();
145}
146mlir::LogicalResult
147CIRGenFunction::emitOMPParallelForDirective(const OMPParallelForDirective &s) {
148 getCIRGenModule().errorNYI(s.getSourceRange(),
149 "OpenMP OMPParallelForDirective");
150 return mlir::failure();
151}
153 const OMPParallelForSimdDirective &s) {
154 getCIRGenModule().errorNYI(s.getSourceRange(),
155 "OpenMP OMPParallelForSimdDirective");
156 return mlir::failure();
157}
159 const OMPParallelMasterDirective &s) {
160 getCIRGenModule().errorNYI(s.getSourceRange(),
161 "OpenMP OMPParallelMasterDirective");
162 return mlir::failure();
163}
165 const OMPParallelSectionsDirective &s) {
166 getCIRGenModule().errorNYI(s.getSourceRange(),
167 "OpenMP OMPParallelSectionsDirective");
168 return mlir::failure();
169}
170mlir::LogicalResult
171CIRGenFunction::emitOMPTaskDirective(const OMPTaskDirective &s) {
172 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTaskDirective");
173 return mlir::failure();
174}
175mlir::LogicalResult
176CIRGenFunction::emitOMPTaskgroupDirective(const OMPTaskgroupDirective &s) {
177 getCIRGenModule().errorNYI(s.getSourceRange(),
178 "OpenMP OMPTaskgroupDirective");
179 return mlir::failure();
180}
181mlir::LogicalResult
182CIRGenFunction::emitOMPFlushDirective(const OMPFlushDirective &s) {
183 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPFlushDirective");
184 return mlir::failure();
185}
186mlir::LogicalResult
187CIRGenFunction::emitOMPDepobjDirective(const OMPDepobjDirective &s) {
188 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPDepobjDirective");
189 return mlir::failure();
190}
191mlir::LogicalResult
193 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPScanDirective");
194 return mlir::failure();
195}
196mlir::LogicalResult
197CIRGenFunction::emitOMPOrderedDirective(const OMPOrderedDirective &s) {
198 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPOrderedDirective");
199 return mlir::failure();
200}
201mlir::LogicalResult
202CIRGenFunction::emitOMPAtomicDirective(const OMPAtomicDirective &s) {
203 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPAtomicDirective");
204 return mlir::failure();
205}
206mlir::LogicalResult
208 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTargetDirective");
209 return mlir::failure();
210}
211mlir::LogicalResult
213 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTeamsDirective");
214 return mlir::failure();
215}
218 getCIRGenModule().errorNYI(s.getSourceRange(),
219 "OpenMP OMPCancellationPointDirective");
220 return mlir::failure();
221}
222mlir::LogicalResult
224 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPCancelDirective");
225 return mlir::failure();
226}
227mlir::LogicalResult
229 getCIRGenModule().errorNYI(s.getSourceRange(),
230 "OpenMP OMPTargetDataDirective");
231 return mlir::failure();
232}
235 getCIRGenModule().errorNYI(s.getSourceRange(),
236 "OpenMP OMPTargetEnterDataDirective");
237 return mlir::failure();
238}
241 getCIRGenModule().errorNYI(s.getSourceRange(),
242 "OpenMP OMPTargetExitDataDirective");
243 return mlir::failure();
244}
247 getCIRGenModule().errorNYI(s.getSourceRange(),
248 "OpenMP OMPTargetParallelDirective");
249 return mlir::failure();
250}
253 getCIRGenModule().errorNYI(s.getSourceRange(),
254 "OpenMP OMPTargetParallelForDirective");
255 return mlir::failure();
256}
257mlir::LogicalResult
259 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPTaskLoopDirective");
260 return mlir::failure();
261}
264 getCIRGenModule().errorNYI(s.getSourceRange(),
265 "OpenMP OMPTaskLoopSimdDirective");
266 return mlir::failure();
267}
270 getCIRGenModule().errorNYI(s.getSourceRange(),
271 "OpenMP OMPMaskedTaskLoopDirective");
272 return mlir::failure();
273}
276 getCIRGenModule().errorNYI(s.getSourceRange(),
277 "OpenMP OMPMaskedTaskLoopSimdDirective");
278 return mlir::failure();
279}
282 getCIRGenModule().errorNYI(s.getSourceRange(),
283 "OpenMP OMPMasterTaskLoopDirective");
284 return mlir::failure();
285}
288 getCIRGenModule().errorNYI(s.getSourceRange(),
289 "OpenMP OMPMasterTaskLoopSimdDirective");
290 return mlir::failure();
291}
294 getCIRGenModule().errorNYI(s.getSourceRange(),
295 "OpenMP OMPParallelGenericLoopDirective");
296 return mlir::failure();
297}
299 const OMPParallelMaskedDirective &s) {
300 getCIRGenModule().errorNYI(s.getSourceRange(),
301 "OpenMP OMPParallelMaskedDirective");
302 return mlir::failure();
303}
306 getCIRGenModule().errorNYI(s.getSourceRange(),
307 "OpenMP OMPParallelMaskedTaskLoopDirective");
308 return mlir::failure();
309}
312 getCIRGenModule().errorNYI(s.getSourceRange(),
313 "OpenMP OMPParallelMaskedTaskLoopSimdDirective");
314 return mlir::failure();
315}
318 getCIRGenModule().errorNYI(s.getSourceRange(),
319 "OpenMP OMPParallelMasterTaskLoopDirective");
320 return mlir::failure();
321}
324 getCIRGenModule().errorNYI(s.getSourceRange(),
325 "OpenMP OMPParallelMasterTaskLoopSimdDirective");
326 return mlir::failure();
327}
328mlir::LogicalResult
330 getCIRGenModule().errorNYI(s.getSourceRange(),
331 "OpenMP OMPDistributeDirective");
332 return mlir::failure();
333}
336 getCIRGenModule().errorNYI(s.getSourceRange(),
337 "OpenMP OMPDistributeParallelForDirective");
338 return mlir::failure();
339}
342 getCIRGenModule().errorNYI(s.getSourceRange(),
343 "OpenMP OMPDistributeParallelForSimdDirective");
344 return mlir::failure();
345}
348 getCIRGenModule().errorNYI(s.getSourceRange(),
349 "OpenMP OMPDistributeSimdDirective");
350 return mlir::failure();
351}
354 getCIRGenModule().errorNYI(s.getSourceRange(),
355 "OpenMP OMPTargetParallelGenericLoopDirective");
356 return mlir::failure();
357}
360 getCIRGenModule().errorNYI(s.getSourceRange(),
361 "OpenMP OMPTargetParallelForSimdDirective");
362 return mlir::failure();
363}
364mlir::LogicalResult
366 getCIRGenModule().errorNYI(s.getSourceRange(),
367 "OpenMP OMPTargetSimdDirective");
368 return mlir::failure();
369}
372 getCIRGenModule().errorNYI(s.getSourceRange(),
373 "OpenMP OMPTargetTeamsGenericLoopDirective");
374 return mlir::failure();
375}
378 getCIRGenModule().errorNYI(s.getSourceRange(),
379 "OpenMP OMPTargetUpdateDirective");
380 return mlir::failure();
381}
384 getCIRGenModule().errorNYI(s.getSourceRange(),
385 "OpenMP OMPTeamsDistributeDirective");
386 return mlir::failure();
387}
390 getCIRGenModule().errorNYI(s.getSourceRange(),
391 "OpenMP OMPTeamsDistributeSimdDirective");
392 return mlir::failure();
393}
394mlir::LogicalResult
398 s.getSourceRange(), "OpenMP OMPTeamsDistributeParallelForSimdDirective");
399 return mlir::failure();
400}
403 getCIRGenModule().errorNYI(s.getSourceRange(),
404 "OpenMP OMPTeamsDistributeParallelForDirective");
405 return mlir::failure();
406}
409 getCIRGenModule().errorNYI(s.getSourceRange(),
410 "OpenMP OMPTeamsGenericLoopDirective");
411 return mlir::failure();
412}
413mlir::LogicalResult
415 getCIRGenModule().errorNYI(s.getSourceRange(),
416 "OpenMP OMPTargetTeamsDirective");
417 return mlir::failure();
418}
421 getCIRGenModule().errorNYI(s.getSourceRange(),
422 "OpenMP OMPTargetTeamsDistributeDirective");
423 return mlir::failure();
424}
425mlir::LogicalResult
429 s.getSourceRange(),
430 "OpenMP OMPTargetTeamsDistributeParallelForDirective");
431 return mlir::failure();
432}
433mlir::LogicalResult
437 s.getSourceRange(),
438 "OpenMP OMPTargetTeamsDistributeParallelForSimdDirective");
439 return mlir::failure();
440}
443 getCIRGenModule().errorNYI(s.getSourceRange(),
444 "OpenMP OMPTargetTeamsDistributeSimdDirective");
445 return mlir::failure();
446}
447mlir::LogicalResult
449 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPInteropDirective");
450 return mlir::failure();
451}
452mlir::LogicalResult
454 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPDispatchDirective");
455 return mlir::failure();
456}
457mlir::LogicalResult
459 getCIRGenModule().errorNYI(s.getSourceRange(),
460 "OpenMP OMPGenericLoopDirective");
461 return mlir::failure();
462}
463mlir::LogicalResult
465 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPReverseDirective");
466 return mlir::failure();
467}
468mlir::LogicalResult
470 getCIRGenModule().errorNYI(s.getSourceRange(),
471 "OpenMP OMPInterchangeDirective");
472 return mlir::failure();
473}
474mlir::LogicalResult
476 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPAssumeDirective");
477 return mlir::failure();
478}
479mlir::LogicalResult
481 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPMaskedDirective");
482 return mlir::failure();
483}
484mlir::LogicalResult
486 getCIRGenModule().errorNYI(s.getSourceRange(), "OpenMP OMPStripeDirective");
487 return mlir::failure();
488}
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.
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...