annotate mlir/unittests/TableGen/PassGenTest.cpp @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents c4bab56944e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 //===- PassGenTest.cpp - TableGen PassGen Tests ---------------------------===//
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 //
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 //
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 #include "mlir/Pass/Pass.h"
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
10 #include "llvm/ADT/STLExtras.h"
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 #include "gmock/gmock.h"
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
14 std::unique_ptr<mlir::Pass> createTestPassWithCustomConstructor(int v = 0);
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
16 #define GEN_PASS_DECL
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 #define GEN_PASS_REGISTRATION
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 #include "PassGenTest.h.inc"
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
20 #define GEN_PASS_DEF_TESTPASS
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
21 #define GEN_PASS_DEF_TESTPASSWITHOPTIONS
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
22 #define GEN_PASS_DEF_TESTPASSWITHCUSTOMCONSTRUCTOR
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 #include "PassGenTest.h.inc"
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
25 struct TestPass : public impl::TestPassBase<TestPass> {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
26 using TestPassBase::TestPassBase;
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 void runOnOperation() override {}
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 std::unique_ptr<mlir::Pass> clone() const {
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 return TestPassBase<TestPass>::clone();
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 }
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 };
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
35 TEST(PassGenTest, defaultGeneratedConstructor) {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
36 std::unique_ptr<mlir::Pass> pass = createTestPass();
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
37 EXPECT_TRUE(pass.get() != nullptr);
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 }
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 TEST(PassGenTest, PassClone) {
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 mlir::MLIRContext context;
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 const auto unwrap = [](const std::unique_ptr<mlir::Pass> &pass) {
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 return static_cast<const TestPass *>(pass.get());
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 };
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
236
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
47 const auto origPass = createTestPass();
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
48 const auto clonePass = unwrap(origPass)->clone();
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
49
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
50 EXPECT_TRUE(clonePass.get() != nullptr);
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
51 EXPECT_TRUE(origPass.get() != clonePass.get());
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
52 }
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
53
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
54 struct TestPassWithOptions
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
55 : public impl::TestPassWithOptionsBase<TestPassWithOptions> {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
56 using TestPassWithOptionsBase::TestPassWithOptionsBase;
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
57
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
58 void runOnOperation() override {}
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
59
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
60 std::unique_ptr<mlir::Pass> clone() const {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
61 return TestPassWithOptionsBase<TestPassWithOptions>::clone();
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
62 }
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
63
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
64 int getTestOption() const { return testOption; }
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
65
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
66 llvm::ArrayRef<int64_t> getTestListOption() const { return testListOption; }
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
67 };
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
68
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
69 TEST(PassGenTest, PassOptions) {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
70 mlir::MLIRContext context;
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
71
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
72 TestPassWithOptionsOptions options;
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
73 options.testOption = 57;
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
74
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
75 llvm::SmallVector<int64_t, 2> testListOption = {1, 2};
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
76 options.testListOption = testListOption;
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
77
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
78 const auto unwrap = [](const std::unique_ptr<mlir::Pass> &pass) {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
79 return static_cast<const TestPassWithOptions *>(pass.get());
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
80 };
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
81
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
82 const auto pass = createTestPassWithOptions(options);
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
83
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
84 EXPECT_EQ(unwrap(pass)->getTestOption(), 57);
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
85 EXPECT_EQ(unwrap(pass)->getTestListOption()[0], 1);
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
86 EXPECT_EQ(unwrap(pass)->getTestListOption()[1], 2);
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
87 }
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
88
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
89 struct TestPassWithCustomConstructor
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
90 : public impl::TestPassWithCustomConstructorBase<
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
91 TestPassWithCustomConstructor> {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
92 explicit TestPassWithCustomConstructor(int v) : extraVal(v) {}
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
93
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
94 void runOnOperation() override {}
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
95
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
96 std::unique_ptr<mlir::Pass> clone() const {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
97 return TestPassWithCustomConstructorBase<
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
98 TestPassWithCustomConstructor>::clone();
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
99 }
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
100
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
101 unsigned int extraVal = 23;
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
102 };
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
103
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
104 std::unique_ptr<mlir::Pass> createTestPassWithCustomConstructor(int v) {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
105 return std::make_unique<TestPassWithCustomConstructor>(v);
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
106 }
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
107
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
108 TEST(PassGenTest, PassCloneWithCustomConstructor) {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
109 mlir::MLIRContext context;
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
110
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
111 const auto unwrap = [](const std::unique_ptr<mlir::Pass> &pass) {
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
112 return static_cast<const TestPassWithCustomConstructor *>(pass.get());
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
113 };
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
114
c4bab56944e8 LLVM 16
kono
parents: 223
diff changeset
115 const auto origPass = createTestPassWithCustomConstructor(10);
223
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 const auto clonePass = unwrap(origPass)->clone();
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 EXPECT_EQ(unwrap(origPass)->extraVal, unwrap(clonePass)->extraVal);
5f17cb93ff66 LLVM13 (2021/7/18)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 }