13#ifndef FORTRAN_OPTIMIZER_DIALECT_CUF_CUFATTR_H
14#define FORTRAN_OPTIMIZER_DIALECT_CUF_CUFATTR_H
16#include "flang/Common/Fortran.h"
17#include "mlir/IR/BuiltinAttributes.h"
23#include "flang/Optimizer/Dialect/CUF/Attributes/CUFEnumAttr.h.inc"
25#define GET_ATTRDEF_CLASSES
26#include "flang/Optimizer/Dialect/CUF/Attributes/CUFAttr.h.inc"
31static constexpr llvm::StringRef getDataAttrName() {
return "cuf.data_attr"; }
32static constexpr llvm::StringRef getProcAttrName() {
return "cuf.proc_attr"; }
35static constexpr llvm::StringRef getLaunchBoundsAttrName() {
36 return "cuf.launch_bounds";
40static constexpr llvm::StringRef getClusterDimsAttrName() {
41 return "cuf.cluster_dims";
44inline cuf::DataAttributeAttr
45getDataAttribute(mlir::MLIRContext *mlirContext,
46 std::optional<Fortran::common::CUDADataAttr> cudaAttr) {
48 cuf::DataAttribute attr;
50 case Fortran::common::CUDADataAttr::Constant:
51 attr = cuf::DataAttribute::Constant;
53 case Fortran::common::CUDADataAttr::Device:
54 attr = cuf::DataAttribute::Device;
56 case Fortran::common::CUDADataAttr::Managed:
57 attr = cuf::DataAttribute::Managed;
59 case Fortran::common::CUDADataAttr::Pinned:
60 attr = cuf::DataAttribute::Pinned;
62 case Fortran::common::CUDADataAttr::Shared:
63 attr = cuf::DataAttribute::Shared;
65 case Fortran::common::CUDADataAttr::Texture:
68 case Fortran::common::CUDADataAttr::Unified:
69 attr = cuf::DataAttribute::Unified;
72 return cuf::DataAttributeAttr::get(mlirContext, attr);
77inline cuf::ProcAttributeAttr
78getProcAttribute(mlir::MLIRContext *mlirContext,
79 std::optional<Fortran::common::CUDASubprogramAttrs> cudaAttr) {
81 cuf::ProcAttribute attr;
83 case Fortran::common::CUDASubprogramAttrs::Host:
84 attr = cuf::ProcAttribute::Host;
86 case Fortran::common::CUDASubprogramAttrs::Device:
87 attr = cuf::ProcAttribute::Device;
89 case Fortran::common::CUDASubprogramAttrs::HostDevice:
90 attr = cuf::ProcAttribute::HostDevice;
92 case Fortran::common::CUDASubprogramAttrs::Global:
93 attr = cuf::ProcAttribute::Global;
95 case Fortran::common::CUDASubprogramAttrs::Grid_Global:
96 attr = cuf::ProcAttribute::GridGlobal;
99 return cuf::ProcAttributeAttr::get(mlirContext, attr);
Definition: ConvertVariable.h:26