//===- LLVMImportInterface.h - Import from LLVM interface -------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This header file defines dialect interfaces for the LLVM IR import. // //===----------------------------------------------------------------------===// #ifndef MLIR_TARGET_LLVMIR_LLVMIMPORTINTERFACE_H #define MLIR_TARGET_LLVMIR_LLVMIMPORTINTERFACE_H #include "mlir/Dialect/LLVMIR/LLVMDialect.h" #include "mlir/IR/Builders.h" #include "mlir/IR/BuiltinAttributes.h" #include "mlir/IR/Diagnostics.h" #include "mlir/IR/DialectInterface.h" #include "mlir/IR/Location.h" #include "llvm/IR/Instruction.h" #include "llvm/IR/Instructions.h" #include "llvm/Support/FormatVariadic.h" namespace llvm { class IRBuilderBase; } // namespace llvm namespace mlir { namespace LLVM { class ModuleImport; } // namespace LLVM /// Base class for dialect interfaces used to import LLVM IR. Dialects that can /// be imported should provide an implementation of this interface for the /// supported intrinsics. The interface may be implemented in a separate library /// to avoid the "main" dialect library depending on LLVM IR. The interface can /// be attached using the delayed registration mechanism available in /// DialectRegistry. class LLVMImportDialectInterface : public DialectInterface::Base<LLVMImportDialectInterface> { … }; /// Interface collection for the import of LLVM IR that dispatches to a concrete /// dialect interface implementation. Queries the dialect interfaces to obtain a /// list of the supported LLVM IR constructs and then builds a mapping for the /// efficient dispatch. class LLVMImportInterface : public DialectInterfaceCollection<LLVMImportDialectInterface> { … }; } // namespace mlir #endif // MLIR_TARGET_LLVMIR_LLVMIMPORTINTERFACE_H