Revise alwayslink in CodegenPasses and CodegenUtils * Implements explicit registration of CodegenPasses * Drops alwayslink from CodegenPasses and CodegenUtils * Removes createHLOPreprocessingPass() from CodegenPasses header: * Implemented in `compiler/Dialect/Flow/Transforms/HLOToHLOPreprocessing.cpp` * Only added to the passManager within `compiler/Dialect/Flow/Transforms/Passes.cpp` * Also/Already declared in `compiler/Dialect/Flow/Transforms/Passes.h` * Further, adjusts define guards to match Google C++ Style Guide Closes https://github.com/google/iree/pull/1634 COPYBARA_INTEGRATE_REVIEW=https://github.com/google/iree/pull/1634 from iml130:codegenpasses-alwayslink 5bd6499f74c41394e7a4ea5fd16fb5b41123d29e PiperOrigin-RevId: 308267203
diff --git a/iree/compiler/Translation/CodegenPasses/BUILD b/iree/compiler/Translation/CodegenPasses/BUILD index ed2fb6a..64b205d 100644 --- a/iree/compiler/Translation/CodegenPasses/BUILD +++ b/iree/compiler/Translation/CodegenPasses/BUILD
@@ -65,5 +65,4 @@ "@org_tensorflow//tensorflow/compiler/mlir/xla:hlo", "@org_tensorflow//tensorflow/compiler/mlir/xla:map_xla_to_scalar_op", ], - alwayslink = 1, )
diff --git a/iree/compiler/Translation/CodegenPasses/CMakeLists.txt b/iree/compiler/Translation/CodegenPasses/CMakeLists.txt index 1d25247..97bf010 100644 --- a/iree/compiler/Translation/CodegenPasses/CMakeLists.txt +++ b/iree/compiler/Translation/CodegenPasses/CMakeLists.txt
@@ -54,6 +54,5 @@ iree::compiler::Dialect::IREE::IR iree::compiler::Translation::CodegenUtils tensorflow::mlir_xla - ALWAYSLINK PUBLIC )
diff --git a/iree/compiler/Translation/CodegenPasses/LinalgVectorTransform.cpp b/iree/compiler/Translation/CodegenPasses/LinalgVectorTransform.cpp index 303a9a8..b6e7f42 100644 --- a/iree/compiler/Translation/CodegenPasses/LinalgVectorTransform.cpp +++ b/iree/compiler/Translation/CodegenPasses/LinalgVectorTransform.cpp
@@ -41,5 +41,10 @@ "iree-linalg-vector-transforms", "Lower linalg to vector dialect"); } // namespace + +std::unique_ptr<FunctionPass> createIREELinalgVectorTransformPass() { + return std::make_unique<IREELinalgVectorTransformPass>(); +} + } // namespace iree_compiler } // namespace mlir
diff --git a/iree/compiler/Translation/CodegenPasses/Passes.h b/iree/compiler/Translation/CodegenPasses/Passes.h index 4e2396c..beedd52 100644 --- a/iree/compiler/Translation/CodegenPasses/Passes.h +++ b/iree/compiler/Translation/CodegenPasses/Passes.h
@@ -17,8 +17,8 @@ // IREE specific passes used in the XLA to Linalg conversion // //===----------------------------------------------------------------------===// -#ifndef IREE_COMPILER_TRANSLATION_CODEGENPASSES_PASSES_H -#define IREE_COMPILER_TRANSLATION_CODEGENPASSES_PASSES_H +#ifndef IREE_COMPILER_TRANSLATION_CODEGENPASSES_PASSES_H_ +#define IREE_COMPILER_TRANSLATION_CODEGENPASSES_PASSES_H_ #include <memory> #include "mlir/IR/Function.h" @@ -39,9 +39,6 @@ /// memrefs. std::unique_ptr<OperationPass<mlir::ModuleOp>> createHALInterfaceToMemrefPass(); -/// Creates XLA-HLO preprocessing transformation pass. -std::unique_ptr<OperationPass<FuncOp>> createHLOPreprocessingPass(); - /// Creates XLA-HLO to Linalg on buffers transformation pass. std::unique_ptr<OperationPass<FuncOp>> createHLOToLinalgOnBuffersPass(); @@ -52,6 +49,9 @@ /// producer consumer fusion. std::unique_ptr<OperationPass<FuncOp>> createLinalgOnTensorsFusionPass(); +/// Creates IREE Linalg Vector transformation pass. +std::unique_ptr<FunctionPass> createIREELinalgVectorTransformPass(); + /// Populates the patterns that convert from XLA to Linalg on tensors. Imports /// patterns from XLA, as well as some IREE specific modifications. void populateHLOToLinalgOnTensorsConversionPatterns( @@ -68,7 +68,16 @@ void populateHLOToLinalgOnTensorsConversionPatterns( MLIRContext *context, OwningRewritePatternList &patterns); +/// Register all Codegen passes +inline void registerCodegenPasses() { + createHALInterfaceToMemrefPass(); + createHLOToLinalgOnBuffersPass(); + createHLOToLinalgOnTensorsPass(); + createLinalgOnTensorsFusionPass(); + createIREELinalgVectorTransformPass(); +} + } // namespace iree_compiler } // namespace mlir -#endif // IREE_COMPILER_TRANSLATION_CODEGENPASSES_PASSES_H +#endif // IREE_COMPILER_TRANSLATION_CODEGENPASSES_PASSES_H_
diff --git a/iree/compiler/Translation/CodegenUtils/BUILD b/iree/compiler/Translation/CodegenUtils/BUILD index 6275b49..8bbd711 100644 --- a/iree/compiler/Translation/CodegenUtils/BUILD +++ b/iree/compiler/Translation/CodegenUtils/BUILD
@@ -35,5 +35,4 @@ "@llvm-project//mlir:StandardOps", "@llvm-project//mlir:Support", ], - alwayslink = 1, )
diff --git a/iree/compiler/Translation/CodegenUtils/CMakeLists.txt b/iree/compiler/Translation/CodegenUtils/CMakeLists.txt index 9ffe3d3..386ef54 100644 --- a/iree/compiler/Translation/CodegenUtils/CMakeLists.txt +++ b/iree/compiler/Translation/CodegenUtils/CMakeLists.txt
@@ -28,6 +28,5 @@ MLIRSupport iree::compiler::Dialect::HAL::IR iree::compiler::Dialect::IREE::IR - ALWAYSLINK PUBLIC )
diff --git a/iree/compiler/Translation/CodegenUtils/CodegenUtils.h b/iree/compiler/Translation/CodegenUtils/CodegenUtils.h index 014e745..affa51e 100644 --- a/iree/compiler/Translation/CodegenUtils/CodegenUtils.h +++ b/iree/compiler/Translation/CodegenUtils/CodegenUtils.h
@@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef IREE_COMPILER_TRANSLATION_CODEGENUTILS_CODEGENUTILS_H -#define IREE_COMPILER_TRANSLATION_CODEGENUTILS_CODEGENUTILS_H +#ifndef IREE_COMPILER_TRANSLATION_CODEGENUTILS_CODEGENUTILS_H_ +#define IREE_COMPILER_TRANSLATION_CODEGENUTILS_CODEGENUTILS_H_ #include "mlir/IR/Function.h" #include "mlir/Support/LogicalResult.h" @@ -53,4 +53,4 @@ } // namespace iree_compiler } // namespace mlir -#endif // IREE_COMPILER_TRANSLATION_CODEGENUTILS_CODEGENUTILS_H +#endif // IREE_COMPILER_TRANSLATION_CODEGENUTILS_CODEGENUTILS_H_
diff --git a/iree/tools/opt_main.cc b/iree/tools/opt_main.cc index b9a869a..560fb52 100644 --- a/iree/tools/opt_main.cc +++ b/iree/tools/opt_main.cc
@@ -17,6 +17,7 @@ // Based on mlir-opt but without registering passes and dialects we don't care // about. +#include "iree/compiler/Translation/CodegenPasses/Passes.h" #include "iree/compiler/Translation/SPIRV/init_translations.h" #include "iree/tools/init_compiler_modules.h" #include "iree/tools/init_dialects.h" @@ -70,6 +71,7 @@ mlir::iree_compiler::registerAllIreePasses(); mlir::iree_compiler::registerHALTargetBackends(); mlir::iree_compiler::registerSPRIVTranslation(); + mlir::iree_compiler::registerCodegenPasses(); llvm::InitLLVM y(argc, argv); // Register MLIRContext command-line options like