14TEST(PhiTests, TestPhiCreation)
21 auto iOStateType = IOStateType::Create();
22 auto memoryStateType = MemoryStateType::Create();
24 { vtype, IOStateType::Create(), MemoryStateType::Create() },
25 { IOStateType::Create(), MemoryStateType::Create() });
27 { vtype, IOStateType::Create(), MemoryStateType::Create() },
28 { vtype, IOStateType::Create(), MemoryStateType::Create() });
34 LlvmLambdaOperation::Create(f0type, name, Linkage::externalLinkage));
35 auto iOStateArgument = lambda->GetFunctionArguments()[1];
36 auto memoryStateArgument = lambda->GetFunctionArguments()[2];
38 return lambda->finalize({ iOStateArgument, memoryStateArgument });
45 LlvmLambdaOperation::Create(f1type,
"f2", Linkage::externalLinkage));
46 auto ctxVarF2 = lambda->AddContextVar(*f2).inner;
47 auto valueArgument = lambda->GetFunctionArguments()[0];
48 auto iOStateArgument = lambda->GetFunctionArguments()[1];
49 auto memoryStateArgument = lambda->GetFunctionArguments()[2];
51 auto callResults = CallOperation::Create(
54 { valueArgument, iOStateArgument, memoryStateArgument });
56 return lambda->finalize(callResults);
65 auto lambdaOutput0 = SetupEmptyLambda(pb.
subregion(),
"f0");
66 auto lambdaOutput1 = SetupEmptyLambda(pb.
subregion(),
"f1");
67 auto lambdaOutput2 = SetupF2(pb.
subregion(), rv3.recref);
69 rv1.result->divert_to(lambdaOutput0);
70 rv2.result->divert_to(lambdaOutput1);
71 rv3.result->divert_to(lambdaOutput2);