@@ -15,8 +15,9 @@ define i64 @live_out_scalar_vf(i64 %n) {
1515; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
1616; CHECK: [[VECTOR_BODY]]:
1717; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
18+ ; CHECK-NEXT: [[VECTOR_RECUR:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[TMP2:%.*]], %[[VECTOR_BODY]] ]
1819; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[INDEX]], 0
19- ; CHECK-NEXT: [[TMP2:%.* ]] = add i64 [[INDEX]], 1
20+ ; CHECK-NEXT: [[TMP2]] = add i64 [[INDEX]], 1
2021; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i64 [[TMP1]], [[TRIP_COUNT_MINUS_1]]
2122; CHECK-NEXT: [[TMP4:%.*]] = icmp ugt i64 [[TMP2]], [[TRIP_COUNT_MINUS_1]]
2223; CHECK-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], 2
@@ -33,23 +34,23 @@ define i64 @live_out_scalar_vf(i64 %n) {
3334; CHECK-NEXT: [[TMP13:%.*]] = select i1 [[TMP12]], i64 [[TMP11]], i64 [[TMP8]]
3435; CHECK-NEXT: [[LAST_ACTIVE_LANE:%.*]] = sub i64 [[TMP13]], 1
3536; CHECK-NEXT: [[TMP14:%.*]] = sub i64 [[LAST_ACTIVE_LANE]], 1
36- ; CHECK-NEXT: [[TMP15:%.*]] = icmp uge i64 [[LAST_ACTIVE_LANE]], 1
37+ ; CHECK-NEXT: [[TMP17:%.*]] = sub i64 [[TMP14]], 1
38+ ; CHECK-NEXT: [[TMP15:%.*]] = icmp uge i64 [[TMP14]], 1
3739; CHECK-NEXT: [[TMP16:%.*]] = select i1 [[TMP15]], i64 [[TMP2]], i64 [[TMP1]]
40+ ; CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[LAST_ACTIVE_LANE]], 0
41+ ; CHECK-NEXT: [[TMP19:%.*]] = select i1 [[TMP18]], i64 [[VECTOR_RECUR]], i64 [[TMP16]]
3842; CHECK-NEXT: br label %[[EXIT:.*]]
3943; CHECK: [[EXIT]]:
40- ; CHECK-NEXT: ret i64 [[TMP16 ]]
44+ ; CHECK-NEXT: ret i64 [[TMP19 ]]
4145;
4246entry:
4347 br label %loop
4448
4549loop:
46- %iv = phi i64 [ 0 , %entry ], [ %iv.next , %latch ]
47- br label %latch
48-
49- latch:
50+ %iv = phi i64 [ 0 , %entry ], [ %iv.next , %loop ]
5051 ; Need to use a phi otherwise the header mask will use a
5152 ; VPWidenCanonicalIVRecipe instead of a VPScalarIVStepsRecipe.
52- %exitval = phi i64 [ %iv , %loop ]
53+ %exitval = phi i64 [ 0 , %entry ], [ %iv , %loop ]
5354 %iv.next = add i64 %iv , 1
5455 %ec = icmp eq i64 %iv , %n
5556 br i1 %ec , label %exit , label %loop
0 commit comments