13bcaf2ebSGeorgios Pinitas //===- TosaOptionalDecompositions.cpp -------------------------------------===// 2dfd07082SAaron DeBattista // 3dfd07082SAaron DeBattista // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4dfd07082SAaron DeBattista // See https://llvm.org/LICENSE.txt for license information. 5dfd07082SAaron DeBattista // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6dfd07082SAaron DeBattista // 7dfd07082SAaron DeBattista //===----------------------------------------------------------------------===// 8dfd07082SAaron DeBattista // 9dfd07082SAaron DeBattista // Pass to apply the Tosa operations decompositions 10dfd07082SAaron DeBattista // exposed as populate functions in 11dfd07082SAaron DeBattista // include/mlir/Dialect/Tosa/Transforms/Passes.h 12dfd07082SAaron DeBattista // 13dfd07082SAaron DeBattista //===----------------------------------------------------------------------===// 14dfd07082SAaron DeBattista 15039b969bSMichele Scuttari #include "mlir/Dialect/Tosa/Transforms/Passes.h" 1667d0d7acSMichele Scuttari 1767d0d7acSMichele Scuttari #include "mlir/Dialect/Func/IR/FuncOps.h" 1867d0d7acSMichele Scuttari #include "mlir/Dialect/Tosa/IR/TosaOps.h" 19dfd07082SAaron DeBattista #include "mlir/Pass/Pass.h" 20dfd07082SAaron DeBattista #include "mlir/Transforms/GreedyPatternRewriteDriver.h" 21dfd07082SAaron DeBattista 2267d0d7acSMichele Scuttari namespace mlir { 2367d0d7acSMichele Scuttari namespace tosa { 2467d0d7acSMichele Scuttari #define GEN_PASS_DEF_TOSAOPTIONALDECOMPOSITIONS 2567d0d7acSMichele Scuttari #include "mlir/Dialect/Tosa/Transforms/Passes.h.inc" 2667d0d7acSMichele Scuttari } // namespace tosa 2767d0d7acSMichele Scuttari } // namespace mlir 2867d0d7acSMichele Scuttari 29dfd07082SAaron DeBattista using namespace mlir; 30dfd07082SAaron DeBattista 31dfd07082SAaron DeBattista namespace { 32dfd07082SAaron DeBattista 33039b969bSMichele Scuttari struct TosaOptionalDecompositions 3467d0d7acSMichele Scuttari : public tosa::impl::TosaOptionalDecompositionsBase< 3567d0d7acSMichele Scuttari TosaOptionalDecompositions> { 3641574554SRiver Riddle void runOnOperation() override { 37dfd07082SAaron DeBattista auto *ctx = &getContext(); 38dfd07082SAaron DeBattista RewritePatternSet patterns(ctx); 3941574554SRiver Riddle auto func = getOperation(); 40dfd07082SAaron DeBattista 41dfd07082SAaron DeBattista mlir::tosa::populateTosaDecomposeConv2D(ctx, patterns); 42dfd07082SAaron DeBattista mlir::tosa::populateTosaDecomposeTransposeConv(ctx, patterns); 43dfd07082SAaron DeBattista mlir::tosa::populateTosaDecomposeDepthwise(ctx, patterns); 44dfd07082SAaron DeBattista 45*09dfc571SJacques Pienaar if (applyPatternsGreedily(func, std::move(patterns)).failed()) 46dfd07082SAaron DeBattista signalPassFailure(); 47dfd07082SAaron DeBattista } 48dfd07082SAaron DeBattista }; 49dfd07082SAaron DeBattista 50dfd07082SAaron DeBattista } // namespace 51039b969bSMichele Scuttari 52039b969bSMichele Scuttari std::unique_ptr<Pass> mlir::tosa::createTosaOptionalDecompositions() { 53039b969bSMichele Scuttari return std::make_unique<TosaOptionalDecompositions>(); 54039b969bSMichele Scuttari } 55