Skip to content

Commit f217fd2

Browse files
fhahnaokblast
authored andcommitted
[VPlan] Clarify naming for helpers to create loop&replicate regions (NFC)
Split off to clarify naming, as suggested in llvm#156262.
1 parent 37fb4ff commit f217fd2

File tree

7 files changed

+48
-42
lines changed

7 files changed

+48
-42
lines changed

llvm/lib/Transforms/Vectorize/VPlan.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -742,8 +742,12 @@ static std::pair<VPBlockBase *, VPBlockBase *> cloneFrom(VPBlockBase *Entry) {
742742

743743
VPRegionBlock *VPRegionBlock::clone() {
744744
const auto &[NewEntry, NewExiting] = cloneFrom(getEntry());
745-
auto *NewRegion = getPlan()->createVPRegionBlock(NewEntry, NewExiting,
746-
getName(), isReplicator());
745+
VPlan &Plan = *getPlan();
746+
VPRegionBlock *NewRegion =
747+
isReplicator()
748+
? Plan.createReplicateRegion(NewEntry, NewExiting, getName())
749+
: Plan.createLoopRegion(getName(), NewEntry, NewExiting);
750+
747751
for (VPBlockBase *Block : vp_depth_first_shallow(NewEntry))
748752
Block->setParent(NewRegion);
749753
return NewRegion;

llvm/lib/Transforms/Vectorize/VPlan.h

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4450,22 +4450,24 @@ class VPlan {
44504450
return VPB;
44514451
}
44524452

4453-
/// Create a new VPRegionBlock with \p Entry, \p Exiting and \p Name. If \p
4454-
/// IsReplicator is true, the region is a replicate region. The returned block
4455-
/// is owned by the VPlan and deleted once the VPlan is destroyed.
4456-
VPRegionBlock *createVPRegionBlock(VPBlockBase *Entry, VPBlockBase *Exiting,
4457-
const std::string &Name = "",
4458-
bool IsReplicator = false) {
4459-
auto *VPB = new VPRegionBlock(Entry, Exiting, Name, IsReplicator);
4453+
/// Create a new loop region with \p Name and entry and exiting blocks set
4454+
/// to \p Entry and \p Exiting respectively, if set. The returned block is
4455+
/// owned by the VPlan and deleted once the VPlan is destroyed.
4456+
VPRegionBlock *createLoopRegion(const std::string &Name = "",
4457+
VPBlockBase *Entry = nullptr,
4458+
VPBlockBase *Exiting = nullptr) {
4459+
auto *VPB = Entry ? new VPRegionBlock(Entry, Exiting, Name)
4460+
: new VPRegionBlock(Name);
44604461
CreatedBlocks.push_back(VPB);
44614462
return VPB;
44624463
}
44634464

4464-
/// Create a new loop VPRegionBlock with \p Name and entry and exiting blocks set
4465-
/// to nullptr. The returned block is owned by the VPlan and deleted once the
4466-
/// VPlan is destroyed.
4467-
VPRegionBlock *createVPRegionBlock(const std::string &Name = "") {
4468-
auto *VPB = new VPRegionBlock(Name);
4465+
/// Create a new replicate region with \p Entry, \p Exiting and \p Name. The
4466+
/// returned block is owned by the VPlan and deleted once the VPlan is
4467+
/// destroyed.
4468+
VPRegionBlock *createReplicateRegion(VPBlockBase *Entry, VPBlockBase *Exiting,
4469+
const std::string &Name = "") {
4470+
auto *VPB = new VPRegionBlock(Entry, Exiting, Name, true);
44694471
CreatedBlocks.push_back(VPB);
44704472
return VPB;
44714473
}

llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ static void createLoopRegion(VPlan &Plan, VPBlockBase *HeaderVPB) {
406406
// LatchExitVPB, taking care to preserve the original predecessor & successor
407407
// order of blocks. Set region entry and exiting after both HeaderVPB and
408408
// LatchVPBB have been disconnected from their predecessors/successors.
409-
auto *R = Plan.createVPRegionBlock();
409+
auto *R = Plan.createLoopRegion();
410410
VPBlockUtils::insertOnEdge(LatchVPBB, LatchExitVPB, R);
411411
VPBlockUtils::disconnectBlocks(LatchVPBB, R);
412412
VPBlockUtils::connectBlocks(PreheaderVPBB, R);

llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ static VPRegionBlock *createReplicateRegion(VPReplicateRecipe *PredRecipe,
372372
auto *Exiting =
373373
Plan.createVPBasicBlock(Twine(RegionName) + ".continue", PHIRecipe);
374374
VPRegionBlock *Region =
375-
Plan.createVPRegionBlock(Entry, Exiting, RegionName, true);
375+
Plan.createReplicateRegion(Entry, Exiting, RegionName);
376376

377377
// Note: first set Entry as region entry and then connect successors starting
378378
// from it in order, to propagate the "parent" of each VPBasicBlock.

llvm/unittests/Transforms/Vectorize/VPDomTreeTest.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ TEST_F(VPDominatorTreeTest, DominanceNoRegionsTest) {
3333
VPBasicBlock *VPBB2 = Plan.createVPBasicBlock("VPBB2");
3434
VPBasicBlock *VPBB3 = Plan.createVPBasicBlock("VPBB3");
3535
VPBasicBlock *VPBB4 = Plan.createVPBasicBlock("VPBB4");
36-
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB1, VPBB4);
36+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", VPBB1, VPBB4);
3737
VPBB2->setParent(R1);
3838
VPBB3->setParent(R1);
3939

@@ -99,7 +99,7 @@ TEST_F(VPDominatorTreeTest, DominanceRegionsTest) {
9999
VPBasicBlock *R1BB2 = Plan.createVPBasicBlock("");
100100
VPBasicBlock *R1BB3 = Plan.createVPBasicBlock("");
101101
VPBasicBlock *R1BB4 = Plan.createVPBasicBlock("");
102-
VPRegionBlock *R1 = Plan.createVPRegionBlock(R1BB1, R1BB4, "R1");
102+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", R1BB1, R1BB4);
103103
R1BB2->setParent(R1);
104104
R1BB3->setParent(R1);
105105
VPBlockUtils::connectBlocks(VPBB0, R1);
@@ -112,7 +112,7 @@ TEST_F(VPDominatorTreeTest, DominanceRegionsTest) {
112112

113113
VPBasicBlock *R2BB1 = Plan.createVPBasicBlock("");
114114
VPBasicBlock *R2BB2 = Plan.createVPBasicBlock("");
115-
VPRegionBlock *R2 = Plan.createVPRegionBlock(R2BB1, R2BB2, "R2");
115+
VPRegionBlock *R2 = Plan.createLoopRegion("R2", R2BB1, R2BB2);
116116
VPBlockUtils::connectBlocks(R2BB1, R2BB2);
117117
VPBlockUtils::connectBlocks(R1, R2);
118118

@@ -171,12 +171,12 @@ TEST_F(VPDominatorTreeTest, DominanceRegionsTest) {
171171
VPBasicBlock *R1BB1 = Plan.createVPBasicBlock("R1BB1");
172172
VPBasicBlock *R1BB2 = Plan.createVPBasicBlock("R1BB2");
173173
VPBasicBlock *R1BB3 = Plan.createVPBasicBlock("R1BB3");
174-
VPRegionBlock *R1 = Plan.createVPRegionBlock(R1BB1, R1BB3, "R1");
174+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", R1BB1, R1BB3);
175175

176176
VPBasicBlock *R2BB1 = Plan.createVPBasicBlock("R2BB1");
177177
VPBasicBlock *R2BB2 = Plan.createVPBasicBlock("R2BB2");
178178
VPBasicBlock *R2BB3 = Plan.createVPBasicBlock("R2BB#");
179-
VPRegionBlock *R2 = Plan.createVPRegionBlock(R2BB1, R2BB3, "R2");
179+
VPRegionBlock *R2 = Plan.createLoopRegion("R2", R2BB1, R2BB3);
180180
R2BB2->setParent(R2);
181181
VPBlockUtils::connectBlocks(R2BB1, R2BB2);
182182
VPBlockUtils::connectBlocks(R2BB2, R2BB1);

llvm/unittests/Transforms/Vectorize/VPlanTest.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ TEST_F(VPBasicBlockTest, getPlan) {
269269
// VPBasicBlock is the entry into the VPlan, followed by a region.
270270
VPBasicBlock *R1BB1 = Plan.createVPBasicBlock("");
271271
VPBasicBlock *R1BB2 = Plan.createVPBasicBlock("");
272-
VPRegionBlock *R1 = Plan.createVPRegionBlock(R1BB1, R1BB2, "R1");
272+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", R1BB1, R1BB2);
273273
VPBlockUtils::connectBlocks(R1BB1, R1BB2);
274274

275275
VPBlockUtils::connectBlocks(VPBB1, R1);
@@ -286,12 +286,12 @@ TEST_F(VPBasicBlockTest, getPlan) {
286286
VPlan &Plan = getPlan();
287287
VPBasicBlock *R1BB1 = Plan.createVPBasicBlock("");
288288
VPBasicBlock *R1BB2 = Plan.createVPBasicBlock("");
289-
VPRegionBlock *R1 = Plan.createVPRegionBlock(R1BB1, R1BB2, "R1");
289+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", R1BB1, R1BB2);
290290
VPBlockUtils::connectBlocks(R1BB1, R1BB2);
291291

292292
VPBasicBlock *R2BB1 = Plan.createVPBasicBlock("");
293293
VPBasicBlock *R2BB2 = Plan.createVPBasicBlock("");
294-
VPRegionBlock *R2 = Plan.createVPRegionBlock(R2BB1, R2BB2, "R2");
294+
VPRegionBlock *R2 = Plan.createLoopRegion("R2", R2BB1, R2BB2);
295295
VPBlockUtils::connectBlocks(R2BB1, R2BB2);
296296

297297
VPBasicBlock *VPBB1 = Plan.getEntry();
@@ -369,7 +369,7 @@ TEST_F(VPBasicBlockTest, TraversingIteratorTest) {
369369
VPBasicBlock *R1BB2 = Plan.createVPBasicBlock("");
370370
VPBasicBlock *R1BB3 = Plan.createVPBasicBlock("");
371371
VPBasicBlock *R1BB4 = Plan.createVPBasicBlock("");
372-
VPRegionBlock *R1 = Plan.createVPRegionBlock(R1BB1, R1BB4, "R1");
372+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", R1BB1, R1BB4);
373373
R1BB2->setParent(R1);
374374
R1BB3->setParent(R1);
375375
VPBlockUtils::connectBlocks(VPBB0, R1);
@@ -382,7 +382,7 @@ TEST_F(VPBasicBlockTest, TraversingIteratorTest) {
382382

383383
VPBasicBlock *R2BB1 = Plan.createVPBasicBlock("");
384384
VPBasicBlock *R2BB2 = Plan.createVPBasicBlock("");
385-
VPRegionBlock *R2 = Plan.createVPRegionBlock(R2BB1, R2BB2, "R2");
385+
VPRegionBlock *R2 = Plan.createLoopRegion("R2", R2BB1, R2BB2);
386386
VPBlockUtils::connectBlocks(R2BB1, R2BB2);
387387
VPBlockUtils::connectBlocks(R1, R2);
388388

@@ -467,12 +467,12 @@ TEST_F(VPBasicBlockTest, TraversingIteratorTest) {
467467
VPBasicBlock *R1BB1 = Plan.createVPBasicBlock("R1BB1");
468468
VPBasicBlock *R1BB2 = Plan.createVPBasicBlock("R1BB2");
469469
VPBasicBlock *R1BB3 = Plan.createVPBasicBlock("R1BB3");
470-
VPRegionBlock *R1 = Plan.createVPRegionBlock(R1BB1, R1BB3, "R1");
470+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", R1BB1, R1BB3);
471471

472472
VPBasicBlock *R2BB1 = Plan.createVPBasicBlock("R2BB1");
473473
VPBasicBlock *R2BB2 = Plan.createVPBasicBlock("R2BB2");
474474
VPBasicBlock *R2BB3 = Plan.createVPBasicBlock("R2BB3");
475-
VPRegionBlock *R2 = Plan.createVPRegionBlock(R2BB1, R2BB3, "R2");
475+
VPRegionBlock *R2 = Plan.createLoopRegion("R2", R2BB1, R2BB3);
476476
R2BB2->setParent(R2);
477477
VPBlockUtils::connectBlocks(R2BB1, R2BB2);
478478
VPBlockUtils::connectBlocks(R2BB2, R2BB1);
@@ -537,10 +537,10 @@ TEST_F(VPBasicBlockTest, TraversingIteratorTest) {
537537
VPlan &Plan = getPlan();
538538
VPBasicBlock *R2BB1 = Plan.createVPBasicBlock("R2BB1");
539539
VPBasicBlock *R2BB2 = Plan.createVPBasicBlock("R2BB2");
540-
VPRegionBlock *R2 = Plan.createVPRegionBlock(R2BB1, R2BB2, "R2");
540+
VPRegionBlock *R2 = Plan.createLoopRegion("R2", R2BB1, R2BB2);
541541
VPBlockUtils::connectBlocks(R2BB1, R2BB2);
542542

543-
VPRegionBlock *R1 = Plan.createVPRegionBlock(R2, R2, "R1");
543+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", R2, R2);
544544
R2->setParent(R1);
545545

546546
VPBasicBlock *VPBB1 = Plan.getEntry();
@@ -590,14 +590,14 @@ TEST_F(VPBasicBlockTest, TraversingIteratorTest) {
590590
//
591591
VPlan &Plan = getPlan();
592592
VPBasicBlock *R3BB1 = Plan.createVPBasicBlock("R3BB1");
593-
VPRegionBlock *R3 = Plan.createVPRegionBlock(R3BB1, R3BB1, "R3");
593+
VPRegionBlock *R3 = Plan.createLoopRegion("R3", R3BB1, R3BB1);
594594

595595
VPBasicBlock *R2BB1 = Plan.createVPBasicBlock("R2BB1");
596-
VPRegionBlock *R2 = Plan.createVPRegionBlock(R2BB1, R3, "R2");
596+
VPRegionBlock *R2 = Plan.createLoopRegion("R2", R2BB1, R3);
597597
R3->setParent(R2);
598598
VPBlockUtils::connectBlocks(R2BB1, R3);
599599

600-
VPRegionBlock *R1 = Plan.createVPRegionBlock(R2, R2, "R1");
600+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", R2, R2);
601601
R2->setParent(R1);
602602

603603
VPBasicBlock *VPBB1 = Plan.getEntry();
@@ -687,7 +687,7 @@ TEST_F(VPBasicBlockTest, reassociateBlocks) {
687687
VPlan &Plan = getPlan();
688688
VPBasicBlock *VPBB1 = Plan.createVPBasicBlock("VPBB1");
689689
VPBasicBlock *VPBB2 = Plan.createVPBasicBlock("VPBB2");
690-
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB2, VPBB2, "R1");
690+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", VPBB2, VPBB2);
691691
VPBlockUtils::connectBlocks(VPBB1, R1);
692692

693693
auto *WidenPhi = new VPWidenPHIRecipe(nullptr);

llvm/unittests/Transforms/Vectorize/VPlanVerifierTest.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ TEST_F(VPVerifierTest, VPInstructionUseBeforeDefSameBB) {
3232

3333
VPBasicBlock *VPBB2 = Plan.createVPBasicBlock("");
3434
VPBB2->appendRecipe(CanIV);
35-
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB2, VPBB2, "R1");
35+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", VPBB2, VPBB2);
3636
VPBlockUtils::connectBlocks(VPBB1, R1);
3737
VPBlockUtils::connectBlocks(R1, Plan.getScalarHeader());
3838

@@ -71,7 +71,7 @@ TEST_F(VPVerifierTest, VPInstructionUseBeforeDefDifferentBB) {
7171
VPBB2->appendRecipe(DefI);
7272
VPBB2->appendRecipe(BranchOnCond);
7373

74-
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB2, VPBB2, "R1");
74+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", VPBB2, VPBB2);
7575
VPBlockUtils::connectBlocks(VPBB1, R1);
7676
VPBlockUtils::connectBlocks(R1, Plan.getScalarHeader());
7777

@@ -117,7 +117,7 @@ TEST_F(VPVerifierTest, VPBlendUseBeforeDefDifferentBB) {
117117

118118
VPBlockUtils::connectBlocks(VPBB2, VPBB3);
119119
VPBlockUtils::connectBlocks(VPBB3, VPBB4);
120-
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB2, VPBB4, "R1");
120+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", VPBB2, VPBB4);
121121
VPBlockUtils::connectBlocks(VPBB1, R1);
122122
VPBB3->setParent(R1);
123123

@@ -160,7 +160,7 @@ TEST_F(VPVerifierTest, VPPhiIncomingValueDoesntDominateIncomingBlock) {
160160
auto *CanIV = new VPCanonicalIVPHIRecipe(Zero, {});
161161
VPBB3->appendRecipe(CanIV);
162162

163-
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB3, VPBB3, "R1");
163+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", VPBB3, VPBB3);
164164
VPBlockUtils::connectBlocks(VPBB1, VPBB2);
165165
VPBlockUtils::connectBlocks(VPBB2, R1);
166166
VPBlockUtils::connectBlocks(VPBB4, Plan.getScalarHeader());
@@ -200,7 +200,7 @@ TEST_F(VPVerifierTest, DuplicateSuccessorsOutsideRegion) {
200200
VPBB2->appendRecipe(CanIV);
201201
VPBB2->appendRecipe(BranchOnCond);
202202

203-
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB2, VPBB2, "R1");
203+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", VPBB2, VPBB2);
204204
VPBlockUtils::connectBlocks(VPBB1, R1);
205205
VPBlockUtils::connectBlocks(VPBB1, R1);
206206

@@ -237,7 +237,7 @@ TEST_F(VPVerifierTest, DuplicateSuccessorsInsideRegion) {
237237

238238
VPBlockUtils::connectBlocks(VPBB2, VPBB3);
239239
VPBlockUtils::connectBlocks(VPBB2, VPBB3);
240-
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB2, VPBB3, "R1");
240+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", VPBB2, VPBB3);
241241
VPBlockUtils::connectBlocks(VPBB1, R1);
242242
VPBB3->setParent(R1);
243243

@@ -270,7 +270,7 @@ TEST_F(VPVerifierTest, BlockOutsideRegionWithParent) {
270270
VPBB1->appendRecipe(DefI);
271271
VPBB2->appendRecipe(BranchOnCond);
272272

273-
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB2, VPBB2, "R1");
273+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", VPBB2, VPBB2);
274274
VPBlockUtils::connectBlocks(VPBB1, R1);
275275

276276
VPBlockUtils::connectBlocks(R1, Plan.getScalarHeader());
@@ -302,7 +302,7 @@ TEST_F(VPVerifierTest, NonHeaderPHIInHeader) {
302302
VPBB2->appendRecipe(IRPhi);
303303
VPBB2->appendRecipe(BranchOnCond);
304304

305-
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB2, VPBB2, "R1");
305+
VPRegionBlock *R1 = Plan.createLoopRegion("R1", VPBB2, VPBB2);
306306
VPBlockUtils::connectBlocks(VPBB1, R1);
307307
VPBlockUtils::connectBlocks(R1, Plan.getScalarHeader());
308308

0 commit comments

Comments
 (0)