Skip to content

Commit 79b9700

Browse files
committed
Add VPlan debug output test
1 parent d183c91 commit 79b9700

File tree

1 file changed

+55
-1
lines changed

1 file changed

+55
-1
lines changed

llvm/test/Transforms/LoopVectorize/vplan-iv-transforms.ll

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ define void @iv_no_binary_op_in_descriptor(i1 %c, ptr %dst) {
2929
; CHECK-NEXT: }
3030
; CHECK-NEXT: Successor(s): middle.block
3131
; CHECK-EMPTY:
32-
; CHECK-NEXT: middle.block:
32+
; CHECK-NEXT: middle.block:
3333
; CHECK-NEXT: EMIT vp<[[CMP:%.+]]> = icmp eq ir<1000>, vp<[[VEC_TC]]>
3434
; CHECK-NEXT: EMIT branch-on-cond vp<[[CMP]]>
3535
; CHECK-NEXT: Successor(s): ir-bb<exit>, scalar.ph
@@ -65,3 +65,57 @@ loop.latch:
6565
exit:
6666
ret void
6767
}
68+
69+
; Check that VPWidenIntOrFPInductionRecipe is expanded into smaller recipes in
70+
; the final VPlan.
71+
define void @iv_expand(ptr %p, i64 %n) {
72+
; CHECK-LABEL: LV: Checking a loop in 'iv_expand'
73+
; CHECK: VPlan 'Initial VPlan for VF={8},UF>=1' {
74+
; CHECK: <x1> vector loop: {
75+
; CHECK-NEXT: vector.body:
76+
; CHECK-NEXT: EMIT vp<%3> = CANONICAL-INDUCTION ir<0>, vp<%index.next>
77+
; CHECK-NEXT: ir<%i> = WIDEN-INDUCTION ir<0>, ir<1>, vp<%0>
78+
; CHECK-NEXT: vp<%4> = SCALAR-STEPS vp<%3>, ir<1>
79+
; CHECK-NEXT: CLONE ir<%q> = getelementptr ir<%p>, vp<%4>
80+
; CHECK-NEXT: vp<%5> = vector-pointer ir<%q>
81+
; CHECK-NEXT: WIDEN ir<%x> = load vp<%5>
82+
; CHECK-NEXT: WIDEN ir<%y> = add ir<%x>, ir<%i>
83+
; CHECK-NEXT: vp<%6> = vector-pointer ir<%q>
84+
; CHECK-NEXT: WIDEN store vp<%6>, ir<%y>
85+
; CHECK-NEXT: EMIT vp<%index.next> = add nuw vp<%3>, vp<%1>
86+
; CHECK-NEXT: EMIT branch-on-count vp<%index.next>, vp<%2>
87+
; CHECK-NEXT: No successors
88+
; CHECK-NEXT: }
89+
; CHECK-NEXT: Successor(s): middle.block
90+
; CHECK: VPlan 'Final VPlan for VF={8},UF={1}'
91+
; CHECK: <x1> vector loop: {
92+
; CHECK-NEXT: vector.body:
93+
; CHECK-NEXT: SCALAR-PHI vp<%3> = phi ir<0>, vp<%index.next>
94+
; CHECK-NEXT: WIDEN-PHI ir<%i> = phi vp<%induction>, vp<%vec.ind.next>
95+
; CHECK-NEXT: vp<%4> = SCALAR-STEPS vp<%3>, ir<1>
96+
; CHECK-NEXT: CLONE ir<%q> = getelementptr ir<%p>, vp<%4>
97+
; CHECK-NEXT: vp<%5> = vector-pointer ir<%q>
98+
; CHECK-NEXT: WIDEN ir<%x> = load vp<%5>
99+
; CHECK-NEXT: WIDEN ir<%y> = add ir<%x>, ir<%i>
100+
; CHECK-NEXT: vp<%6> = vector-pointer ir<%q>
101+
; CHECK-NEXT: WIDEN store vp<%6>, ir<%y>
102+
; CHECK-NEXT: EMIT vp<%index.next> = add nuw vp<%3>, ir<8>
103+
; CHECK-NEXT: EMIT vp<%vec.ind.next> = add ir<%i>, vp<%2>
104+
; CHECK-NEXT: EMIT branch-on-count vp<%index.next>, ir<%n.vec>
105+
; CHECK-NEXT: No successors
106+
; CHECK-NEXT: }
107+
; CHECK-NEXT: Successor(s): middle.block
108+
entry:
109+
br label %loop
110+
loop:
111+
%i = phi i64 [0, %entry], [%i.next, %loop]
112+
%q = getelementptr i64, ptr %p, i64 %i
113+
%x = load i64, ptr %q
114+
%y = add i64 %x, %i
115+
store i64 %y, ptr %q
116+
%i.next = add i64 %i, 1
117+
%done = icmp eq i64 %i.next, %n
118+
br i1 %done, label %exit, label %loop
119+
exit:
120+
ret void
121+
}

0 commit comments

Comments
 (0)