6 #include <gtest/gtest.h>
18 TEST(ViewTests, TestDumpDot)
20 std::cout << std::endl <<
"### Test dump_dot ###" << std::endl << std::endl;
33 graph.GetRootRegion(),
38 auto f = lambda->finalize({ bitConstant });
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(), 0);
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);
58 TEST(ViewTests, TestDumpDotTheta)
71 graph.GetRootRegion(),
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);
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) });
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(), 0);
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);
TEST(ViewTests, TestDumpDot)
static std::unique_ptr< LlvmLambdaOperation > Create(std::shared_ptr< const jlm::rvsdg::FunctionType > type, std::string name, const jlm::llvm::Linkage &linkage, jlm::llvm::CallingConvention callingConvention, jlm::llvm::AttributeSet attributes)
static Output & create(Region ®ion, BitValueRepresentation value)
static std::shared_ptr< const BitType > Create(std::size_t nbits)
Creates bit type of specified width.
static std::shared_ptr< const FunctionType > Create(std::vector< std::shared_ptr< const jlm::rvsdg::Type >> argumentTypes, std::vector< std::shared_ptr< const jlm::rvsdg::Type >> resultTypes)
static GraphExport & Create(Output &origin, std::string name)
static LambdaNode * Create(rvsdg::Region &parent, std::unique_ptr< LambdaOperation > operation)
static Node & CreateNode(Output &predicate, const std::unordered_map< uint64_t, uint64_t > &mapping, const uint64_t defaultAlternative, const size_t numAlternatives)
static ThetaNode * create(rvsdg::Region *parent)
std::string ToDot(rvsdg::Region *region, std::unordered_map< rvsdg::Output *, ViewColors > &outputColor, std::unordered_map< rvsdg::Input *, ViewColors > &inputColor, std::unordered_map< rvsdg::Output *, ViewColors > &tailLabel)
Global memory state passed between functions.
std::string view(const rvsdg::Region *region)