@@ -9,11 +9,11 @@ define void @same_step_and_size(ptr %a, ptr %b, i64 %n) {
9
9
; CHECK-NEXT: [[A2:%.*]] = ptrtoint ptr [[A:%.*]] to i64
10
10
; CHECK-NEXT: [[B1:%.*]] = ptrtoint ptr [[B:%.*]] to i64
11
11
; 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
13
13
; CHECK: vector.memcheck:
14
14
; CHECK-NEXT: [[TMP0:%.*]] = sub i64 [[B1]], [[A2]]
15
15
; 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
17
17
;
18
18
entry:
19
19
br label %loop
@@ -39,11 +39,11 @@ define void @same_step_and_size_no_dominance_between_accesses(ptr %a, ptr %b, i6
39
39
; CHECK-NEXT: [[B2:%.*]] = ptrtoint ptr [[B:%.*]] to i64
40
40
; CHECK-NEXT: [[A1:%.*]] = ptrtoint ptr [[A:%.*]] to i64
41
41
; 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
43
43
; CHECK: vector.memcheck:
44
44
; CHECK-NEXT: [[TMP0:%.*]] = sub i64 [[A1]], [[B2]]
45
45
; 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
47
47
;
48
48
entry:
49
49
br label %loop
@@ -76,16 +76,16 @@ define void @different_steps_and_different_access_sizes(ptr %a, ptr %b, i64 %n)
76
76
; CHECK-LABEL: @different_steps_and_different_access_sizes(
77
77
; CHECK-NEXT: entry:
78
78
; 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
80
80
; CHECK: vector.memcheck:
81
81
; 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]]
87
87
; 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
89
89
;
90
90
entry:
91
91
br label %loop
@@ -112,12 +112,12 @@ define void @steps_match_but_different_access_sizes_1(ptr %a, ptr %b, i64 %n) {
112
112
; CHECK-NEXT: [[A2:%.*]] = ptrtoint ptr [[A:%.*]] to i64
113
113
; CHECK-NEXT: [[B1:%.*]] = ptrtoint ptr [[B:%.*]] to i64
114
114
; 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
116
116
; CHECK: vector.memcheck:
117
117
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[B1]], -2
118
118
; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[TMP0]], [[A2]]
119
119
; 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
121
121
;
122
122
entry:
123
123
br label %loop
@@ -146,12 +146,12 @@ define void @steps_match_but_different_access_sizes_2(ptr %a, ptr %b, i64 %n) {
146
146
; CHECK-NEXT: [[B2:%.*]] = ptrtoint ptr [[B:%.*]] to i64
147
147
; CHECK-NEXT: [[A1:%.*]] = ptrtoint ptr [[A:%.*]] to i64
148
148
; 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
150
150
; CHECK: vector.memcheck:
151
151
; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[A1]], 2
152
152
; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[TMP0]], [[B2]]
153
153
; 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
155
155
;
156
156
entry:
157
157
br label %loop
@@ -177,10 +177,11 @@ exit:
177
177
; Test case for PR57315.
178
178
define void @nested_loop_outer_iv_addrec_invariant_in_inner1 (ptr %a , ptr %b , i64 %n ) {
179
179
; 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
+
184
185
; CHECK: outer.header:
185
186
; CHECK-NEXT: [[OUTER_IV:%.*]] = phi i64 [ [[OUTER_IV_NEXT:%.*]], [[OUTER_LATCH:%.*]] ], [ 0, [[ENTRY:%.*]] ]
186
187
; 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
194
195
; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[SCEVGEP]], [[SCEVGEP2]]
195
196
; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[B]], [[SCEVGEP1]]
196
197
; 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
198
199
;
199
-
200
-
201
200
entry:
202
201
br label %outer.header
203
202
@@ -241,15 +240,14 @@ define void @nested_loop_outer_iv_addrec_invariant_in_inner2(ptr %a, ptr %b, i64
241
240
; CHECK-NEXT: [[SCEVGEP2:%.*]] = getelementptr i8, ptr [[A]], i64 [[TMP2]]
242
241
; CHECK-NEXT: [[GEP_A:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[OUTER_IV]]
243
242
; 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
+
245
245
; CHECK: vector.memcheck:
246
246
; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[B]], [[SCEVGEP2]]
247
247
; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[SCEVGEP1]], [[SCEVGEP]]
248
248
; 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
250
250
;
251
-
252
-
253
251
entry:
254
252
br label %outer.header
255
253
@@ -289,7 +287,7 @@ define void @nested_loop_start_of_inner_ptr_addrec_is_same_outer_addrec(ptr noca
289
287
; CHECK-NEXT: br label [[OUTER_LOOP:%.*]]
290
288
; CHECK: outer.loop:
291
289
; 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]]
293
291
; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[N]], 4
294
292
; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label [[SCALAR_PH:%.*]], label [[VECTOR_MEMCHECK:%.*]]
295
293
; CHECK: vector.memcheck:
0 commit comments