17TEST(SinkInsertionTests, SinkInsertion)
25 auto valueType = TestType::createValueType();
26 auto functionType = FunctionType::Create({ valueType }, { valueType });
29 auto & rvsdg = rvsdgModule.Rvsdg();
32 rvsdg.GetRootRegion(),
33 LlvmLambdaOperation::Create(functionType,
"f", Linkage::externalLinkage));
34 auto argument = lambdaNode->GetFunctionArguments()[0];
36 auto structuralNode = TestStructuralNode::create(lambdaNode->subregion(), 1);
37 const auto inputVar0 = structuralNode->addInputWithArguments(*argument);
38 const auto inputVar1 = structuralNode->addInputWithArguments(*argument);
40 const auto outputVar0 = structuralNode->addOutputWithResults({ inputVar1.argument[0] });
41 const auto outputVar1 = structuralNode->addOutputWithResults({ inputVar1.argument[0] });
43 auto lambdaOutput = lambdaNode->finalize({ outputVar1.output });
55 EXPECT_EQ(structuralNode->subregion(0)->numNodes(), 1u);
56 EXPECT_EQ(lambdaNode->subregion()->numNodes(), 2u);
60 EXPECT_EQ(outputVar0.output->nusers(), 1u);
61 EXPECT_TRUE(IsOwnerNodeOperation<SinkOperation>(*outputVar0.output->Users().begin()));
66 auto & i0Argument = *inputVar0.argument[0];
67 EXPECT_EQ(i0Argument.nusers(), 1u);
68 EXPECT_TRUE(IsOwnerNodeOperation<SinkOperation>(*i0Argument.Users().begin()));