8
8
9
9
define void @foo (ptr noalias %a , ptr noalias %b , ptr noalias %c , i64 %N ) {
10
10
; CHECK-LABEL: VPlan 'Initial VPlan for VF={2,4},UF>=1' {
11
- ; CHECK-NEXT: Live-in vp<%0 > = VF * UF
12
- ; CHECK-NEXT: Live-in vp<%1 > = vector-trip-count
13
- ; CHECK-NEXT: Live-in vp<%2 > = backedge-taken count
11
+ ; CHECK-NEXT: Live-in vp<[[VFxUF:%.+]] > = VF * UF
12
+ ; CHECK-NEXT: Live-in vp<[[VTC:%.+]] > = vector-trip-count
13
+ ; CHECK-NEXT: Live-in vp<[[BTC:%.+]] > = backedge-taken count
14
14
; CHECK-NEXT: Live-in ir<%N> = original trip-count
15
15
; CHECK-EMPTY:
16
16
; CHECK-NEXT: vector.ph:
17
17
; CHECK-NEXT: Successor(s): vector loop
18
18
; CHECK-EMPTY:
19
19
; CHECK-NEXT: <x1> vector loop: {
20
20
; CHECK-NEXT: vector.body:
21
- ; CHECK-NEXT: EMIT vp<%3 > = CANONICAL-INDUCTION ir<0>, vp<%8 >
21
+ ; CHECK-NEXT: EMIT vp<[[CAN_IV:%.+]] > = CANONICAL-INDUCTION ir<0>, vp<[[CAN_INC:%.*]] >
22
22
; CHECK-NEXT: WIDEN-INDUCTION %iv = phi 0, %iv.next, ir<1>
23
- ; CHECK-NEXT: EMIT vp<%4 > = icmp ule ir<%iv>, vp<%2 >
23
+ ; CHECK-NEXT: EMIT vp<[[CMP:%.+]] > = icmp ule ir<%iv>, vp<[[BTC]] >
24
24
; CHECK-NEXT: Successor(s): pred.store
25
25
; CHECK-EMPTY:
26
26
; CHECK-NEXT: <xVFxUF> pred.store: {
27
27
; CHECK-NEXT: pred.store.entry:
28
- ; CHECK-NEXT: BRANCH-ON-MASK vp<%4 >
28
+ ; CHECK-NEXT: BRANCH-ON-MASK vp<[[CMP]] >
29
29
; CHECK-NEXT: Successor(s): pred.store.if, pred.store.continue
30
30
; CHECK-EMPTY:
31
31
; CHECK-NEXT: pred.store.if:
32
- ; CHECK-NEXT: vp<%5 > = SCALAR-STEPS vp<%3 >, ir<1>
33
- ; CHECK-NEXT: REPLICATE ir<%arrayidx> = getelementptr inbounds ir<%b>, vp<%5 >
32
+ ; CHECK-NEXT: vp<[[STEPS:%.+]] > = SCALAR-STEPS vp<[[CAN_IV]] >, ir<1>
33
+ ; CHECK-NEXT: REPLICATE ir<%arrayidx> = getelementptr inbounds ir<%b>, vp<[[STEPS]] >
34
34
; CHECK-NEXT: REPLICATE ir<%0> = load ir<%arrayidx>
35
- ; CHECK-NEXT: REPLICATE ir<%arrayidx2> = getelementptr inbounds ir<%c>, vp<%5 >
35
+ ; CHECK-NEXT: REPLICATE ir<%arrayidx2> = getelementptr inbounds ir<%c>, vp<[[STEPS]] >
36
36
; CHECK-NEXT: REPLICATE ir<%1> = load ir<%arrayidx2>
37
- ; CHECK-NEXT: REPLICATE ir<%arrayidx4> = getelementptr inbounds ir<%a>, vp<%5 >
37
+ ; CHECK-NEXT: REPLICATE ir<%arrayidx4> = getelementptr inbounds ir<%a>, vp<[[STEPS]] >
38
38
; CHECK-NEXT: REPLICATE ir<%add> = add nsw ir<%1>, ir<%0>
39
39
; CHECK-NEXT: REPLICATE store ir<%add>, ir<%arrayidx4>
40
40
; CHECK-NEXT: Successor(s): pred.store.continue
41
41
; CHECK-EMPTY:
42
42
; CHECK-NEXT: pred.store.continue:
43
- ; CHECK-NEXT: PHI-PREDICATED-INSTRUCTION vp<%6 > = ir<%0>
44
- ; CHECK-NEXT: PHI-PREDICATED-INSTRUCTION vp<%7 > = ir<%1>
43
+ ; CHECK-NEXT: PHI-PREDICATED-INSTRUCTION vp<[[P1:%.+]] > = ir<%0>
44
+ ; CHECK-NEXT: PHI-PREDICATED-INSTRUCTION vp<[[P2:%.+]] > = ir<%1>
45
45
; CHECK-NEXT: No successors
46
46
; CHECK-NEXT: }
47
47
; CHECK-NEXT: Successor(s): for.body.2
48
48
; CHECK-EMPTY:
49
49
; CHECK-NEXT: for.body.2:
50
- ; CHECK-NEXT: EMIT vp<%8 > = add vp<%3 >, vp<%0 >
51
- ; CHECK-NEXT: EMIT branch-on-count vp<%8 >, vp<%1 >
50
+ ; CHECK-NEXT: EMIT vp<[[CAN_INC:%.+]] > = add vp<[[CAN_IV]] >, vp<[[VFxUF]] >
51
+ ; CHECK-NEXT: EMIT branch-on-count vp<[[CAN_INC]] >, vp<[[VTC]] >
52
52
; CHECK-NEXT: No successors
53
53
; CHECK-NEXT: }
54
54
;
@@ -74,26 +74,26 @@ for.cond.cleanup:
74
74
75
75
define void @safe_dep (ptr %p ) {
76
76
; CHECK-LABEL: VPlan 'Initial VPlan for VF={2},UF>=1' {
77
- ; CHECK-NEXT: Live-in vp<%0 > = VF * UF
78
- ; CHECK-NEXT: Live-in vp<%1 > = vector-trip-count
77
+ ; CHECK-NEXT: Live-in vp<[[VFxUF:%.+]] > = VF * UF
78
+ ; CHECK-NEXT: Live-in vp<[[VTC:%.+]] > = vector-trip-count
79
79
; CHECK-NEXT: Live-in ir<512> = original trip-count
80
80
; CHECK-EMPTY:
81
81
; CHECK-NEXT: vector.ph:
82
82
; CHECK-NEXT: Successor(s): vector loop
83
83
; CHECK-EMPTY:
84
84
; CHECK-NEXT: <x1> vector loop: {
85
85
; CHECK-NEXT: vector.body:
86
- ; CHECK-NEXT: EMIT vp<%2 > = CANONICAL-INDUCTION ir<0>, vp<%6 >
87
- ; CHECK-NEXT: vp<%3 > = SCALAR-STEPS vp<%2 >, ir<1>
88
- ; CHECK-NEXT: CLONE ir<%a1> = getelementptr ir<%p>, vp<%3 >
89
- ; CHECK-NEXT: vp<%4 > = vector-pointer ir<%a1>
90
- ; CHECK-NEXT: WIDEN ir<%v> = load vp<%4 >
91
- ; CHECK-NEXT: CLONE ir<%offset> = add vp<%3 >, ir<100>
86
+ ; CHECK-NEXT: EMIT vp<[[CAN_IV:%.+]] > = CANONICAL-INDUCTION ir<0>, vp<[[CAN_INC:%.+]] >
87
+ ; CHECK-NEXT: vp<[[STEPS:%.+]] > = SCALAR-STEPS vp<[[CAN_IV]] >, ir<1>
88
+ ; CHECK-NEXT: CLONE ir<%a1> = getelementptr ir<%p>, vp<[[STEPS]] >
89
+ ; CHECK-NEXT: vp<[[VPTR1:%.+]] > = vector-pointer ir<%a1>
90
+ ; CHECK-NEXT: WIDEN ir<%v> = load vp<[[VPTR1]] >
91
+ ; CHECK-NEXT: CLONE ir<%offset> = add vp<[[STEPS]] >, ir<100>
92
92
; CHECK-NEXT: CLONE ir<%a2> = getelementptr ir<%p>, ir<%offset>
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 >
93
+ ; CHECK-NEXT: vp<[[VPTR2:%.+]] > = vector-pointer ir<%a2>
94
+ ; CHECK-NEXT: WIDEN store vp<[[VPTR2]] >, ir<%v>
95
+ ; CHECK-NEXT: EMIT vp<[[CAN_INC]] > = add nuw vp<[[CAN_IV]] >, vp<[[VFxUF]] >
96
+ ; CHECK-NEXT: EMIT branch-on-count vp<[[CAN_INC]] >, vp<[[VTC]] >
97
97
; CHECK-NEXT: No successors
98
98
; CHECK-NEXT: }
99
99
;
0 commit comments