1//===-- OpenACCClauses.def - List of implemented OpenACC Clauses -- 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 defines a list of currently implemented OpenACC Clauses (and
10// eventually, the entire list) in a way that makes generating 'visitor' and
11// other lists easier.
12//
13// The primary macro is a single-argument version taking the name of the Clause
14// as used in Clang source (so `Default` instead of `default`).
15//
16// VISIT_CLAUSE(CLAUSE_NAME)
17//
18// CLAUSE_ALIAS(ALIAS_NAME, CLAUSE_NAME, DEPRECATED)
19
20#ifndef CLAUSE_ALIAS
21#define CLAUSE_ALIAS(ALIAS_NAME, CLAUSE_NAME, false)
22#endif
23
24VISIT_CLAUSE(Auto)
25VISIT_CLAUSE(Async)
26VISIT_CLAUSE(Attach)
27VISIT_CLAUSE(Copy)
28CLAUSE_ALIAS(PCopy, Copy, true)
29CLAUSE_ALIAS(PresentOrCopy, Copy, true)
30VISIT_CLAUSE(CopyIn)
31CLAUSE_ALIAS(PCopyIn, CopyIn, true)
32CLAUSE_ALIAS(PresentOrCopyIn, CopyIn, true)
33VISIT_CLAUSE(CopyOut)
34CLAUSE_ALIAS(PCopyOut, CopyOut, true)
35CLAUSE_ALIAS(PresentOrCopyOut, CopyOut, true)
36VISIT_CLAUSE(Create)
37CLAUSE_ALIAS(PCreate, Create, true)
38CLAUSE_ALIAS(PresentOrCreate, Create, true)
39VISIT_CLAUSE(Default)
40VISIT_CLAUSE(DevicePtr)
41VISIT_CLAUSE(DeviceType)
42CLAUSE_ALIAS(DType, DeviceType, false)
43VISIT_CLAUSE(FirstPrivate)
44VISIT_CLAUSE(If)
45VISIT_CLAUSE(Independent)
46VISIT_CLAUSE(NoCreate)
47VISIT_CLAUSE(NumGangs)
48VISIT_CLAUSE(NumWorkers)
49VISIT_CLAUSE(Present)
50VISIT_CLAUSE(Private)
51VISIT_CLAUSE(Reduction)
52VISIT_CLAUSE(Self)
53VISIT_CLAUSE(Seq)
54VISIT_CLAUSE(VectorLength)
55VISIT_CLAUSE(Wait)
56
57#undef VISIT_CLAUSE
58#undef CLAUSE_ALIAS
59