blob: 895c918672c7b1a1181e562f0378d9e09ab3d1c5 [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-dialects/Dialect/LinalgTransform/Passes.h"
#include "iree-dialects/Dialect/LinalgTransform/StructuredTransformOpsExt.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Async/IR/Async.h"
#include "mlir/Dialect/ControlFlow/IR/ControlFlow.h"
#include "mlir/Dialect/Func/Extensions/InlinerExtension.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.h"
#include "mlir/Dialect/Linalg/IR/Linalg.h"
#include "mlir/Dialect/Linalg/TransformOps/DialectExtension.h"
#include "mlir/Dialect/Linalg/TransformOps/LinalgTransformOps.h"
#include "mlir/Dialect/Linalg/Transforms/TilingInterfaceImpl.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/Dialect/MemRef/Transforms/Passes.h"
#include "mlir/Dialect/MemRef/Transforms/Transforms.h"
#include "mlir/Dialect/PDL/IR/PDL.h"
#include "mlir/Dialect/PDLInterp/IR/PDLInterp.h"
#include "mlir/Dialect/SCF/IR/SCF.h"
#include "mlir/Dialect/SCF/TransformOps/SCFTransformOps.h"
#include "mlir/Dialect/SCF/Transforms/Passes.h"
#include "mlir/Dialect/Tensor/IR/Tensor.h"
#include "mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h"
#include "mlir/Dialect/Transform/IR/TransformDialect.h"
#include "mlir/Dialect/Transform/PDLExtension/PDLExtension.h"
#include "mlir/Dialect/Vector/TransformOps/VectorTransformOps.h"
#include "mlir/IR/AsmState.h"
#include "mlir/IR/Dialect.h"
#include "mlir/Tools/mlir-opt/MlirOptMain.h"
#include "mlir/Transforms/Passes.h"
#include <mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h>
using namespace mlir;
int main(int argc, char **argv) {
registerAsmPrinterCLOptions();
registerMLIRContextCLOptions();
DialectRegistry registry;
registry.insert<
// clang-format off
// Upstream dialects
mlir::async::AsyncDialect,
mlir::arith::ArithDialect,
mlir::affine::AffineDialect,
mlir::cf::ControlFlowDialect,
mlir::func::FuncDialect,
mlir::linalg::LinalgDialect,
mlir::memref::MemRefDialect,
mlir::pdl::PDLDialect,
mlir::pdl_interp::PDLInterpDialect,
mlir::scf::SCFDialect,
mlir::tensor::TensorDialect,
mlir::transform::TransformDialect,
mlir::vector::VectorDialect
// clang-format on
>();
// Core dialect passes.
memref::registerMemRefPasses();
registerTransformsPasses();
registerSCFPasses();
// Local dialect passes.
mlir::linalg::transform::registerDropSchedulePass();
// External models.
mlir::func::registerInlinerExtension(registry);
mlir::LLVM::registerInlinerInterface(registry);
mlir::linalg::registerTilingInterfaceExternalModels(registry);
registry.addExtensions<transform_ext::StructuredTransformOpsExtension>();
mlir::bufferization::registerTransformDialectExtension(registry);
mlir::linalg::registerTransformDialectExtension(registry);
mlir::scf::registerTransformDialectExtension(registry);
mlir::tensor::registerFindPayloadReplacementOpInterfaceExternalModels(
registry);
mlir::tensor::registerTransformDialectExtension(registry);
mlir::vector::registerTransformDialectExtension(registry);
// Dialect extensions.
transform::registerPDLExtension(registry);
return mlir::asMainReturnCode(mlir::MlirOptMain(
argc, argv, "MLIR modular optimizer driver\n", registry));
}