| // Copyright 2021 The IREE Authors |
| // |
| // Licensed 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 |
| |
| #include "iree/compiler/Dialect/Modules/VMVX/IR/VMVXDialect.h" |
| |
| #include "iree/compiler/Dialect/Modules/VMVX/Conversion/VMVXToVM/ConvertVMVXToVM.h" |
| #include "iree/compiler/Dialect/Modules/VMVX/IR/VMVXOps.h" |
| #include "iree/compiler/Dialect/Modules/VMVX/IR/VMVXTypes.h" |
| #include "iree/compiler/Dialect/Modules/VMVX/vmvx.imports.h" |
| #include "iree/compiler/Dialect/VM/Conversion/ConversionDialectInterface.h" |
| #include "llvm/Support/SourceMgr.h" |
| #include "mlir/IR/DialectImplementation.h" |
| #include "mlir/IR/OpImplementation.h" |
| #include "mlir/Parser.h" |
| |
| namespace mlir { |
| namespace iree_compiler { |
| namespace IREE { |
| namespace VMVX { |
| |
| namespace { |
| |
| class VMVXToVMConversionInterface : public VMConversionDialectInterface { |
| public: |
| using VMConversionDialectInterface::VMConversionDialectInterface; |
| |
| OwningOpRef<mlir::ModuleOp> parseVMImportModule() const override { |
| return mlir::parseSourceString(StringRef(iree_vmvx_imports_create()->data, |
| iree_vmvx_imports_create()->size), |
| getDialect()->getContext()); |
| } |
| |
| void populateVMConversionPatterns( |
| SymbolTable &importSymbols, RewritePatternSet &patterns, |
| TypeConverter &typeConverter) const override { |
| populateVMVXToVMPatterns(getDialect()->getContext(), typeConverter, |
| importSymbols, patterns); |
| } |
| }; |
| |
| } // namespace |
| |
| VMVXDialect::VMVXDialect(MLIRContext *context) |
| : Dialect(getDialectNamespace(), context, TypeID::get<VMVXDialect>()) { |
| addInterfaces<VMVXToVMConversionInterface>(); |
| |
| #define GET_OP_LIST |
| addOperations< |
| #include "iree/compiler/Dialect/Modules/VMVX/IR/VMVXOps.cpp.inc" |
| >(); |
| } |
| |
| } // namespace VMVX |
| } // namespace IREE |
| } // namespace iree_compiler |
| } // namespace mlir |