@@ -34,8 +34,9 @@ define void @test1(ptr noalias nocapture %a, ptr noalias nocapture readonly %b)
3434; CHECK-NEXT: [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT]], 1600
3535; CHECK-NEXT: br i1 [[TMP12]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
3636; CHECK: [[MIDDLE_BLOCK]]:
37- ; CHECK-NEXT: br [[FOR_END:label %.*]]
38- ; CHECK: [[SCALAR_PH:.*:]]
37+ ; CHECK-NEXT: br label %[[FOR_END:.*]]
38+ ; CHECK: [[FOR_END]]:
39+ ; CHECK-NEXT: ret void
3940;
4041entry:
4142 br label %for.body
@@ -73,29 +74,28 @@ define void @test2(ptr noalias %a, ptr noalias %b) {
7374; CHECK-NEXT: [[MASKCOND4:%.*]] = icmp eq i64 [[MASKEDPTR3]], 0
7475; CHECK-NEXT: br label %[[VECTOR_PH:.*]]
7576; CHECK: [[VECTOR_PH]]:
77+ ; CHECK-NEXT: tail call void @llvm.assume(i1 [[MASKCOND]])
78+ ; CHECK-NEXT: tail call void @llvm.assume(i1 [[MASKCOND4]])
7679; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
7780; CHECK: [[VECTOR_BODY]]:
7881; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
79- ; CHECK-NEXT: tail call void @llvm.assume(i1 [[MASKCOND]])
80- ; CHECK-NEXT: tail call void @llvm.assume(i1 [[MASKCOND]])
8182; CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds float, ptr [[A]], i64 [[INDEX]]
8283; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds float, ptr [[TMP3]], i32 2
8384; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x float>, ptr [[TMP3]], align 4
8485; CHECK-NEXT: [[WIDE_LOAD1:%.*]] = load <2 x float>, ptr [[TMP4]], align 4
8586; CHECK-NEXT: [[TMP5:%.*]] = fadd <2 x float> [[WIDE_LOAD]], splat (float 1.000000e+00)
8687; CHECK-NEXT: [[TMP6:%.*]] = fadd <2 x float> [[WIDE_LOAD1]], splat (float 1.000000e+00)
87- ; CHECK-NEXT: tail call void @llvm.assume(i1 [[MASKCOND4]])
88- ; CHECK-NEXT: tail call void @llvm.assume(i1 [[MASKCOND4]])
8988; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds float, ptr [[B]], i64 [[INDEX]]
9089; CHECK-NEXT: [[TMP8:%.*]] = getelementptr inbounds float, ptr [[TMP7]], i32 2
9190; CHECK-NEXT: store <2 x float> [[TMP5]], ptr [[TMP7]], align 4
9291; CHECK-NEXT: store <2 x float> [[TMP6]], ptr [[TMP8]], align 4
9392; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
9493; CHECK-NEXT: [[TMP9:%.*]] = icmp eq i64 [[INDEX_NEXT]], 1600
95- ; CHECK-NEXT: br i1 [[TMP9]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4 :![0-9]+]]
94+ ; CHECK-NEXT: br i1 [[TMP9]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP3 :![0-9]+]]
9695; CHECK: [[MIDDLE_BLOCK]]:
97- ; CHECK-NEXT: br [[FOR_END:label %.*]]
98- ; CHECK: [[SCALAR_PH:.*:]]
96+ ; CHECK-NEXT: br label %[[FOR_END:.*]]
97+ ; CHECK: [[FOR_END]]:
98+ ; CHECK-NEXT: ret void
9999;
100100entry:
101101 %ptrint = ptrtoint ptr %a to i64
@@ -163,7 +163,7 @@ define void @predicated_assume(ptr noalias nocapture readonly %a, ptr noalias no
163163; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
164164; CHECK-NEXT: [[VEC_IND_NEXT]] = add <2 x i64> [[STEP_ADD]], splat (i64 2)
165165; CHECK-NEXT: [[TMP9:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
166- ; CHECK-NEXT: br i1 [[TMP9]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP6 :![0-9]+]]
166+ ; CHECK-NEXT: br i1 [[TMP9]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4 :![0-9]+]]
167167; CHECK: [[MIDDLE_BLOCK]]:
168168; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[TMP0]], [[N_VEC]]
169169; CHECK-NEXT: br i1 [[CMP_N]], [[FOR_COND_CLEANUP_LOOPEXIT:label %.*]], label %[[SCALAR_PH]]
0 commit comments