Skip to content

Commit a8ec1eb

Browse files
committed
[VPlan] Dont assign slots to VPValues with an underlying value.
This makes sure the numbering for VPValues without underlying values is consecutive.
1 parent 2248164 commit a8ec1eb

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

llvm/lib/Transforms/Vectorize/VPlan.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1374,6 +1374,8 @@ VPInterleavedAccessInfo::VPInterleavedAccessInfo(VPlan &Plan,
13741374
}
13751375

13761376
void VPSlotTracker::assignSlot(const VPValue *V) {
1377+
if (V->getUnderlyingValue())
1378+
return;
13771379
assert(!Slots.contains(V) && "VPValue already has a slot!");
13781380
Slots[V] = NextSlot++;
13791381
}

llvm/test/Transforms/LoopVectorize/PowerPC/vplan-force-tail-with-evl.ll

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,37 +18,37 @@ define void @foo(ptr noalias %a, ptr noalias %b, ptr noalias %c, i64 %N) {
1818
; CHECK-EMPTY:
1919
; CHECK-NEXT: <x1> vector loop: {
2020
; CHECK-NEXT: vector.body:
21-
; CHECK-NEXT: EMIT vp<%3> = CANONICAL-INDUCTION ir<0>, vp<%16>
21+
; CHECK-NEXT: EMIT vp<%3> = CANONICAL-INDUCTION ir<0>, vp<%8>
2222
; CHECK-NEXT: WIDEN-INDUCTION %iv = phi 0, %iv.next, ir<1>
23-
; CHECK-NEXT: EMIT vp<%5> = icmp ule ir<%iv>, vp<%2>
23+
; CHECK-NEXT: EMIT vp<%4> = icmp ule ir<%iv>, vp<%2>
2424
; CHECK-NEXT: Successor(s): pred.store
2525
; CHECK-EMPTY:
2626
; CHECK-NEXT: <xVFxUF> pred.store: {
2727
; CHECK-NEXT: pred.store.entry:
28-
; CHECK-NEXT: BRANCH-ON-MASK vp<%5>
28+
; CHECK-NEXT: BRANCH-ON-MASK vp<%4>
2929
; CHECK-NEXT: Successor(s): pred.store.if, pred.store.continue
3030
; CHECK-EMPTY:
3131
; CHECK-NEXT: pred.store.if:
32-
; CHECK-NEXT: vp<%6> = SCALAR-STEPS vp<%3>, ir<1>
33-
; CHECK-NEXT: REPLICATE ir<%arrayidx> = getelementptr inbounds ir<%b>, vp<%6>
32+
; CHECK-NEXT: vp<%5> = SCALAR-STEPS vp<%3>, ir<1>
33+
; CHECK-NEXT: REPLICATE ir<%arrayidx> = getelementptr inbounds ir<%b>, vp<%5>
3434
; CHECK-NEXT: REPLICATE ir<%0> = load ir<%arrayidx>
35-
; CHECK-NEXT: REPLICATE ir<%arrayidx2> = getelementptr inbounds ir<%c>, vp<%6>
35+
; CHECK-NEXT: REPLICATE ir<%arrayidx2> = getelementptr inbounds ir<%c>, vp<%5>
3636
; CHECK-NEXT: REPLICATE ir<%1> = load ir<%arrayidx2>
37-
; CHECK-NEXT: REPLICATE ir<%arrayidx4> = getelementptr inbounds ir<%a>, vp<%6>
37+
; CHECK-NEXT: REPLICATE ir<%arrayidx4> = getelementptr inbounds ir<%a>, vp<%5>
3838
; CHECK-NEXT: REPLICATE ir<%add> = add nsw ir<%1>, ir<%0>
3939
; CHECK-NEXT: REPLICATE store ir<%add>, ir<%arrayidx4>
4040
; CHECK-NEXT: Successor(s): pred.store.continue
4141
; CHECK-EMPTY:
4242
; CHECK-NEXT: pred.store.continue:
43-
; CHECK-NEXT: PHI-PREDICATED-INSTRUCTION vp<%14> = ir<%0>
44-
; CHECK-NEXT: PHI-PREDICATED-INSTRUCTION vp<%15> = ir<%1>
43+
; CHECK-NEXT: PHI-PREDICATED-INSTRUCTION vp<%6> = ir<%0>
44+
; CHECK-NEXT: PHI-PREDICATED-INSTRUCTION vp<%7> = ir<%1>
4545
; CHECK-NEXT: No successors
4646
; CHECK-NEXT: }
4747
; CHECK-NEXT: Successor(s): for.body.2
4848
; CHECK-EMPTY:
4949
; CHECK-NEXT: for.body.2:
50-
; CHECK-NEXT: EMIT vp<%16> = add vp<%3>, vp<%0>
51-
; CHECK-NEXT: EMIT branch-on-count vp<%16>, vp<%1>
50+
; CHECK-NEXT: EMIT vp<%8> = add vp<%3>, vp<%0>
51+
; CHECK-NEXT: EMIT branch-on-count vp<%8>, vp<%1>
5252
; CHECK-NEXT: No successors
5353
; CHECK-NEXT: }
5454
;
@@ -83,17 +83,17 @@ define void @safe_dep(ptr %p) {
8383
; CHECK-EMPTY:
8484
; CHECK-NEXT: <x1> vector loop: {
8585
; CHECK-NEXT: vector.body:
86-
; CHECK-NEXT: EMIT vp<%2> = CANONICAL-INDUCTION ir<0>, vp<%10>
86+
; CHECK-NEXT: EMIT vp<%2> = CANONICAL-INDUCTION ir<0>, vp<%6>
8787
; CHECK-NEXT: vp<%3> = SCALAR-STEPS vp<%2>, ir<1>
8888
; CHECK-NEXT: CLONE ir<%a1> = getelementptr ir<%p>, vp<%3>
89-
; CHECK-NEXT: vp<%5> = vector-pointer ir<%a1>
90-
; CHECK-NEXT: WIDEN ir<%v> = load vp<%5>
89+
; CHECK-NEXT: vp<%4> = vector-pointer ir<%a1>
90+
; CHECK-NEXT: WIDEN ir<%v> = load vp<%4>
9191
; CHECK-NEXT: CLONE ir<%offset> = add vp<%3>, ir<100>
9292
; CHECK-NEXT: CLONE ir<%a2> = getelementptr ir<%p>, ir<%offset>
93-
; CHECK-NEXT: vp<%9> = vector-pointer ir<%a2>
94-
; CHECK-NEXT: WIDEN store vp<%9>, ir<%v>
95-
; CHECK-NEXT: EMIT vp<%10> = add nuw vp<%2>, vp<%0>
96-
; CHECK-NEXT: EMIT branch-on-count vp<%10>, vp<%1>
93+
; CHECK-NEXT: vp<%5> = vector-pointer ir<%a2>
94+
; CHECK-NEXT: WIDEN store vp<%5>, ir<%v>
95+
; CHECK-NEXT: EMIT vp<%6> = add nuw vp<%2>, vp<%0>
96+
; CHECK-NEXT: EMIT branch-on-count vp<%6>, vp<%1>
9797
; CHECK-NEXT: No successors
9898
; CHECK-NEXT: }
9999
;

0 commit comments

Comments
 (0)