| // Copyright 2019 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 |
| |
| #ifndef IREE_COMPILER_DIALECT_FLOW_TRANSFORMS_PASSES_H_ |
| #define IREE_COMPILER_DIALECT_FLOW_TRANSFORMS_PASSES_H_ |
| |
| #include <functional> |
| |
| #include "iree/compiler/Dialect/Flow/IR/FlowOps.h" |
| #include "llvm/ADT/StringMap.h" |
| #include "mlir/IR/BuiltinOps.h" |
| #include "mlir/Pass/Pass.h" |
| #include "mlir/Pass/PassManager.h" |
| #include "mlir/Support/LLVM.h" |
| |
| namespace mlir::iree_compiler::IREE::Flow { |
| |
| //===----------------------------------------------------------------------===// |
| // Pipelines |
| //===----------------------------------------------------------------------===// |
| |
| /// This is a placeholder for future. We should pass all the options through the |
| /// struct. |
| struct TransformOptions : public PassPipelineOptions<TransformOptions> {}; |
| |
| // Adds a set of passes to the given pass manager that run the required flow |
| // transforms in the canonical order. |
| // |
| // Most translation code should prefer to use this instead of manually adding |
| // the passes themselves to ensure that expected pass ordering is observed. |
| // |
| // The expected usage is: |
| // Input legalization by one of: |
| // - Directly passing supported flow plus core ops |
| // buildFlowTransformPassPipeline |
| // <run conversion from flow to sequencer/hal/vm/etc> |
| void buildFlowTransformPassPipeline(OpPassManager &passManager, |
| const TransformOptions &transformOptions); |
| |
| void registerFlowTransformPassPipeline(); |
| |
| //===----------------------------------------------------------------------===// |
| // Register all Passes |
| //===----------------------------------------------------------------------===// |
| |
| #define GEN_PASS_DECL |
| #include "iree/compiler/Dialect/Flow/Transforms/Passes.h.inc" // IWYU pragma: keep |
| |
| void registerFlowPasses(); |
| |
| } // namespace mlir::iree_compiler::IREE::Flow |
| |
| #endif // IREE_COMPILER_DIALECT_FLOW_TRANSFORMS_PASSES_H_ |