//=== OpenMPAttrDefs.td - OpenMP Attributes definition -----*- tablegen -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef OPENMP_ATTR_DEFS #define OPENMP_ATTR_DEFS include "mlir/Dialect/OpenMP/OpenMPDialect.td" include "mlir/Dialect/OpenMP/OpenMPEnums.td" include "mlir/Dialect/OpenMP/OpenMPOpsInterfaces.td" include "mlir/Dialect/OpenMP/OpenMPTypeInterfaces.td" include "mlir/IR/AttrTypeBase.td" include "mlir/IR/CommonAttrConstraints.td" class OpenMP_Attr traits = [], string baseCppClass = "::mlir::Attribute"> : AttrDef { let mnemonic = attrMnemonic; } //===----------------------------------------------------------------------===// // AtomicControlAttr //===----------------------------------------------------------------------===// // Atomic control attributes hold information about architectural // characteristics which are required for lowering atomic operations. def AtomicControlAttr : OpenMP_Attr<"AtomicControl", "atomic_control"> { let parameters = (ins DefaultValuedParameter<"bool", "false">:$ignore_denormal_mode, DefaultValuedParameter<"bool", "false">:$fine_grained_memory, DefaultValuedParameter<"bool", "false">:$remote_memory); let assemblyFormat = "`<` struct(params) `>`"; } //===----------------------------------------------------------------------===// // DeclareTargetAttr //===----------------------------------------------------------------------===// def DeclareTargetAttr : OpenMP_Attr<"DeclareTarget", "declaretarget"> { let parameters = (ins OptionalParameter<"DeclareTargetDeviceTypeAttr">:$device_type, OptionalParameter<"DeclareTargetCaptureClauseAttr">:$capture_clause, OptionalParameter<"BoolAttr">:$automap); let assemblyFormat = "`<` struct(params) `>`"; } //===----------------------------------------------------------------------===// // FlagsAttr //===----------------------------------------------------------------------===// // Runtime library flags attribute that holds information for lowering to LLVM. def FlagsAttr : OpenMP_Attr<"Flags", "flags"> { let parameters = (ins DefaultValuedParameter<"uint32_t", "0">:$debug_kind, DefaultValuedParameter<"bool", "false">:$assume_teams_oversubscription, DefaultValuedParameter<"bool", "false">:$assume_threads_oversubscription, DefaultValuedParameter<"bool", "false">:$assume_no_thread_state, DefaultValuedParameter<"bool", "false">:$assume_no_nested_parallelism, DefaultValuedParameter<"bool", "false">:$no_gpu_lib, DefaultValuedParameter<"uint32_t", "50">:$openmp_device_version ); let assemblyFormat = "`<` struct(params) `>`"; } //===----------------------------------------------------------------------===// // TaskDependArrayAttr //===----------------------------------------------------------------------===// def TaskDependArrayAttr : TypedArrayAttrBase { let constBuilderCall = ?; } //===----------------------------------------------------------------------===// // VersionAttr //===----------------------------------------------------------------------===// def VersionAttr : OpenMP_Attr<"Version", "version"> { let parameters = (ins "uint32_t":$version ); let assemblyFormat = "`<` struct(params) `>`"; } #endif // OPENMP_ATTR_DEFS