blob: 0c5485160ef82133175e18cf75e995872cab65cb [file] [log] [blame]
// 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