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 "mlir/Dialect/OpenACC/OpenACC.h"
34 :
public mlir::acc::PartialEntityAccessOpInterface::ExternalModel<
35 PartialEntityAccessModel<Op>, Op> {
36 mlir::Value getBaseEntity(mlir::Operation *op)
const;
39 bool isCompleteView(mlir::Operation *op)
const {
return false; }
45 :
public mlir::acc::PartialEntityAccessOpInterface::ExternalModel<
46 PartialEntityAccessModel<fir::DeclareOp>, fir::DeclareOp> {
47 mlir::Value getBaseEntity(mlir::Operation *op)
const;
48 bool isCompleteView(mlir::Operation *op)
const;
53 :
public mlir::acc::PartialEntityAccessOpInterface::ExternalModel<
54 PartialEntityAccessModel<hlfir::DeclareOp>, hlfir::DeclareOp> {
55 mlir::Value getBaseEntity(mlir::Operation *op)
const;
56 bool isCompleteView(mlir::Operation *op)
const;
60 :
public mlir::acc::AddressOfGlobalOpInterface::ExternalModel<
61 AddressOfGlobalModel, fir::AddrOfOp> {
62 mlir::SymbolRefAttr getSymbol(mlir::Operation *op)
const;
66 :
public mlir::acc::GlobalVariableOpInterface::ExternalModel<
67 GlobalVariableModel, fir::GlobalOp> {
68 bool isConstant(mlir::Operation *op)
const;
69 mlir::Region *getInitRegion(mlir::Operation *op)
const;
70 bool isDeviceData(mlir::Operation *op)
const;
75 :
public mlir::acc::IndirectGlobalAccessOpInterface::ExternalModel<
76 IndirectGlobalAccessModel<Op>, Op> {
77 void getReferencedSymbols(mlir::Operation *op,
78 llvm::SmallVectorImpl<mlir::SymbolRefAttr> &symbols,
79 mlir::SymbolTable *symbolTable)
const;
88 :
public mlir::acc::OutlineRematerializationOpInterface::ExternalModel<
89 OutlineRematerializationModel<Op>, Op> {};
96 :
public mlir::acc::OffloadRegionOpInterface::ExternalModel<
97 OffloadRegionModel<Op>, Op> {};
103template <
typename Op>
105 OperationMoveModel<Op>, Op> {
110 bool canMoveFromDescendant(mlir::Operation *op, mlir::Operation *descendant,
111 mlir::Operation *candidate)
const;
117 bool canMoveOutOf(mlir::Operation *op, mlir::Operation *candidate)
const;
Definition AbstractConverter.h:37
Definition FIROpenACCOpsInterfaces.h:61
Definition FIROpenACCOpsInterfaces.h:67
Definition FIROpenACCOpsInterfaces.h:76
Definition FIROpenACCOpsInterfaces.h:97
Definition FIROpenACCOpsInterfaces.h:105
Definition FIROpenACCOpsInterfaces.h:89
Definition FIROpenACCOpsInterfaces.h:35