Lines Matching full:linalg

1 //===- TestLinalgElementwiseFusion.cpp - Test Linalg elementwise fusion ---===//
10 // Linalg, mainly linalg options.
16 #include "mlir/Dialect/Linalg/Transforms/Transforms.h"
28 .Case<linalg::LinalgOp>([&](linalg::LinalgOp linalgOp) {
57 struct TestMultiUseProducerFusion : public OpRewritePattern<linalg::GenericOp> {
58 using OpRewritePattern<linalg::GenericOp>::OpRewritePattern;
60 LogicalResult matchAndRewrite(linalg::GenericOp genericOp,
64 if (linalg::areElementwiseOpsFusable(&operand)) {
72 std::optional<linalg::ElementwiseOpFusionResult> fusionResult =
73 linalg::fuseElementwiseOps(rewriter, fusableOperand);
95 registry.insert<affine::AffineDialect, linalg::LinalgDialect,
99 return "test-linalg-elementwise-fusion-patterns";
102 return "Test Linalg element wise operation fusion patterns";
130 llvm::cl::desc("Test linalg expand_shape -> generic fusion patterns that "
136 llvm::cl::desc("Test controlling the linalg expand_shape -> generic "
157 linalg::populateElementwiseOpsFusionPatterns(fusionPatterns, controlFn);
166 linalg::populateElementwiseOpsFusionPatterns(fusionPatterns,
177 linalg::populateFoldReshapeOpsByExpansionPatterns(
188 linalg::ControlFusionFn controlReshapeFusionFn =
195 if (!collapseOp.getSrc().getDefiningOp<linalg::LinalgOp>()) {
204 auto linalgOp = dyn_cast<linalg::LinalgOp>(use.getOwner());
213 linalg::populateFoldReshapeOpsByExpansionPatterns(fusionPatterns,
223 linalg::populateFoldReshapeOpsByCollapsingPatterns(
232 linalg::ControlFusionFn controlFn = [](OpOperand *fusedOperand) -> bool {
240 linalg::populateFoldReshapeOpsByCollapsingPatterns(patterns, controlFn);
257 linalg::GetCollapsableDimensionsFn collapseFn =
258 [&dims](linalg::LinalgOp op) {
264 linalg::populateCollapseDimensions(patterns, collapseFn);