13#ifndef FLANG_OPTIMIZER_OPENACC_FIROPENACC_OPS_INTERFACES_H_
14#define FLANG_OPTIMIZER_OPENACC_FIROPENACC_OPS_INTERFACES_H_
16#include "flang/Optimizer/Dialect/FIROperationMoveOpInterface.h"
17#include "flang/Optimizer/Dialect/FortranVariableInterface.h"
18#include "mlir/Dialect/OpenACC/OpenACC.h"
35 :
public mlir::acc::PartialEntityAccessOpInterface::ExternalModel<
36 PartialEntityAccessModel<Op>, Op> {
37 mlir::Value getBaseEntity(mlir::Operation *op)
const;
40 bool isCompleteView(mlir::Operation *op)
const {
return false; }
46 :
public mlir::acc::PartialEntityAccessOpInterface::ExternalModel<
47 PartialEntityAccessModel<fir::DeclareOp>, fir::DeclareOp> {
48 mlir::Value getBaseEntity(mlir::Operation *op)
const;
49 bool isCompleteView(mlir::Operation *op)
const;
54 :
public mlir::acc::PartialEntityAccessOpInterface::ExternalModel<
55 PartialEntityAccessModel<hlfir::DeclareOp>, hlfir::DeclareOp> {
56 mlir::Value getBaseEntity(mlir::Operation *op)
const;
57 bool isCompleteView(mlir::Operation *op)
const;
61 :
public mlir::acc::AddressOfGlobalOpInterface::ExternalModel<
62 AddressOfGlobalModel, fir::AddrOfOp> {
63 mlir::SymbolRefAttr getSymbol(mlir::Operation *op)
const;
67 :
public mlir::acc::GlobalVariableOpInterface::ExternalModel<
68 GlobalVariableModel, fir::GlobalOp> {
69 bool isConstant(mlir::Operation *op)
const;
70 mlir::Region *getInitRegion(mlir::Operation *op)
const;
71 bool isDeviceData(mlir::Operation *op)
const;
76 :
public mlir::acc::IndirectGlobalAccessOpInterface::ExternalModel<
77 IndirectGlobalAccessModel<Op>, Op> {
78 void getReferencedSymbols(mlir::Operation *op,
79 llvm::SmallVectorImpl<mlir::SymbolRefAttr> &symbols,
80 mlir::SymbolTable *symbolTable)
const;
89 :
public mlir::acc::OutlineRematerializationOpInterface::ExternalModel<
90 OutlineRematerializationModel<Op>, Op> {};
97 :
public mlir::acc::OffloadRegionOpInterface::ExternalModel<
98 OffloadRegionModel<Op>, Op> {
99 mlir::Region &getOffloadRegion(mlir::Operation *op)
const {
100 return mlir::cast<Op>(op).getRegion();
108template <
typename Op>
110 OperationMoveModel<Op>, Op> {
115 bool canMoveFromDescendant(mlir::Operation *op, mlir::Operation *descendant,
116 mlir::Operation *candidate)
const;
122 bool canMoveOutOf(mlir::Operation *op, mlir::Operation *candidate)
const;
126 :
public fir::FortranObjectViewOpInterface::ExternalModel<
127 ReductionInitOpFortranObjectViewModel, mlir::acc::ReductionInitOp> {
128 mlir::Value getViewSource(mlir::Operation *op,
129 mlir::OpResult resultView)
const;
130 std::optional<std::int64_t> getViewOffset(mlir::Operation *op,
131 mlir::OpResult resultView)
const;
Definition AbstractConverter.h:37
Definition FIROpenACCOpsInterfaces.h:62
Definition FIROpenACCOpsInterfaces.h:68
Definition FIROpenACCOpsInterfaces.h:77
Definition FIROpenACCOpsInterfaces.h:98
Definition FIROpenACCOpsInterfaces.h:110
Definition FIROpenACCOpsInterfaces.h:90
Definition FIROpenACCOpsInterfaces.h:36
Definition FIROpenACCOpsInterfaces.h:127