Files
clang-p2996/mlir/test/lib/Transforms/TestLinalgTransforms.cpp
Mehdi Amini c64770506b Remove static registration for dialects, and the "alwayslink" hack for passes
In the previous state, we were relying on forcing the linker to include
all libraries in the final binary and the global initializer to self-register
every piece of the system. This change help moving away from this model, and
allow users to compose pieces more freely. The current change is only "fixing"
the dialect registration and avoiding relying on "whole link" for the passes.
The translation is still relying on the global registry, and some refactoring
is needed to make this all more convenient.

Differential Revision: https://reviews.llvm.org/D74461
2020-02-12 09:13:02 +00:00

57 lines
1.7 KiB
C++

//===- TestLinalgTransforms.cpp - Test Linalg transformation patterns -----===//
//
// Part of the LLVM Project, 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 implements logic for testing Linalg transformations.
//
//===----------------------------------------------------------------------===//
#include "mlir/Dialect/Linalg/IR/LinalgOps.h"
#include "mlir/Dialect/Linalg/Transforms/LinalgTransforms.h"
#include "mlir/IR/PatternMatch.h"
#include "mlir/Pass/Pass.h"
using namespace mlir;
using namespace mlir::linalg;
namespace mlir {
namespace linalg {
namespace {
#include "TestLinalgTransformPatterns.h.inc"
} // end namespace
} // end namespace linalg
} // end namespace mlir
namespace {
struct TestLinalgTransforms : public FunctionPass<TestLinalgTransforms> {
void runOnFunction() override;
};
} // end anonymous namespace
/// Apply transformations specified as patterns.
void TestLinalgTransforms::runOnFunction() {
OwningRewritePatternList patterns;
auto funcOp = getFunction();
// Add the generated patterns to the list.
linalg::populateWithGenerated(&getContext(), &patterns);
applyPatternsGreedily(funcOp, patterns);
// Drop the marker.
funcOp.walk([](LinalgOp op) {
op.removeAttr(LinalgTransforms::kLinalgTransformMarker);
});
}
namespace mlir {
void registerTestLinalgTransforms() {
PassRegistration<TestLinalgTransforms>(
"test-linalg-transform-patterns",
"Test Linalg transformation patterns by applying them greedily.");
}
} // namespace mlir