1 //===- OpenMPInterfaces.h - MLIR Interfaces for OpenMP ----------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This file declares OpenMP Interface implementations for the OpenMP dialect. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef MLIR_DIALECT_OPENMP_OPENMPINTERFACES_H_ 14 #define MLIR_DIALECT_OPENMP_OPENMPINTERFACES_H_ 15 16 #include "mlir/Dialect/LLVMIR/LLVMDialect.h" 17 #include "mlir/IR/Dialect.h" 18 #include "mlir/IR/OpDefinition.h" 19 #include "mlir/IR/PatternMatch.h" 20 #include "mlir/IR/SymbolTable.h" 21 #include "mlir/Interfaces/ControlFlowInterfaces.h" 22 #include "mlir/Interfaces/SideEffectInterfaces.h" 23 24 #define GET_OP_FWD_DEFINES 25 #include "mlir/Dialect/OpenMP/OpenMPOps.h.inc" 26 27 #include "mlir/Dialect/OpenMP/OpenMPOpsInterfaces.h.inc" 28 29 namespace mlir::omp { 30 // You can override defaults here or implement more complex implementations of 31 // functions. Or define a completely separate external model implementation, 32 // to override the existing implementation. 33 struct OffloadModuleDefaultModel 34 : public OffloadModuleInterface::ExternalModel<OffloadModuleDefaultModel, 35 mlir::ModuleOp> {}; 36 37 template <typename T> 38 struct DeclareTargetDefaultModel 39 : public DeclareTargetInterface::ExternalModel<DeclareTargetDefaultModel<T>, 40 T> {}; 41 42 } // namespace mlir::omp 43 44 #endif // MLIR_DIALECT_OPENMP_OPENMPINTERFACES_H_ 45