annotate mlir/unittests/Parser/ResourceTest.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
236
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
1 //===- ResourceTest.cpp -----------------------------------------*- C++ -*-===//
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
2 //
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
3 // This file is licensed under the Apache License v2.0 with LLVM Exceptions.
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
6 //
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
8
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
9 #include "../../test/lib/Dialect/Test/TestAttributes.h"
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
10 #include "../../test/lib/Dialect/Test/TestDialect.h"
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
11 #include "mlir/Parser/Parser.h"
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
12
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
13 #include "gmock/gmock.h"
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
14
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
15 using namespace mlir;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
16
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
17 namespace {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
18 TEST(MLIRParser, ResourceKeyConflict) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
19 std::string moduleStr = R"mlir(
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
20 "test.use1"() {attr = #test.e1di64_elements<blob1> : tensor<3xi64> } : () -> ()
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
21
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
22 {-#
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
23 dialect_resources: {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
24 test: {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
25 blob1: "0x08000000010000000000000002000000000000000300000000000000"
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
26 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
27 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
28 #-}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
29 )mlir";
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
30 std::string moduleStr2 = R"mlir(
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
31 "test.use2"() {attr = #test.e1di64_elements<blob1> : tensor<3xi64> } : () -> ()
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
32
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
33 {-#
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
34 dialect_resources: {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
35 test: {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
36 blob1: "0x08000000040000000000000005000000000000000600000000000000"
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
37 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
38 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
39 #-}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
40 )mlir";
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
41
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
42 MLIRContext context;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
43 context.loadDialect<test::TestDialect>();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
44
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
45 // Parse both modules into the same context so that we ensure the conflicting
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
46 // resources have been loaded.
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
47 OwningOpRef<ModuleOp> module1 =
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
48 parseSourceString<ModuleOp>(moduleStr, &context);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
49 OwningOpRef<ModuleOp> module2 =
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
50 parseSourceString<ModuleOp>(moduleStr2, &context);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
51 ASSERT_TRUE(module1 && module2);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
52
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
53 // Merge the two modules so that we can test printing the remapped resources.
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
54 Block *block = module1->getBody();
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
55 block->getOperations().splice(block->end(),
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
56 module2->getBody()->getOperations());
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
57
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
58 // Check that conflicting resources were remapped.
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
59 std::string outputStr;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
60 {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
61 llvm::raw_string_ostream os(outputStr);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
62 module1->print(os);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
63 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
64 StringRef output(outputStr);
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
65 EXPECT_TRUE(
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
66 output.contains("\"test.use1\"() {attr = #test.e1di64_elements<blob1>"));
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
67 EXPECT_TRUE(output.contains(
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
68 "blob1: \"0x08000000010000000000000002000000000000000300000000000000\""));
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
69 EXPECT_TRUE(output.contains(
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
70 "\"test.use2\"() {attr = #test.e1di64_elements<blob1_1>"));
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
71 EXPECT_TRUE(output.contains(
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
72 "blob1_1: "
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
73 "\"0x08000000040000000000000005000000000000000600000000000000\""));
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
74 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
75 } // namespace