1d658a4bbSMogball //===- PatternMatchTest.cpp - PatternMatch unit tests ---------------------===//
2d658a4bbSMogball //
3d658a4bbSMogball // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4d658a4bbSMogball // See https://llvm.org/LICENSE.txt for license information.
5d658a4bbSMogball // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6d658a4bbSMogball //
7d658a4bbSMogball //===----------------------------------------------------------------------===//
8d658a4bbSMogball
9d658a4bbSMogball #include "mlir/IR/PatternMatch.h"
10d658a4bbSMogball #include "gtest/gtest.h"
11d658a4bbSMogball
12d658a4bbSMogball #include "../../test/lib/Dialect/Test/TestDialect.h"
13*e95e94adSJeff Niu #include "../../test/lib/Dialect/Test/TestOps.h"
14d658a4bbSMogball
15d658a4bbSMogball using namespace mlir;
16d658a4bbSMogball
17d658a4bbSMogball namespace {
18d658a4bbSMogball struct AnOpRewritePattern : OpRewritePattern<test::OpA> {
AnOpRewritePattern__anon4ae64e8d0111::AnOpRewritePattern19d658a4bbSMogball AnOpRewritePattern(MLIRContext *context)
20d658a4bbSMogball : OpRewritePattern(context, /*benefit=*/1,
21d658a4bbSMogball /*generatedNames=*/{test::OpB::getOperationName()}) {}
22d658a4bbSMogball };
TEST(OpRewritePatternTest,GetGeneratedNames)23d658a4bbSMogball TEST(OpRewritePatternTest, GetGeneratedNames) {
24d658a4bbSMogball MLIRContext context;
25d658a4bbSMogball AnOpRewritePattern pattern(&context);
26d658a4bbSMogball ArrayRef<OperationName> ops = pattern.getGeneratedOps();
27d658a4bbSMogball
28d658a4bbSMogball ASSERT_EQ(ops.size(), 1u);
29d658a4bbSMogball ASSERT_EQ(ops.front().getStringRef(), test::OpB::getOperationName());
30d658a4bbSMogball }
31d658a4bbSMogball } // end anonymous namespace
32d9f645feSChenguang Wang
33d9f645feSChenguang Wang namespace {
anOpRewritePatternFunc(test::OpA op,PatternRewriter & rewriter)34d9f645feSChenguang Wang LogicalResult anOpRewritePatternFunc(test::OpA op, PatternRewriter &rewriter) {
35d9f645feSChenguang Wang return failure();
36d9f645feSChenguang Wang }
TEST(AnOpRewritePatternTest,PatternFuncAttributes)37d9f645feSChenguang Wang TEST(AnOpRewritePatternTest, PatternFuncAttributes) {
38d9f645feSChenguang Wang MLIRContext context;
39d9f645feSChenguang Wang RewritePatternSet patterns(&context);
40d9f645feSChenguang Wang
41d9f645feSChenguang Wang patterns.add(anOpRewritePatternFunc, /*benefit=*/3,
42d9f645feSChenguang Wang /*generatedNames=*/{test::OpB::getOperationName()});
4327839e1eSKazu Hirata ASSERT_EQ(patterns.getNativePatterns().size(), 1U);
44d9f645feSChenguang Wang auto &pattern = patterns.getNativePatterns().front();
45d9f645feSChenguang Wang ASSERT_EQ(pattern->getBenefit(), 3);
4627839e1eSKazu Hirata ASSERT_EQ(pattern->getGeneratedOps().size(), 1U);
47d9f645feSChenguang Wang ASSERT_EQ(pattern->getGeneratedOps().front().getStringRef(),
48d9f645feSChenguang Wang test::OpB::getOperationName());
49d9f645feSChenguang Wang }
50d9f645feSChenguang Wang } // end anonymous namespace
51