14#ifndef LLVM_CLANG_BASIC_OPENACCKINDS_H
15#define LLVM_CLANG_BASIC_OPENACCKINDS_H
18#include "llvm/Support/ErrorHandling.h"
19#include "llvm/Support/raw_ostream.h"
69template <
typename StreamTy>
74 return Out <<
"parallel";
77 return Out <<
"serial";
80 return Out <<
"kernels";
86 return Out <<
"enter data";
89 return Out <<
"exit data";
92 return Out <<
"host_data";
98 return Out <<
"cache";
101 return Out <<
"parallel loop";
104 return Out <<
"serial loop";
107 return Out <<
"kernels loop";
110 return Out <<
"atomic";
113 return Out <<
"declare";
116 return Out <<
"init";
119 return Out <<
"shutdown";
125 return Out <<
"update";
128 return Out <<
"wait";
131 return Out <<
"routine";
134 return Out <<
"<invalid>";
136 llvm_unreachable(
"Uncovered directive kind");
307template <
typename StreamTy>
311 return Out <<
"finalize";
314 return Out <<
"if_present";
320 return Out <<
"independent";
323 return Out <<
"auto";
326 return Out <<
"worker";
329 return Out <<
"vector";
332 return Out <<
"nohost";
335 return Out <<
"default";
341 return Out <<
"self";
344 return Out <<
"copy";
347 return Out <<
"pcopy";
350 return Out <<
"present_or_copy";
353 return Out <<
"use_device";
356 return Out <<
"attach";
359 return Out <<
"delete";
362 return Out <<
"detach";
365 return Out <<
"device";
368 return Out <<
"deviceptr";
371 return Out <<
"device_resident";
374 return Out <<
"firstprivate";
377 return Out <<
"host";
380 return Out <<
"link";
383 return Out <<
"no_create";
386 return Out <<
"present";
389 return Out <<
"private";
392 return Out <<
"copyout";
395 return Out <<
"pcopyout";
398 return Out <<
"present_or_copyout";
401 return Out <<
"copyin";
404 return Out <<
"pcopyin";
407 return Out <<
"present_or_copyin";
410 return Out <<
"create";
413 return Out <<
"pcreate";
416 return Out <<
"present_or_create";
419 return Out <<
"reduction";
422 return Out <<
"collapse";
425 return Out <<
"bind";
428 return Out <<
"vector_length";
431 return Out <<
"num_gangs";
434 return Out <<
"num_workers";
437 return Out <<
"device_num";
440 return Out <<
"default_async";
443 return Out <<
"device_type";
446 return Out <<
"dtype";
449 return Out <<
"async";
452 return Out <<
"tile";
455 return Out <<
"gang";
458 return Out <<
"wait";
461 return Out <<
"<invalid>";
463 llvm_unreachable(
"Uncovered clause kind");
485template <
typename StreamTy>
490 return Out <<
"none";
492 return Out <<
"present";
494 return Out <<
"<invalid>";
496 llvm_unreachable(
"Unknown OpenACCDefaultClauseKind enum");
532template <
typename StreamTy>
555 return Out <<
"<invalid>";
557 llvm_unreachable(
"Unknown reduction operator kind");
577template <
typename StreamTy>
585 return Out <<
"static";
587 llvm_unreachable(
"unknown gang kind");
Defines the Diagnostic-related interfaces.
The streaming interface shared between DiagnosticBuilder and PartialDiagnostic.
The JSON file list parser is used to communicate input to InstallAPI.
@ Invalid
Invalid Reduction Clause Kind.
bool isOpenACCComputeDirectiveKind(OpenACCDirectiveKind K)
bool isOpenACCCombinedDirectiveKind(OpenACCDirectiveKind K)
bool isOpenACCDataDirectiveKind(OpenACCDirectiveKind K)
OpenACCClauseKind
Represents the kind of an OpenACC clause.
@ Auto
'auto' clause, allowed on 'loop' directives.
@ Bind
'bind' clause, allowed on routine constructs.
@ Gang
'gang' clause, allowed on 'loop' and Combined constructs.
@ Wait
'wait' clause, allowed on Compute, Data, 'update', and Combined constructs.
@ DevicePtr
'deviceptr' clause, allowed on Compute and Combined Constructs, plus 'data' and 'declare'.
@ PCopyOut
'copyout' clause alias 'pcopyout'. Preserved for diagnostic purposes.
@ VectorLength
'vector_length' clause, allowed on 'parallel', 'kernels', 'parallel loop', and 'kernels loop' constru...
@ Async
'async' clause, allowed on Compute, Data, 'update', 'wait', and Combined constructs.
@ PresentOrCreate
'create' clause alias 'present_or_create'.
@ Collapse
'collapse' clause, allowed on 'loop' and Combined constructs.
@ NoHost
'nohost' clause, allowed on 'routine' directives.
@ PresentOrCopy
'copy' clause alias 'present_or_copy'. Preserved for diagnostic purposes.
@ DeviceNum
'device_num' clause, allowed on 'init', 'shutdown', and 'set' constructs.
@ Private
'private' clause, allowed on 'parallel', 'serial', 'loop', 'parallel loop', and 'serial loop' constru...
@ Invalid
Represents an invalid clause, for the purposes of parsing.
@ Vector
'vector' clause, allowed on 'loop', Combined, and 'routine' directives.
@ Copy
'copy' clause, allowed on Compute and Combined Constructs, plus 'data' and 'declare'.
@ Worker
'worker' clause, allowed on 'loop', Combined, and 'routine' directives.
@ Create
'create' clause, allowed on Compute and Combined constructs, plus 'data', 'enter data',...
@ DeviceType
'device_type' clause, allowed on Compute, 'data', 'init', 'shutdown', 'set', update',...
@ DefaultAsync
'default_async' clause, allowed on 'set' construct.
@ Attach
'attach' clause, allowed on Compute and Combined constructs, plus 'data' and 'enter data'.
@ NumGangs
'num_gangs' clause, allowed on 'parallel', 'kernels', parallel loop', and 'kernels loop' constructs.
@ If
'if' clause, allowed on all the Compute Constructs, Data Constructs, Executable Constructs,...
@ Default
'default' clause, allowed on parallel, serial, kernel (and compound) constructs.
@ UseDevice
'use_device' clause, allowed on 'host_data' construct.
@ NoCreate
'no_create' clause, allowed on allowed on Compute and Combined constructs, plus 'data'.
@ PresentOrCopyOut
'copyout' clause alias 'present_or_copyout'.
@ Link
'link' clause, allowed on 'declare' construct.
@ Reduction
'reduction' clause, allowed on Parallel, Serial, Loop, and the combined constructs.
@ Self
'self' clause, allowed on Compute and Combined Constructs, plus 'update'.
@ CopyOut
'copyout' clause, allowed on Compute and Combined constructs, plus 'data', 'exit data',...
@ Seq
'seq' clause, allowed on 'loop' and 'routine' directives.
@ FirstPrivate
'firstprivate' clause, allowed on 'parallel', 'serial', 'parallel loop', and 'serial loop' constructs...
@ Host
'host' clause, allowed on 'update' construct.
@ PCopy
'copy' clause alias 'pcopy'. Preserved for diagnostic purposes.
@ Tile
'tile' clause, allowed on 'loop' and Combined constructs.
@ PCopyIn
'copyin' clause alias 'pcopyin'. Preserved for diagnostic purposes.
@ DeviceResident
'device_resident' clause, allowed on the 'declare' construct.
@ PCreate
'create' clause alias 'pcreate'. Preserved for diagnostic purposes.
@ Present
'present' clause, allowed on Compute and Combined constructs, plus 'data' and 'declare'.
@ DType
'dtype' clause, an alias for 'device_type', stored separately for diagnostic purposes.
@ CopyIn
'copyin' clause, allowed on Compute and Combined constructs, plus 'data', 'enter data',...
@ Device
'device' clause, allowed on the 'update' construct.
@ Independent
'independent' clause, allowed on 'loop' directives.
@ NumWorkers
'num_workers' clause, allowed on 'parallel', 'kernels', parallel loop', and 'kernels loop' constructs...
@ IfPresent
'if_present' clause, allowed on 'host_data' and 'update' directives.
@ Detach
'detach' clause, allowed on the 'exit data' construct.
@ Delete
'delete' clause, allowed on the 'exit data' construct.
@ PresentOrCopyIn
'copyin' clause alias 'present_or_copyin'.
@ Finalize
'finalize' clause, allowed on 'exit data' directive.
StreamTy & printOpenACCDefaultClauseKind(StreamTy &Out, OpenACCDefaultClauseKind K)
@ Invalid
Not a valid option.
@ Present
'present' option.
const StreamingDiagnostic & operator<<(const StreamingDiagnostic &DB, const ASTContext::SectionInfo &Section)
Insertion operator for diagnostics.
StreamTy & printOpenACCGangKind(StreamTy &Out, OpenACCGangKind GK)
StreamTy & printOpenACCClauseKind(StreamTy &Out, OpenACCClauseKind K)
StreamTy & printOpenACCDirectiveKind(StreamTy &Out, OpenACCDirectiveKind K)
@ None
The alignment was not explicit in code.
StreamTy & printOpenACCReductionOperator(StreamTy &Out, OpenACCReductionOperator Op)