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