@@ -29,7 +29,7 @@ struct DependencyGraphTest : public testing::Test {
2929 }
3030};
3131
32- TEST_F (DependencyGraphTest, MemDGNode ) {
32+ TEST_F (DependencyGraphTest, DGNode_IsMem ) {
3333 parseIR (C, R"IR(
3434declare void @llvm.sideeffect()
3535declare void @llvm.pseudoprobe(i64, i64, i32, i64)
@@ -66,16 +66,16 @@ define void @foo(i8 %v1, ptr %ptr) {
6666
6767 sandboxir::DependencyGraph DAG;
6868 DAG.extend ({&*BB->begin (), BB->getTerminator ()});
69- EXPECT_TRUE (isa<llvm::sandboxir::MemDGNode>( DAG.getNode (Store)));
70- EXPECT_TRUE (isa<llvm::sandboxir::MemDGNode>( DAG.getNode (Load)));
71- EXPECT_FALSE (isa<llvm::sandboxir::MemDGNode>( DAG.getNode (Add)));
72- EXPECT_TRUE (isa<llvm::sandboxir::MemDGNode>( DAG.getNode (StackSave)));
73- EXPECT_TRUE (isa<llvm::sandboxir::MemDGNode>( DAG.getNode (StackRestore)));
74- EXPECT_FALSE (isa<llvm::sandboxir::MemDGNode>( DAG.getNode (SideEffect)));
75- EXPECT_FALSE (isa<llvm::sandboxir::MemDGNode>( DAG.getNode (PseudoProbe)));
76- EXPECT_TRUE (isa<llvm::sandboxir::MemDGNode>( DAG.getNode (FakeUse)));
77- EXPECT_TRUE (isa<llvm::sandboxir::MemDGNode>( DAG.getNode (Call)));
78- EXPECT_FALSE (isa<llvm::sandboxir::MemDGNode>( DAG.getNode (Ret)));
69+ EXPECT_TRUE (DAG.getNode (Store)-> isMem ( ));
70+ EXPECT_TRUE (DAG.getNode (Load)-> isMem ( ));
71+ EXPECT_FALSE (DAG.getNode (Add)-> isMem ( ));
72+ EXPECT_TRUE (DAG.getNode (StackSave)-> isMem ( ));
73+ EXPECT_TRUE (DAG.getNode (StackRestore)-> isMem ( ));
74+ EXPECT_FALSE (DAG.getNode (SideEffect)-> isMem ( ));
75+ EXPECT_FALSE (DAG.getNode (PseudoProbe)-> isMem ( ));
76+ EXPECT_TRUE (DAG.getNode (FakeUse)-> isMem ( ));
77+ EXPECT_TRUE (DAG.getNode (Call)-> isMem ( ));
78+ EXPECT_FALSE (DAG.getNode (Ret)-> isMem ( ));
7979}
8080
8181TEST_F (DependencyGraphTest, Basic) {
@@ -115,100 +115,3 @@ define void @foo(ptr %ptr, i8 %v0, i8 %v1) {
115115 EXPECT_THAT (N1->memPreds (), testing::ElementsAre (N0));
116116 EXPECT_THAT (N2->memPreds (), testing::ElementsAre (N1));
117117}
118-
119- TEST_F (DependencyGraphTest, MemDGNode_getPrevNode_getNextNode) {
120- parseIR (C, R"IR(
121- define void @foo(ptr %ptr, i8 %v0, i8 %v1) {
122- store i8 %v0, ptr %ptr
123- add i8 %v0, %v0
124- store i8 %v1, ptr %ptr
125- ret void
126- }
127- )IR" );
128- llvm::Function *LLVMF = &*M->getFunction (" foo" );
129- sandboxir::Context Ctx (C);
130- auto *F = Ctx.createFunction (LLVMF);
131- auto *BB = &*F->begin ();
132- auto It = BB->begin ();
133- auto *S0 = cast<sandboxir::StoreInst>(&*It++);
134- [[maybe_unused]] auto *Add = cast<sandboxir::BinaryOperator>(&*It++);
135- auto *S1 = cast<sandboxir::StoreInst>(&*It++);
136- [[maybe_unused]] auto *Ret = cast<sandboxir::ReturnInst>(&*It++);
137-
138- sandboxir::DependencyGraph DAG;
139- DAG.extend ({&*BB->begin (), BB->getTerminator ()});
140-
141- auto *S0N = cast<sandboxir::MemDGNode>(DAG.getNode (S0));
142- auto *S1N = cast<sandboxir::MemDGNode>(DAG.getNode (S1));
143-
144- EXPECT_EQ (S0N->getPrevNode (), nullptr );
145- EXPECT_EQ (S0N->getNextNode (), S1N);
146-
147- EXPECT_EQ (S1N->getPrevNode (), S0N);
148- EXPECT_EQ (S1N->getNextNode (), nullptr );
149- }
150-
151- TEST_F (DependencyGraphTest, DGNodeRange) {
152- parseIR (C, R"IR(
153- define void @foo(ptr %ptr, i8 %v0, i8 %v1) {
154- add i8 %v0, %v0
155- store i8 %v0, ptr %ptr
156- add i8 %v0, %v0
157- store i8 %v1, ptr %ptr
158- ret void
159- }
160- )IR" );
161- llvm::Function *LLVMF = &*M->getFunction (" foo" );
162- sandboxir::Context Ctx (C);
163- auto *F = Ctx.createFunction (LLVMF);
164- auto *BB = &*F->begin ();
165- auto It = BB->begin ();
166- auto *Add0 = cast<sandboxir::BinaryOperator>(&*It++);
167- auto *S0 = cast<sandboxir::StoreInst>(&*It++);
168- auto *Add1 = cast<sandboxir::BinaryOperator>(&*It++);
169- auto *S1 = cast<sandboxir::StoreInst>(&*It++);
170- auto *Ret = cast<sandboxir::ReturnInst>(&*It++);
171-
172- sandboxir::DependencyGraph DAG;
173- DAG.extend ({&*BB->begin (), BB->getTerminator ()});
174-
175- auto *S0N = cast<sandboxir::MemDGNode>(DAG.getNode (S0));
176- auto *S1N = cast<sandboxir::MemDGNode>(DAG.getNode (S1));
177-
178- // Check empty range.
179- EXPECT_THAT (sandboxir::MemDGNodeIntervalBuilder::makeEmpty (),
180- testing::ElementsAre ());
181-
182- // Returns the pointers in Range.
183- auto getPtrVec = [](const auto &Range) {
184- SmallVector<const sandboxir::DGNode *> Vec;
185- for (const sandboxir::DGNode &N : Range)
186- Vec.push_back (&N);
187- return Vec;
188- };
189- // Both TopN and BotN are memory.
190- EXPECT_THAT (
191- getPtrVec (sandboxir::MemDGNodeIntervalBuilder::make ({S0, S1}, DAG)),
192- testing::ElementsAre (S0N, S1N));
193- // Only TopN is memory.
194- EXPECT_THAT (
195- getPtrVec (sandboxir::MemDGNodeIntervalBuilder::make ({S0, Ret}, DAG)),
196- testing::ElementsAre (S0N, S1N));
197- EXPECT_THAT (
198- getPtrVec (sandboxir::MemDGNodeIntervalBuilder::make ({S0, Add1}, DAG)),
199- testing::ElementsAre (S0N));
200- // Only BotN is memory.
201- EXPECT_THAT (
202- getPtrVec (sandboxir::MemDGNodeIntervalBuilder::make ({Add0, S1}, DAG)),
203- testing::ElementsAre (S0N, S1N));
204- EXPECT_THAT (
205- getPtrVec (sandboxir::MemDGNodeIntervalBuilder::make ({Add0, S0}, DAG)),
206- testing::ElementsAre (S0N));
207- // Neither TopN or BotN is memory.
208- EXPECT_THAT (
209- getPtrVec (sandboxir::MemDGNodeIntervalBuilder::make ({Add0, Ret}, DAG)),
210- testing::ElementsAre (S0N, S1N));
211- EXPECT_THAT (
212- getPtrVec (sandboxir::MemDGNodeIntervalBuilder::make ({Add0, Add0}, DAG)),
213- testing::ElementsAre ());
214- }
0 commit comments