xref: /llvm-project/mlir/include/mlir/Dialect/OpenMP/OpenMPAttrDefs.td (revision 6733a505a1afb8eb4db2f6d85426d79ff0dc5eee)
1//=== OpenMPAttrDefs.td - OpenMP Attributes definition -----*- tablegen -*-===//
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#ifndef OPENMP_ATTR_DEFS
10#define OPENMP_ATTR_DEFS
11
12include "mlir/Dialect/OpenMP/OpenMPDialect.td"
13include "mlir/Dialect/OpenMP/OpenMPEnums.td"
14include "mlir/Dialect/OpenMP/OpenMPOpsInterfaces.td"
15include "mlir/Dialect/OpenMP/OpenMPTypeInterfaces.td"
16include "mlir/IR/AttrTypeBase.td"
17include "mlir/IR/CommonAttrConstraints.td"
18
19class OpenMP_Attr<string name, string attrMnemonic, list<Trait> traits = [],
20                  string baseCppClass = "::mlir::Attribute">
21    : AttrDef<OpenMP_Dialect, name, traits, baseCppClass> {
22  let mnemonic = attrMnemonic;
23}
24
25//===----------------------------------------------------------------------===//
26// DeclareTargetAttr
27//===----------------------------------------------------------------------===//
28
29def DeclareTargetAttr : OpenMP_Attr<"DeclareTarget", "declaretarget"> {
30  let parameters = (ins
31    OptionalParameter<"DeclareTargetDeviceTypeAttr">:$device_type,
32    OptionalParameter<"DeclareTargetCaptureClauseAttr">:$capture_clause
33  );
34
35  let assemblyFormat = "`<` struct(params) `>`";
36}
37
38//===----------------------------------------------------------------------===//
39// FlagsAttr
40//===----------------------------------------------------------------------===//
41
42// Runtime library flags attribute that holds information for lowering to LLVM.
43def FlagsAttr : OpenMP_Attr<"Flags", "flags"> {
44  let parameters = (ins
45    DefaultValuedParameter<"uint32_t", "0">:$debug_kind,
46    DefaultValuedParameter<"bool", "false">:$assume_teams_oversubscription,
47    DefaultValuedParameter<"bool", "false">:$assume_threads_oversubscription,
48    DefaultValuedParameter<"bool", "false">:$assume_no_thread_state,
49    DefaultValuedParameter<"bool", "false">:$assume_no_nested_parallelism,
50    DefaultValuedParameter<"bool", "false">:$no_gpu_lib,
51    DefaultValuedParameter<"uint32_t", "50">:$openmp_device_version
52  );
53
54  let assemblyFormat = "`<` struct(params) `>`";
55}
56
57//===----------------------------------------------------------------------===//
58// TaskDependArrayAttr
59//===----------------------------------------------------------------------===//
60
61def TaskDependArrayAttr
62    : TypedArrayAttrBase<ClauseTaskDependAttr,
63                         ClauseTaskDependAttr.summary # " array"> {
64  let constBuilderCall = ?;
65}
66
67//===----------------------------------------------------------------------===//
68// VersionAttr
69//===----------------------------------------------------------------------===//
70
71def VersionAttr : OpenMP_Attr<"Version", "version"> {
72  let parameters = (ins
73    "uint32_t":$version
74  );
75
76  let assemblyFormat = "`<` struct(params) `>`";
77}
78
79#endif // OPENMP_ATTR_DEFS
80