13#ifndef FORTRAN_LOWER_OPENACC_H
14#define FORTRAN_LOWER_OPENACC_H
16#include "mlir/Dialect/OpenACC/OpenACC.h"
19template <
typename T,
unsigned N>
39struct OpenACCConstruct;
40struct OpenACCDeclarativeConstruct;
41struct OpenACCRoutineConstruct;
45class SemanticsContext;
51class AbstractConverter;
52class StatementContext;
58using AccRoutineInfoMappingList =
61static constexpr llvm::StringRef declarePostAllocSuffix =
62 "_acc_declare_update_desc_post_alloc";
63static constexpr llvm::StringRef declarePreDeallocSuffix =
64 "_acc_declare_update_desc_pre_dealloc";
65static constexpr llvm::StringRef declarePostDeallocSuffix =
66 "_acc_declare_update_desc_post_dealloc";
68static constexpr llvm::StringRef privatizationRecipePrefix =
"privatization";
70mlir::Value genOpenACCConstruct(AbstractConverter &,
73 const parser::OpenACCConstruct &);
74void genOpenACCDeclarativeConstruct(AbstractConverter &,
77 const parser::OpenACCDeclarativeConstruct &,
78 AccRoutineInfoMappingList &);
79void genOpenACCRoutineConstruct(AbstractConverter &,
82 const parser::OpenACCRoutineConstruct &,
83 AccRoutineInfoMappingList &);
85void finalizeOpenACCRoutineAttachment(mlir::ModuleOp,
86 AccRoutineInfoMappingList &);
92 mlir::Location, mlir::Type);
96mlir::acc::ReductionRecipeOp
98 mlir::Type, mlir::acc::ReductionOperator,
103mlir::acc::FirstprivateRecipeOp
105 mlir::Location, mlir::Type,
111 mlir::Value beginOpValue,
Definition: semantics.h:67
Definition: FIRBuilder.h:55
mlir::acc::FirstprivateRecipeOp createOrGetFirstprivateRecipe(mlir::OpBuilder &, llvm::StringRef, mlir::Location, mlir::Type, llvm::SmallVector< mlir::Value > &)
Definition: OpenACC.cpp:668
mlir::acc::PrivateRecipeOp createOrGetPrivateRecipe(mlir::OpBuilder &, llvm::StringRef, mlir::Location, mlir::Type)
Definition: OpenACC.cpp:528
mlir::acc::ReductionRecipeOp createOrGetReductionRecipe(fir::FirOpBuilder &, llvm::StringRef, mlir::Location, mlir::Type, mlir::acc::ReductionOperator, llvm::SmallVector< mlir::Value > &)
Definition: OpenACC.cpp:1344
Definition: bit-population-count.h:20
Definition: AbstractConverter.h:31
Definition: AbstractConverter.h:27
Definition: parse-tree.h:4904