13#ifndef FORTRAN_LOWER_CUDA_H
14#define FORTRAN_LOWER_CUDA_H
16#include "flang/Optimizer/Builder/FIRBuilder.h"
17#include "flang/Optimizer/Builder/MutableBox.h"
18#include "flang/Optimizer/Dialect/CUF/CUFOps.h"
19#include "flang/Runtime/allocator-registry-consts.h"
20#include "flang/Semantics/tools.h"
21#include "mlir/Dialect/Func/IR/FuncOps.h"
22#include "mlir/Dialect/OpenACC/OpenACC.h"
38static inline unsigned getAllocatorIdx(
const Fortran::semantics::Symbol &sym) {
39 std::optional<Fortran::common::CUDADataAttr> cudaAttr =
40 Fortran::semantics::GetCUDADataAttr(&sym.GetUltimate());
42 if (*cudaAttr == Fortran::common::CUDADataAttr::Pinned)
43 return kPinnedAllocatorPos;
44 if (*cudaAttr == Fortran::common::CUDADataAttr::Device)
45 return kDeviceAllocatorPos;
46 if (*cudaAttr == Fortran::common::CUDADataAttr::Managed)
47 return kManagedAllocatorPos;
48 if (*cudaAttr == Fortran::common::CUDADataAttr::Unified)
49 return kUnifiedAllocatorPos;
51 return kDefaultAllocator;
54mlir::Type gatherDeviceComponentCoordinatesAndType(
55 fir::FirOpBuilder &builder, mlir::Location loc,
56 const Fortran::semantics::Symbol &sym, fir::RecordType recTy,
57 llvm::SmallVector<mlir::Value> &coordinates);
63 const Fortran::semantics::Symbol &sym);
Definition AbstractConverter.h:85
Definition ParserActions.h:24
hlfir::ElementalOp isTransferWithConversion(mlir::Value rhs)
Definition CUDA.cpp:71
cuf::DataAttributeAttr translateSymbolCUFDataAttribute(mlir::MLIRContext *mlirContext, const Fortran::semantics::Symbol &sym)
Definition CUDA.cpp:64
Definition AbstractConverter.h:29