18TEST(ViewTests, TestDumpDot)
20 std::cout << std::endl <<
"### Test dump_dot ###" << std::endl << std::endl;
27 auto b32 = rvsdg::BitType::Create(32);
28 auto ft = rvsdg::FunctionType::Create({}, { b32 });
32 auto lambda = rvsdg::LambdaNode::Create(
33 graph.GetRootRegion(),
34 LlvmLambdaOperation::Create(ft,
"f", Linkage::externalLinkage));
36 auto bitConstant = &rvsdg::BitConstantOperation::create(*lambda->subregion(), { 32, 0 });
38 auto f = lambda->finalize({ bitConstant });
39 rvsdg::GraphExport::Create(*f,
"");
41 rvsdg::view(graph, stdout);
43 std::unordered_map<rvsdg::Output *, ViewColors> outputColor;
44 std::unordered_map<rvsdg::Input *, ViewColors> inputColor;
45 std::unordered_map<rvsdg::Output *, ViewColors> tailLabel;
48 auto dotOutput = ToDot(lambda->region(), outputColor, inputColor, tailLabel);
51 EXPECT_GT(dotOutput.size(), 0u);
52 EXPECT_NE(dotOutput.find(
"digraph G {"), std::string::npos);
53 EXPECT_NE(dotOutput.find(
"subgraph cluster_"), std::string::npos);
54 EXPECT_NE(dotOutput.find(
"tooltip=\"bit32\""), std::string::npos);
55 EXPECT_NE(dotOutput.find(
"BITS32_0_"), std::string::npos);
58TEST(ViewTests, TestDumpDotTheta)
65 auto b32 = rvsdg::BitType::Create(32);
66 auto ft = rvsdg::FunctionType::Create({ b32, b32, b32 }, { b32, b32, b32 });
70 auto lambda = rvsdg::LambdaNode::Create(
71 graph.GetRootRegion(),
72 LlvmLambdaOperation::Create(ft,
"f", Linkage::externalLinkage));
74 auto theta = rvsdg::ThetaNode::create(lambda->subregion());
75 auto idv = theta->AddLoopVar(lambda->GetFunctionArguments()[0]);
76 auto lvs = theta->AddLoopVar(lambda->GetFunctionArguments()[1]);
77 auto lve = theta->AddLoopVar(lambda->GetFunctionArguments()[2]);
79 auto arm = rvsdg::CreateOpNode<rvsdg::bitadd_op>({ idv.pre, lvs.pre }, 32).output(0);
80 auto cmp = rvsdg::CreateOpNode<rvsdg::bitult_op>({ arm, lve.pre }, 32).output(0);
81 auto & matchNode = rvsdg::MatchOperation::CreateNode(*cmp, { { 1, 1 } }, 0, 2);
83 idv.post->divert_to(arm);
84 theta->set_predicate(matchNode.output(0));
86 auto f = lambda->finalize({ theta->output(0), theta->output(1), theta->output(2) });
87 rvsdg::GraphExport::Create(*f,
"");
89 rvsdg::view(graph, stdout);
91 std::unordered_map<rvsdg::Output *, ViewColors> outputColor;
92 std::unordered_map<rvsdg::Input *, ViewColors> inputColor;
93 std::unordered_map<rvsdg::Output *, ViewColors> tailLabel;
95 auto dotOutput = ToDot(lambda->region(), outputColor, inputColor, tailLabel);
98 EXPECT_GT(dotOutput.size(), 0u);
99 EXPECT_NE(dotOutput.find(
"digraph G {"), std::string::npos);
100 EXPECT_NE(dotOutput.find(
"subgraph cluster_"), std::string::npos);
101 EXPECT_NE(dotOutput.find(
"tooltip=\"bit32\""), std::string::npos);
102 EXPECT_NE(dotOutput.find(
"tooltip=\"ctl(2)\""), std::string::npos);