blob: 1bd8b3db992c82ea973c30103a6e77ab31a7126f [file]
// Copyright 2020 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
// This file defines a helper to trigger the registration of passes to
// the system.
//
// Based on MLIR's InitAllPasses but for IREE passes.
#ifndef IREE_COMPILER_TOOLS_INIT_IREE_PASSES_H_
#define IREE_COMPILER_TOOLS_INIT_IREE_PASSES_H_
#include <cstdlib>
#include "iree/compiler/Bindings/Native/Transforms/Passes.h"
#include "iree/compiler/Bindings/TFLite/Transforms/Passes.h"
#include "iree/compiler/ConstEval/Passes.h"
#include "iree/compiler/Dialect/Flow/Transforms/Passes.h"
#include "iree/compiler/Dialect/HAL/Transforms/Passes.h"
#include "iree/compiler/Dialect/LinalgExt/Transforms/Passes.h"
#include "iree/compiler/Dialect/Stream/Transforms/Passes.h"
#include "iree/compiler/Dialect/Util/Transforms/Passes.h"
#include "iree/compiler/Dialect/VM/Analysis/TestPasses.h"
#include "iree/compiler/Dialect/VM/Transforms/Passes.h"
#include "iree/compiler/Dialect/VMVX/Transforms/Passes.h"
#include "iree/compiler/DispatchCreation/Passes.h"
#include "iree/compiler/GlobalOptimization/Passes.h"
#include "iree/compiler/InputConversion/Common/Passes.h"
#include "iree/compiler/Modules/HAL/Inline/Transforms/Passes.h"
#include "iree/compiler/Modules/HAL/Loader/Transforms/Passes.h"
#include "iree/compiler/Modules/IO/Parameters/Transforms/Passes.h"
#include "iree/compiler/Pipelines/Pipelines.h"
#include "iree/compiler/Preprocessing/Passes.h"
#ifdef IREE_HAVE_C_OUTPUT_FORMAT
// TODO: Remove these once rolled up into explicit registration.
#include "iree/compiler/Dialect/VM/Conversion/VMToEmitC/ConvertVMToEmitC.h"
#endif // IREE_HAVE_C_OUTPUT_FORMAT
namespace mlir::iree_compiler {
// Registers IREE passes with the global registry.
inline void registerAllIreePasses() {
IREE::ABI::registerPasses();
IREE::ABI::registerTransformPassPipeline();
IREE::TFLite::registerPasses();
IREE::TFLite::registerTransformPassPipeline();
InputConversion::registerCommonInputConversionPasses();
ConstEval::registerConstEvalPasses();
GlobalOptimization::registerGlobalOptimizationPipeline();
DispatchCreation::registerDispatchCreationPipelines();
Preprocessing::registerPreprocessingPasses();
DispatchCreation::registerDispatchCreationPasses();
IREE::Flow::registerFlowPasses();
IREE::HAL::registerHALPasses();
IREE::HAL::Inline::registerHALInlinePasses();
IREE::HAL::Loader::registerHALLoaderPasses();
IREE::IO::Parameters::registerParametersPasses();
IREE::LinalgExt::registerPasses();
IREE::Stream::registerStreamPasses();
IREE::Util::registerTransformPasses();
IREE::VM::registerVMPasses();
IREE::VM::registerVMAnalysisTestPasses();
IREE::VMVX::registerVMVXPasses();
registerIREEVMTransformPassPipeline();
// We have some dangling passes that don't use explicit
// registration and that we need to force instantiation
// of in order to register.
// TODO: Eliminate these.
#ifdef IREE_HAVE_C_OUTPUT_FORMAT
IREE::VM::createConvertVMToEmitCPass();
#endif // IREE_HAVE_C_OUTPUT_FORMAT
}
} // namespace mlir::iree_compiler
#endif // IREE_COMPILER_TOOLS_INIT_IREE_PASSES_H_