brintos

brintos / llvm-project-archived public Read only

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