@@ -29,7 +29,7 @@ struct DependencyGraphTest : public testing::Test {
29
29
}
30
30
};
31
31
32
- TEST_F (DependencyGraphTest, MemDGNode ) {
32
+ TEST_F (DependencyGraphTest, DGNode_IsMem ) {
33
33
parseIR (C, R"IR(
34
34
declare void @llvm.sideeffect()
35
35
declare void @llvm.pseudoprobe(i64, i64, i32, i64)
@@ -66,16 +66,16 @@ define void @foo(i8 %v1, ptr %ptr) {
66
66
67
67
sandboxir::DependencyGraph DAG;
68
68
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 ( ));
79
79
}
80
80
81
81
TEST_F (DependencyGraphTest, Basic) {
@@ -115,100 +115,3 @@ define void @foo(ptr %ptr, i8 %v0, i8 %v1) {
115
115
EXPECT_THAT (N1->memPreds (), testing::ElementsAre (N0));
116
116
EXPECT_THAT (N2->memPreds (), testing::ElementsAre (N1));
117
117
}
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