@@ -9,11 +9,11 @@ define void @same_step_and_size(ptr %a, ptr %b, i64 %n) {
99; CHECK-NEXT: [[A2:%.*]] = ptrtoint ptr [[A:%.*]] to i64
1010; CHECK-NEXT: [[B1:%.*]] = ptrtoint ptr [[B:%.*]] to i64
1111; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[N:%.*]], 4
12- ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label [[SCALAR_PH:%.*]] , label [[VECTOR_MEMCHECK:%.*]]
12+ ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label %scalar.ph , label %vector.memcheck
1313; CHECK: vector.memcheck:
1414; CHECK-NEXT: [[TMP0:%.*]] = sub i64 [[B1]], [[A2]]
1515; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP0]], 16
16- ; CHECK-NEXT: br i1 [[DIFF_CHECK]], label [[SCALAR_PH]] , label [[VECTOR_PH:%.*]]
16+ ; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %scalar.ph , label %vector.ph
1717;
1818entry:
1919 br label %loop
@@ -39,11 +39,11 @@ define void @same_step_and_size_no_dominance_between_accesses(ptr %a, ptr %b, i6
3939; CHECK-NEXT: [[B2:%.*]] = ptrtoint ptr [[B:%.*]] to i64
4040; CHECK-NEXT: [[A1:%.*]] = ptrtoint ptr [[A:%.*]] to i64
4141; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[N:%.*]], 4
42- ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label [[SCALAR_PH:%.*]] , label [[VECTOR_MEMCHECK:%.*]]
42+ ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label %scalar.ph , label %vector.memcheck
4343; CHECK: vector.memcheck:
4444; CHECK-NEXT: [[TMP0:%.*]] = sub i64 [[A1]], [[B2]]
4545; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP0]], 16
46- ; CHECK-NEXT: br i1 [[DIFF_CHECK]], label [[SCALAR_PH]] , label [[VECTOR_PH:%.*]]
46+ ; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %scalar.ph , label %vector.ph
4747;
4848entry:
4949 br label %loop
@@ -76,16 +76,16 @@ define void @different_steps_and_different_access_sizes(ptr %a, ptr %b, i64 %n)
7676; CHECK-LABEL: @different_steps_and_different_access_sizes(
7777; CHECK-NEXT: entry:
7878; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[N:%.*]], 4
79- ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label [[SCALAR_PH:%.*]] , label [[VECTOR_MEMCHECK:%.*]]
79+ ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label %scalar.ph , label %vector.memcheck
8080; CHECK: vector.memcheck:
8181; CHECK-NEXT: [[TMP0:%.*]] = shl i64 [[N]], 2
82- ; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i8, ptr [[B:%.*]] , i64 [[TMP0]]
83- ; CHECK-NEXT: [[TMP1:%.*]] = shl i64 [[N]] , 1
84- ; CHECK-NEXT: [[SCEVGEP1:%.*]] = getelementptr i8, ptr [[A:%.*]] , i64 [[TMP1]]
85- ; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[B]] , [[SCEVGEP1]]
86- ; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[A]] , [[SCEVGEP]]
82+ ; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i8, ptr %b , i64 [[TMP0]]
83+ ; CHECK-NEXT: [[TMP1:%.*]] = shl i64 %n , 1
84+ ; CHECK-NEXT: [[SCEVGEP1:%.*]] = getelementptr i8, ptr %a , i64 [[TMP1]]
85+ ; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr %b , [[SCEVGEP1]]
86+ ; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr %a , [[SCEVGEP]]
8787; CHECK-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
88- ; CHECK-NEXT: br i1 [[FOUND_CONFLICT]], label [[SCALAR_PH]] , label [[VECTOR_PH:%.*]]
88+ ; CHECK-NEXT: br i1 [[FOUND_CONFLICT]], label %scalar.ph , label %vector.ph
8989;
9090entry:
9191 br label %loop
@@ -112,12 +112,12 @@ define void @steps_match_but_different_access_sizes_1(ptr %a, ptr %b, i64 %n) {
112112; CHECK-NEXT: [[A2:%.*]] = ptrtoint ptr [[A:%.*]] to i64
113113; CHECK-NEXT: [[B1:%.*]] = ptrtoint ptr [[B:%.*]] to i64
114114; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[N:%.*]], 4
115- ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label [[SCALAR_PH:%.*]] , label [[VECTOR_MEMCHECK:%.*]]
115+ ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label %scalar.ph , label %vector.memcheck
116116; CHECK: vector.memcheck:
117117; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[B1]], -2
118118; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[TMP0]], [[A2]]
119119; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP1]], 16
120- ; CHECK-NEXT: br i1 [[DIFF_CHECK]], label [[SCALAR_PH]] , label [[VECTOR_PH:%.*]]
120+ ; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %scalar.ph , label %vector.ph
121121;
122122entry:
123123 br label %loop
@@ -146,12 +146,12 @@ define void @steps_match_but_different_access_sizes_2(ptr %a, ptr %b, i64 %n) {
146146; CHECK-NEXT: [[B2:%.*]] = ptrtoint ptr [[B:%.*]] to i64
147147; CHECK-NEXT: [[A1:%.*]] = ptrtoint ptr [[A:%.*]] to i64
148148; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[N:%.*]], 4
149- ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label [[SCALAR_PH:%.*]] , label [[VECTOR_MEMCHECK:%.*]]
149+ ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label %scalar.ph , label %vector.memcheck
150150; CHECK: vector.memcheck:
151151; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[A1]], 2
152152; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[TMP0]], [[B2]]
153153; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP1]], 16
154- ; CHECK-NEXT: br i1 [[DIFF_CHECK]], label [[SCALAR_PH]] , label [[VECTOR_PH:%.*]]
154+ ; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %scalar.ph , label %vector.ph
155155;
156156entry:
157157 br label %loop
@@ -177,10 +177,11 @@ exit:
177177; Test case for PR57315.
178178define void @nested_loop_outer_iv_addrec_invariant_in_inner1 (ptr %a , ptr %b , i64 %n ) {
179179; CHECK-LABEL: @nested_loop_outer_iv_addrec_invariant_in_inner1(
180- ; CHECK-NEXT: entry:
181- ; CHECK-NEXT: [[TMP0:%.*]] = shl i64 [[N:%.*]], 2
182- ; CHECK-NEXT: [[SCEVGEP2:%.*]] = getelementptr i8, ptr [[B:%.*]], i64 [[TMP0]]
183- ; CHECK-NEXT: br label [[OUTER_HEADER:%.*]]
180+ ; CHECK: entry:
181+ ; CHECK-NEXT: [[TMP0:%.*]] = shl i64 %n, 2
182+ ; CHECK-NEXT: [[SCEVGEP2:%.*]] = getelementptr i8, ptr %b, i64 [[TMP0]]
183+ ; CHECK-NEXT: br label %outer
184+
184185; CHECK: outer.header:
185186; CHECK-NEXT: [[OUTER_IV:%.*]] = phi i64 [ [[OUTER_IV_NEXT:%.*]], [[OUTER_LATCH:%.*]] ], [ 0, [[ENTRY:%.*]] ]
186187; CHECK-NEXT: [[TMP1:%.*]] = shl i64 [[OUTER_IV]], 2
@@ -194,10 +195,8 @@ define void @nested_loop_outer_iv_addrec_invariant_in_inner1(ptr %a, ptr %b, i64
194195; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[SCEVGEP]], [[SCEVGEP2]]
195196; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[B]], [[SCEVGEP1]]
196197; CHECK-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
197- ; CHECK-NEXT: br i1 [[FOUND_CONFLICT]], label [[SCALAR_PH]] , label [[VECTOR_PH:%.*]]
198+ ; CHECK-NEXT: br i1 [[FOUND_CONFLICT]], label %scalar.ph , label %vector.ph
198199;
199-
200-
201200entry:
202201 br label %outer.header
203202
@@ -241,15 +240,14 @@ define void @nested_loop_outer_iv_addrec_invariant_in_inner2(ptr %a, ptr %b, i64
241240; CHECK-NEXT: [[SCEVGEP2:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP2]]
242241; CHECK-NEXT: [[GEP_A:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[OUTER_IV]]
243242; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[N]], 4
244- ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label [[SCALAR_PH:%.*]], label [[VECTOR_MEMCHECK:%.*]]
243+ ; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label %scalar.ph, label %vector.memcheck
244+
245245; CHECK: vector.memcheck:
246246; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[B]], [[SCEVGEP2]]
247247; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[SCEVGEP1]], [[SCEVGEP]]
248248; CHECK-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
249- ; CHECK-NEXT: br i1 [[FOUND_CONFLICT]], label [[SCALAR_PH]] , label [[VECTOR_PH:%.*]]
249+ ; CHECK-NEXT: br i1 [[FOUND_CONFLICT]], label %scalar.ph , label %vector.ph
250250;
251-
252-
253251entry:
254252 br label %outer.header
255253
@@ -289,7 +287,7 @@ define void @nested_loop_start_of_inner_ptr_addrec_is_same_outer_addrec(ptr noca
289287; CHECK-NEXT: br label [[OUTER_LOOP:%.*]]
290288; CHECK: outer.loop:
291289; CHECK-NEXT: [[OUTER_IV:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[OUTER_IV_NEXT:%.*]], [[INNER_EXIT:%.*]] ]
292- ; CHECK-NEXT: [[MUL:%.*]] = mul nsw i64 [[OUTER_IV]], [[N:%.* ]]
290+ ; CHECK-NEXT: [[MUL:%.*]] = mul nsw i64 [[OUTER_IV]], [[N]]
293291; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[N]], 4
294292; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label [[SCALAR_PH:%.*]], label [[VECTOR_MEMCHECK:%.*]]
295293; CHECK: vector.memcheck:
0 commit comments