Lines Matching refs:UNROLL
2 … -simplifycfg -simplifycfg-require-and-preserve-domtree=1 < %s | FileCheck %s --check-prefix=UNROLL
3 …interleave=2 -loop-vectorize -verify-loop-info < %s | FileCheck %s --check-prefix=UNROLL-NOSIMPLIFY
10 ; UNROLL-LABEL: @test(
11 ; UNROLL-NEXT: entry:
12 ; UNROLL-NEXT: br label [[VECTOR_BODY:%.*]]
13 ; UNROLL: vector.body:
14 ; UNROLL-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_…
15 ; UNROLL-NEXT: [[INDUCTION:%.*]] = add i64 [[INDEX]], 0
16 ; UNROLL-NEXT: [[INDUCTION1:%.*]] = add i64 [[INDEX]], 1
17 ; UNROLL-NEXT: [[TMP0:%.*]] = getelementptr inbounds i32, i32* [[F:%.*]], i64 [[INDUCTION]]
18 ; UNROLL-NEXT: [[TMP1:%.*]] = getelementptr inbounds i32, i32* [[F]], i64 [[INDUCTION1]]
19 ; UNROLL-NEXT: [[TMP2:%.*]] = load i32, i32* [[TMP0]], align 4
20 ; UNROLL-NEXT: [[TMP3:%.*]] = load i32, i32* [[TMP1]], align 4
21 ; UNROLL-NEXT: [[TMP4:%.*]] = icmp sgt i32 [[TMP2]], 100
22 ; UNROLL-NEXT: [[TMP5:%.*]] = icmp sgt i32 [[TMP3]], 100
23 ; UNROLL-NEXT: br i1 [[TMP4]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]]
24 ; UNROLL: pred.store.if:
25 ; UNROLL-NEXT: [[TMP6:%.*]] = add nsw i32 [[TMP2]], 20
26 ; UNROLL-NEXT: store i32 [[TMP6]], i32* [[TMP0]], align 4
27 ; UNROLL-NEXT: br label [[PRED_STORE_CONTINUE]]
28 ; UNROLL: pred.store.continue:
29 ; UNROLL-NEXT: br i1 [[TMP5]], label [[PRED_STORE_IF2:%.*]], label [[PRED_STORE_CONTINUE3]]
30 ; UNROLL: pred.store.if2:
31 ; UNROLL-NEXT: [[TMP7:%.*]] = add nsw i32 [[TMP3]], 20
32 ; UNROLL-NEXT: store i32 [[TMP7]], i32* [[TMP1]], align 4
33 ; UNROLL-NEXT: br label [[PRED_STORE_CONTINUE3]]
34 ; UNROLL: pred.store.continue3:
35 ; UNROLL-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
36 ; UNROLL-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT]], 128
37 ; UNROLL-NEXT: br i1 [[TMP8]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[L…
38 ; UNROLL: middle.block:
39 ; UNROLL-NEXT: [[CMP_N:%.*]] = icmp eq i64 128, 128
40 ; UNROLL-NEXT: br i1 [[CMP_N]], label [[FOR_END:%.*]], label [[FOR_BODY:%.*]]
41 ; UNROLL: for.body:
42 ; UNROLL-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], [[FOR_INC:%.*]] ], [ 128,…
43 ; UNROLL-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[F]], i64 [[INDVARS_IV]]
44 ; UNROLL-NEXT: [[TMP9:%.*]] = load i32, i32* [[ARRAYIDX]], align 4
45 ; UNROLL-NEXT: [[CMP1:%.*]] = icmp sgt i32 [[TMP9]], 100
46 ; UNROLL-NEXT: br i1 [[CMP1]], label [[IF_THEN:%.*]], label [[FOR_INC]]
47 ; UNROLL: if.then:
48 ; UNROLL-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP9]], 20
49 ; UNROLL-NEXT: store i32 [[ADD]], i32* [[ARRAYIDX]], align 4
50 ; UNROLL-NEXT: br label [[FOR_INC]]
51 ; UNROLL: for.inc:
52 ; UNROLL-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
53 ; UNROLL-NEXT: [[EXITCOND:%.*]] = icmp eq i64 [[INDVARS_IV_NEXT]], 128
54 ; UNROLL-NEXT: br i1 [[EXITCOND]], label [[FOR_END]], label [[FOR_BODY]], !llvm.loop [[LOOP2:![0…
55 ; UNROLL: for.end:
56 ; UNROLL-NEXT: ret i32 0
58 ; UNROLL-NOSIMPLIFY-LABEL: @test(
59 ; UNROLL-NOSIMPLIFY-NEXT: entry:
60 ; UNROLL-NOSIMPLIFY-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
61 ; UNROLL-NOSIMPLIFY: vector.ph:
62 ; UNROLL-NOSIMPLIFY-NEXT: br label [[VECTOR_BODY:%.*]]
63 ; UNROLL-NOSIMPLIFY: vector.body:
64 ; UNROLL-NOSIMPLIFY-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[…
65 ; UNROLL-NOSIMPLIFY-NEXT: [[INDUCTION:%.*]] = add i64 [[INDEX]], 0
66 ; UNROLL-NOSIMPLIFY-NEXT: [[INDUCTION1:%.*]] = add i64 [[INDEX]], 1
67 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP0:%.*]] = getelementptr inbounds i32, i32* [[F:%.*]], i64 [[INDUC…
68 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP1:%.*]] = getelementptr inbounds i32, i32* [[F]], i64 [[INDUCTION…
69 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP2:%.*]] = load i32, i32* [[TMP0]], align 4
70 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP3:%.*]] = load i32, i32* [[TMP1]], align 4
71 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP4:%.*]] = icmp sgt i32 [[TMP2]], 100
72 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP5:%.*]] = icmp sgt i32 [[TMP3]], 100
73 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[TMP4]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTIN…
74 ; UNROLL-NOSIMPLIFY: pred.store.if:
75 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP6:%.*]] = add nsw i32 [[TMP2]], 20
76 ; UNROLL-NOSIMPLIFY-NEXT: store i32 [[TMP6]], i32* [[TMP0]], align 4
77 ; UNROLL-NOSIMPLIFY-NEXT: br label [[PRED_STORE_CONTINUE]]
78 ; UNROLL-NOSIMPLIFY: pred.store.continue:
79 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[TMP5]], label [[PRED_STORE_IF2:%.*]], label [[PRED_STORE_CONTI…
80 ; UNROLL-NOSIMPLIFY: pred.store.if2:
81 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP7:%.*]] = add nsw i32 [[TMP3]], 20
82 ; UNROLL-NOSIMPLIFY-NEXT: store i32 [[TMP7]], i32* [[TMP1]], align 4
83 ; UNROLL-NOSIMPLIFY-NEXT: br label [[PRED_STORE_CONTINUE3]]
84 ; UNROLL-NOSIMPLIFY: pred.store.continue3:
85 ; UNROLL-NOSIMPLIFY-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
86 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT]], 128
87 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[TMP8]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !ll…
88 ; UNROLL-NOSIMPLIFY: middle.block:
89 ; UNROLL-NOSIMPLIFY-NEXT: [[CMP_N:%.*]] = icmp eq i64 128, 128
90 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[CMP_N]], label [[FOR_END:%.*]], label [[SCALAR_PH]]
91 ; UNROLL-NOSIMPLIFY: scalar.ph:
92 ; UNROLL-NOSIMPLIFY-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 128, [[MIDDLE_BLOCK]] ], [ 0, [[ENTR…
93 ; UNROLL-NOSIMPLIFY-NEXT: br label [[FOR_BODY:%.*]]
94 ; UNROLL-NOSIMPLIFY: for.body:
95 ; UNROLL-NOSIMPLIFY-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ […
96 ; UNROLL-NOSIMPLIFY-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[F]], i64 [[INDVA…
97 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP9:%.*]] = load i32, i32* [[ARRAYIDX]], align 4
98 ; UNROLL-NOSIMPLIFY-NEXT: [[CMP1:%.*]] = icmp sgt i32 [[TMP9]], 100
99 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[CMP1]], label [[IF_THEN:%.*]], label [[FOR_INC]]
100 ; UNROLL-NOSIMPLIFY: if.then:
101 ; UNROLL-NOSIMPLIFY-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP9]], 20
102 ; UNROLL-NOSIMPLIFY-NEXT: store i32 [[ADD]], i32* [[ARRAYIDX]], align 4
103 ; UNROLL-NOSIMPLIFY-NEXT: br label [[FOR_INC]]
104 ; UNROLL-NOSIMPLIFY: for.inc:
105 ; UNROLL-NOSIMPLIFY-NEXT: [[INDVARS_IV_NEXT]] = add nuw nsw i64 [[INDVARS_IV]], 1
106 ; UNROLL-NOSIMPLIFY-NEXT: [[EXITCOND:%.*]] = icmp eq i64 [[INDVARS_IV_NEXT]], 128
107 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[EXITCOND]], label [[FOR_END]], label [[FOR_BODY]], !llvm.loop …
108 ; UNROLL-NOSIMPLIFY: for.end:
109 ; UNROLL-NOSIMPLIFY-NEXT: ret i32 0
196 ; UNROLL-LABEL: @bug18724(
197 ; UNROLL-NEXT: entry:
198 ; UNROLL-NEXT: [[TMP0:%.*]] = xor i1 [[COND:%.*]], true
199 ; UNROLL-NEXT: call void @llvm.assume(i1 [[TMP0]])
200 ; UNROLL-NEXT: [[TMP1:%.*]] = trunc i64 [[V_1:%.*]] to i32
201 ; UNROLL-NEXT: [[SMAX:%.*]] = call i32 @llvm.smax.i32(i32 [[TMP1]], i32 0)
202 ; UNROLL-NEXT: [[TMP2:%.*]] = sub i32 [[SMAX]], [[TMP1]]
203 ; UNROLL-NEXT: [[TMP3:%.*]] = zext i32 [[TMP2]] to i64
204 ; UNROLL-NEXT: [[TMP4:%.*]] = add nuw nsw i64 [[TMP3]], 1
205 ; UNROLL-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[TMP4]], 2
206 ; UNROLL-NEXT: br i1 [[MIN_ITERS_CHECK]], label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
207 ; UNROLL: vector.ph:
208 ; UNROLL-NEXT: [[N_MOD_VF:%.*]] = urem i64 [[TMP4]], 2
209 ; UNROLL-NEXT: [[N_VEC:%.*]] = sub i64 [[TMP4]], [[N_MOD_VF]]
210 ; UNROLL-NEXT: [[IND_END:%.*]] = add i64 [[V_1]], [[N_VEC]]
211 ; UNROLL-NEXT: br label [[VECTOR_BODY:%.*]]
212 ; UNROLL: vector.body:
213 ; UNROLL-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_…
214 ; UNROLL-NEXT: [[VEC_PHI:%.*]] = phi i32 [ [[V_2:%.*]], [[VECTOR_PH]] ], [ [[PREDPHI:%.*]], [[PR…
215 ; UNROLL-NEXT: [[VEC_PHI2:%.*]] = phi i32 [ 0, [[VECTOR_PH]] ], [ [[PREDPHI5:%.*]], [[PRED_STORE…
216 ; UNROLL-NEXT: [[OFFSET_IDX:%.*]] = add i64 [[V_1]], [[INDEX]]
217 ; UNROLL-NEXT: br i1 [[COND_2:%.*]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE4]]
218 ; UNROLL: pred.store.if:
219 ; UNROLL-NEXT: [[INDUCTION:%.*]] = add i64 [[OFFSET_IDX]], 0
220 ; UNROLL-NEXT: [[TMP5:%.*]] = getelementptr inbounds [768 x i32], [768 x i32]* [[PTR:%.*]], i64 …
221 ; UNROLL-NEXT: [[TMP6:%.*]] = load i32, i32* [[TMP5]], align 4
222 ; UNROLL-NEXT: store i32 [[TMP6]], i32* [[TMP5]], align 4
223 ; UNROLL-NEXT: [[INDUCTION1:%.*]] = add i64 [[OFFSET_IDX]], 1
224 ; UNROLL-NEXT: [[TMP7:%.*]] = getelementptr inbounds [768 x i32], [768 x i32]* [[PTR]], i64 0, i…
225 ; UNROLL-NEXT: [[TMP8:%.*]] = load i32, i32* [[TMP7]], align 4
226 ; UNROLL-NEXT: store i32 [[TMP8]], i32* [[TMP7]], align 4
227 ; UNROLL-NEXT: br label [[PRED_STORE_CONTINUE4]]
228 ; UNROLL: pred.store.continue4:
229 ; UNROLL-NEXT: [[TMP9:%.*]] = add i32 [[VEC_PHI]], 1
230 ; UNROLL-NEXT: [[TMP10:%.*]] = add i32 [[VEC_PHI2]], 1
231 ; UNROLL-NEXT: [[TMP11:%.*]] = xor i1 [[COND_2]], true
232 ; UNROLL-NEXT: [[TMP12:%.*]] = xor i1 [[COND_2]], true
233 ; UNROLL-NEXT: [[PREDPHI]] = select i1 [[TMP11]], i32 [[VEC_PHI]], i32 [[TMP9]]
234 ; UNROLL-NEXT: [[PREDPHI5]] = select i1 [[TMP12]], i32 [[VEC_PHI2]], i32 [[TMP10]]
235 ; UNROLL-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
236 ; UNROLL-NEXT: [[TMP13:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
237 ; UNROLL-NEXT: br i1 [[TMP13]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[…
238 ; UNROLL: middle.block:
239 ; UNROLL-NEXT: [[BIN_RDX:%.*]] = add i32 [[PREDPHI5]], [[PREDPHI]]
240 ; UNROLL-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[TMP4]], [[N_VEC]]
241 ; UNROLL-NEXT: [[TMP14:%.*]] = xor i1 [[CMP_N]], true
242 ; UNROLL-NEXT: call void @llvm.assume(i1 [[TMP14]])
243 ; UNROLL-NEXT: br label [[SCALAR_PH]]
244 ; UNROLL: scalar.ph:
245 ; UNROLL-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[IND_END]], [[MIDDLE_BLOCK]] ], [ [[V_1]], [[E…
246 ; UNROLL-NEXT: [[BC_MERGE_RDX:%.*]] = phi i32 [ [[V_2]], [[ENTRY]] ], [ [[BIN_RDX]], [[MIDDLE_BL…
247 ; UNROLL-NEXT: br label [[FOR_BODY14:%.*]]
248 ; UNROLL: for.body14:
249 ; UNROLL-NEXT: [[INDVARS_IV3:%.*]] = phi i64 [ [[INDVARS_IV_NEXT4:%.*]], [[FOR_INC23:%.*]] ], [ …
250 ; UNROLL-NEXT: [[INEWCHUNKS_120:%.*]] = phi i32 [ [[INEWCHUNKS_2:%.*]], [[FOR_INC23]] ], [ [[BC_…
251 ; UNROLL-NEXT: [[ARRAYIDX16:%.*]] = getelementptr inbounds [768 x i32], [768 x i32]* [[PTR]], i6…
252 ; UNROLL-NEXT: [[TMP:%.*]] = load i32, i32* [[ARRAYIDX16]], align 4
253 ; UNROLL-NEXT: br i1 [[COND_2]], label [[IF_THEN18:%.*]], label [[FOR_INC23]]
254 ; UNROLL: if.then18:
255 ; UNROLL-NEXT: store i32 [[TMP]], i32* [[ARRAYIDX16]], align 4
256 ; UNROLL-NEXT: [[INC21:%.*]] = add nsw i32 [[INEWCHUNKS_120]], 1
257 ; UNROLL-NEXT: br label [[FOR_INC23]]
258 ; UNROLL: for.inc23:
259 ; UNROLL-NEXT: [[INEWCHUNKS_2]] = phi i32 [ [[INC21]], [[IF_THEN18]] ], [ [[INEWCHUNKS_120]], [[…
260 ; UNROLL-NEXT: [[INDVARS_IV_NEXT4]] = add nsw i64 [[INDVARS_IV3]], 1
261 ; UNROLL-NEXT: [[TMP1:%.*]] = trunc i64 [[INDVARS_IV3]] to i32
262 ; UNROLL-NEXT: [[CMP13:%.*]] = icmp slt i32 [[TMP1]], 0
263 ; UNROLL-NEXT: call void @llvm.assume(i1 [[CMP13]])
264 ; UNROLL-NEXT: br label [[FOR_BODY14]]
266 ; UNROLL-NOSIMPLIFY-LABEL: @bug18724(
267 ; UNROLL-NOSIMPLIFY-NEXT: entry:
268 ; UNROLL-NOSIMPLIFY-NEXT: br label [[FOR_BODY9:%.*]]
269 ; UNROLL-NOSIMPLIFY: for.body9:
270 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[COND:%.*]], label [[FOR_INC26:%.*]], label [[FOR_BODY14_PREHEA…
271 ; UNROLL-NOSIMPLIFY: for.body14.preheader:
272 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP0:%.*]] = trunc i64 [[V_1:%.*]] to i32
273 ; UNROLL-NOSIMPLIFY-NEXT: [[SMAX:%.*]] = call i32 @llvm.smax.i32(i32 [[TMP0]], i32 0)
274 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP1:%.*]] = sub i32 [[SMAX]], [[TMP0]]
275 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP2:%.*]] = zext i32 [[TMP1]] to i64
276 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP3:%.*]] = add nuw nsw i64 [[TMP2]], 1
277 ; UNROLL-NOSIMPLIFY-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[TMP3]], 2
278 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[MIN_ITERS_CHECK]], label [[SCALAR_PH:%.*]], label [[VECTOR_PH:…
279 ; UNROLL-NOSIMPLIFY: vector.ph:
280 ; UNROLL-NOSIMPLIFY-NEXT: [[N_MOD_VF:%.*]] = urem i64 [[TMP3]], 2
281 ; UNROLL-NOSIMPLIFY-NEXT: [[N_VEC:%.*]] = sub i64 [[TMP3]], [[N_MOD_VF]]
282 ; UNROLL-NOSIMPLIFY-NEXT: [[IND_END:%.*]] = add i64 [[V_1]], [[N_VEC]]
283 ; UNROLL-NOSIMPLIFY-NEXT: br label [[VECTOR_BODY:%.*]]
284 ; UNROLL-NOSIMPLIFY: vector.body:
285 ; UNROLL-NOSIMPLIFY-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[…
286 ; UNROLL-NOSIMPLIFY-NEXT: [[VEC_PHI:%.*]] = phi i32 [ [[V_2:%.*]], [[VECTOR_PH]] ], [ [[PREDPHI:…
287 ; UNROLL-NOSIMPLIFY-NEXT: [[VEC_PHI2:%.*]] = phi i32 [ 0, [[VECTOR_PH]] ], [ [[PREDPHI5:%.*]], […
288 ; UNROLL-NOSIMPLIFY-NEXT: [[OFFSET_IDX:%.*]] = add i64 [[V_1]], [[INDEX]]
289 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[COND_2:%.*]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_…
290 ; UNROLL-NOSIMPLIFY: pred.store.if:
291 ; UNROLL-NOSIMPLIFY-NEXT: [[INDUCTION:%.*]] = add i64 [[OFFSET_IDX]], 0
292 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP4:%.*]] = getelementptr inbounds [768 x i32], [768 x i32]* [[PTR:…
293 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP5:%.*]] = load i32, i32* [[TMP4]], align 4
294 ; UNROLL-NOSIMPLIFY-NEXT: store i32 [[TMP5]], i32* [[TMP4]], align 4
295 ; UNROLL-NOSIMPLIFY-NEXT: br label [[PRED_STORE_CONTINUE]]
296 ; UNROLL-NOSIMPLIFY: pred.store.continue:
297 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[COND_2]], label [[PRED_STORE_IF3:%.*]], label [[PRED_STORE_CON…
298 ; UNROLL-NOSIMPLIFY: pred.store.if3:
299 ; UNROLL-NOSIMPLIFY-NEXT: [[INDUCTION1:%.*]] = add i64 [[OFFSET_IDX]], 1
300 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP6:%.*]] = getelementptr inbounds [768 x i32], [768 x i32]* [[PTR]…
301 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP7:%.*]] = load i32, i32* [[TMP6]], align 4
302 ; UNROLL-NOSIMPLIFY-NEXT: store i32 [[TMP7]], i32* [[TMP6]], align 4
303 ; UNROLL-NOSIMPLIFY-NEXT: br label [[PRED_STORE_CONTINUE4]]
304 ; UNROLL-NOSIMPLIFY: pred.store.continue4:
305 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP8:%.*]] = add i32 [[VEC_PHI]], 1
306 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP9:%.*]] = add i32 [[VEC_PHI2]], 1
307 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP10:%.*]] = xor i1 [[COND_2]], true
308 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP11:%.*]] = xor i1 [[COND_2]], true
309 ; UNROLL-NOSIMPLIFY-NEXT: [[PREDPHI]] = select i1 [[TMP10]], i32 [[VEC_PHI]], i32 [[TMP8]]
310 ; UNROLL-NOSIMPLIFY-NEXT: [[PREDPHI5]] = select i1 [[TMP11]], i32 [[VEC_PHI2]], i32 [[TMP9]]
311 ; UNROLL-NOSIMPLIFY-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
312 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP12:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
313 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[TMP12]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !l…
314 ; UNROLL-NOSIMPLIFY: middle.block:
315 ; UNROLL-NOSIMPLIFY-NEXT: [[BIN_RDX:%.*]] = add i32 [[PREDPHI5]], [[PREDPHI]]
316 ; UNROLL-NOSIMPLIFY-NEXT: [[CMP_N:%.*]] = icmp eq i64 [[TMP3]], [[N_VEC]]
317 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[CMP_N]], label [[FOR_INC26_LOOPEXIT:%.*]], label [[SCALAR_PH]]
318 ; UNROLL-NOSIMPLIFY: scalar.ph:
319 ; UNROLL-NOSIMPLIFY-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[IND_END]], [[MIDDLE_BLOCK]] ], [ […
320 ; UNROLL-NOSIMPLIFY-NEXT: [[BC_MERGE_RDX:%.*]] = phi i32 [ [[V_2]], [[FOR_BODY14_PREHEADER]] ], …
321 ; UNROLL-NOSIMPLIFY-NEXT: br label [[FOR_BODY14:%.*]]
322 ; UNROLL-NOSIMPLIFY: for.body14:
323 ; UNROLL-NOSIMPLIFY-NEXT: [[INDVARS_IV3:%.*]] = phi i64 [ [[INDVARS_IV_NEXT4:%.*]], [[FOR_INC23:…
324 ; UNROLL-NOSIMPLIFY-NEXT: [[INEWCHUNKS_120:%.*]] = phi i32 [ [[INEWCHUNKS_2:%.*]], [[FOR_INC23]]…
325 ; UNROLL-NOSIMPLIFY-NEXT: [[ARRAYIDX16:%.*]] = getelementptr inbounds [768 x i32], [768 x i32]* …
326 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP:%.*]] = load i32, i32* [[ARRAYIDX16]], align 4
327 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[COND_2]], label [[IF_THEN18:%.*]], label [[FOR_INC23]]
328 ; UNROLL-NOSIMPLIFY: if.then18:
329 ; UNROLL-NOSIMPLIFY-NEXT: store i32 [[TMP]], i32* [[ARRAYIDX16]], align 4
330 ; UNROLL-NOSIMPLIFY-NEXT: [[INC21:%.*]] = add nsw i32 [[INEWCHUNKS_120]], 1
331 ; UNROLL-NOSIMPLIFY-NEXT: br label [[FOR_INC23]]
332 ; UNROLL-NOSIMPLIFY: for.inc23:
333 ; UNROLL-NOSIMPLIFY-NEXT: [[INEWCHUNKS_2]] = phi i32 [ [[INC21]], [[IF_THEN18]] ], [ [[INEWCHUNK…
334 ; UNROLL-NOSIMPLIFY-NEXT: [[INDVARS_IV_NEXT4]] = add nsw i64 [[INDVARS_IV3]], 1
335 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP1:%.*]] = trunc i64 [[INDVARS_IV3]] to i32
336 ; UNROLL-NOSIMPLIFY-NEXT: [[CMP13:%.*]] = icmp slt i32 [[TMP1]], 0
337 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[CMP13]], label [[FOR_BODY14]], label [[FOR_INC26_LOOPEXIT]], !…
338 ; UNROLL-NOSIMPLIFY: for.inc26.loopexit:
339 ; UNROLL-NOSIMPLIFY-NEXT: [[INEWCHUNKS_2_LCSSA:%.*]] = phi i32 [ [[INEWCHUNKS_2]], [[FOR_INC23]]…
340 ; UNROLL-NOSIMPLIFY-NEXT: br label [[FOR_INC26]]
341 ; UNROLL-NOSIMPLIFY: for.inc26:
342 ; UNROLL-NOSIMPLIFY-NEXT: [[INEWCHUNKS_1_LCSSA:%.*]] = phi i32 [ undef, [[FOR_BODY9]] ], [ [[INE…
343 ; UNROLL-NOSIMPLIFY-NEXT: unreachable
459 ; UNROLL-LABEL: @minimal_bit_widths(
460 ; UNROLL-NEXT: entry:
461 ; UNROLL-NEXT: br label [[VECTOR_BODY:%.*]]
462 ; UNROLL: vector.body:
463 ; UNROLL-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_…
464 ; UNROLL-NEXT: br i1 [[C:%.*]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE6]]
465 ; UNROLL: pred.store.if:
466 ; UNROLL-NEXT: [[INDUCTION3:%.*]] = add i64 [[INDEX]], 0
467 ; UNROLL-NEXT: [[TMP0:%.*]] = getelementptr i8, i8* undef, i64 [[INDUCTION3]]
468 ; UNROLL-NEXT: [[TMP1:%.*]] = load i8, i8* [[TMP0]], align 1
469 ; UNROLL-NEXT: [[TMP2:%.*]] = zext i8 [[TMP1]] to i32
470 ; UNROLL-NEXT: [[TMP3:%.*]] = trunc i32 [[TMP2]] to i8
471 ; UNROLL-NEXT: store i8 [[TMP3]], i8* [[TMP0]], align 1
472 ; UNROLL-NEXT: [[INDUCTION4:%.*]] = add i64 [[INDEX]], 1
473 ; UNROLL-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* undef, i64 [[INDUCTION4]]
474 ; UNROLL-NEXT: [[TMP5:%.*]] = load i8, i8* [[TMP4]], align 1
475 ; UNROLL-NEXT: [[TMP6:%.*]] = zext i8 [[TMP5]] to i32
476 ; UNROLL-NEXT: [[TMP7:%.*]] = trunc i32 [[TMP6]] to i8
477 ; UNROLL-NEXT: store i8 [[TMP7]], i8* [[TMP4]], align 1
478 ; UNROLL-NEXT: br label [[PRED_STORE_CONTINUE6]]
479 ; UNROLL: pred.store.continue4:
480 ; UNROLL-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
481 ; UNROLL-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT]], undef
482 ; UNROLL-NEXT: br i1 [[TMP8]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[L…
483 ; UNROLL: middle.block:
484 ; UNROLL-NEXT: [[CMP_N:%.*]] = icmp eq i64 undef, undef
485 ; UNROLL-NEXT: br i1 [[CMP_N]], label [[FOR_END:%.*]], label [[FOR_BODY:%.*]]
486 ; UNROLL: for.body:
487 ; UNROLL-NEXT: [[TMP0:%.*]] = phi i64 [ [[TMP6:%.*]], [[FOR_INC:%.*]] ], [ undef, [[MIDDLE_BLOCK…
488 ; UNROLL-NEXT: [[TMP1:%.*]] = phi i64 [ [[TMP7:%.*]], [[FOR_INC]] ], [ undef, [[MIDDLE_BLOCK]] ]
489 ; UNROLL-NEXT: [[TMP2:%.*]] = getelementptr i8, i8* undef, i64 [[TMP0]]
490 ; UNROLL-NEXT: [[TMP3:%.*]] = load i8, i8* [[TMP2]], align 1
491 ; UNROLL-NEXT: br i1 [[C]], label [[IF_THEN:%.*]], label [[FOR_INC]]
492 ; UNROLL: if.then:
493 ; UNROLL-NEXT: [[TMP4:%.*]] = zext i8 [[TMP3]] to i32
494 ; UNROLL-NEXT: [[TMP5:%.*]] = trunc i32 [[TMP4]] to i8
495 ; UNROLL-NEXT: store i8 [[TMP5]], i8* [[TMP2]], align 1
496 ; UNROLL-NEXT: br label [[FOR_INC]]
497 ; UNROLL: for.inc:
498 ; UNROLL-NEXT: [[TMP6]] = add nuw nsw i64 [[TMP0]], 1
499 ; UNROLL-NEXT: [[TMP7]] = add i64 [[TMP1]], -1
500 ; UNROLL-NEXT: [[TMP8:%.*]] = icmp eq i64 [[TMP7]], 0
501 ; UNROLL-NEXT: br i1 [[TMP8]], label [[FOR_END]], label [[FOR_BODY]], !llvm.loop [[LOOP5:![0-9]+…
502 ; UNROLL: for.end:
503 ; UNROLL-NEXT: ret void
505 ; UNROLL-NOSIMPLIFY-LABEL: @minimal_bit_widths(
506 ; UNROLL-NOSIMPLIFY-NEXT: entry:
507 ; UNROLL-NOSIMPLIFY-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
508 ; UNROLL-NOSIMPLIFY: vector.ph:
509 ; UNROLL-NOSIMPLIFY-NEXT: br label [[VECTOR_BODY:%.*]]
510 ; UNROLL-NOSIMPLIFY: vector.body:
511 ; UNROLL-NOSIMPLIFY-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[…
512 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[C:%.*]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTI…
513 ; UNROLL-NOSIMPLIFY: pred.store.if:
514 ; UNROLL-NOSIMPLIFY-NEXT: [[INDUCTION3:%.*]] = add i64 [[INDEX]], 0
515 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP0:%.*]] = getelementptr i8, i8* undef, i64 [[INDUCTION3]]
516 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP1:%.*]] = load i8, i8* [[TMP0]], align 1
517 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP2:%.*]] = zext i8 [[TMP1]] to i32
518 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP3:%.*]] = trunc i32 [[TMP2]] to i8
519 ; UNROLL-NOSIMPLIFY-NEXT: store i8 [[TMP3]], i8* [[TMP0]], align 1
520 ; UNROLL-NOSIMPLIFY-NEXT: br label [[PRED_STORE_CONTINUE]]
521 ; UNROLL-NOSIMPLIFY: pred.store.continue:
522 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[C]], label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE…
523 ; UNROLL-NOSIMPLIFY: pred.store.if3:
524 ; UNROLL-NOSIMPLIFY-NEXT: [[INDUCTION2:%.*]] = add i64 [[INDEX]], 1
525 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP4:%.*]] = getelementptr i8, i8* undef, i64 [[INDUCTION2]]
526 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP5:%.*]] = load i8, i8* [[TMP4]], align 1
527 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP6:%.*]] = zext i8 [[TMP5]] to i32
528 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP7:%.*]] = trunc i32 [[TMP6]] to i8
529 ; UNROLL-NOSIMPLIFY-NEXT: store i8 [[TMP7]], i8* [[TMP4]], align 1
530 ; UNROLL-NOSIMPLIFY-NEXT: br label [[PRED_STORE_CONTINUE6]]
531 ; UNROLL-NOSIMPLIFY: pred.store.continue4:
532 ; UNROLL-NOSIMPLIFY-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
533 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT]], undef
534 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[TMP8]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !ll…
535 ; UNROLL-NOSIMPLIFY: middle.block:
536 ; UNROLL-NOSIMPLIFY-NEXT: [[CMP_N:%.*]] = icmp eq i64 undef, undef
537 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[CMP_N]], label [[FOR_END:%.*]], label [[SCALAR_PH]]
538 ; UNROLL-NOSIMPLIFY: scalar.ph:
539 ; UNROLL-NOSIMPLIFY-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ undef, [[MIDDLE_BLOCK]] ], [ 0, [[EN…
540 ; UNROLL-NOSIMPLIFY-NEXT: [[BC_RESUME_VAL1:%.*]] = phi i64 [ undef, [[MIDDLE_BLOCK]] ], [ undef,…
541 ; UNROLL-NOSIMPLIFY-NEXT: br label [[FOR_BODY:%.*]]
542 ; UNROLL-NOSIMPLIFY: for.body:
543 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP0:%.*]] = phi i64 [ [[TMP6:%.*]], [[FOR_INC:%.*]] ], [ [[BC_RESUM…
544 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP1:%.*]] = phi i64 [ [[TMP7:%.*]], [[FOR_INC]] ], [ [[BC_RESUME_VA…
545 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP2:%.*]] = getelementptr i8, i8* undef, i64 [[TMP0]]
546 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP3:%.*]] = load i8, i8* [[TMP2]], align 1
547 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[C]], label [[IF_THEN:%.*]], label [[FOR_INC]]
548 ; UNROLL-NOSIMPLIFY: if.then:
549 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP4:%.*]] = zext i8 [[TMP3]] to i32
550 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP5:%.*]] = trunc i32 [[TMP4]] to i8
551 ; UNROLL-NOSIMPLIFY-NEXT: store i8 [[TMP5]], i8* [[TMP2]], align 1
552 ; UNROLL-NOSIMPLIFY-NEXT: br label [[FOR_INC]]
553 ; UNROLL-NOSIMPLIFY: for.inc:
554 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP6]] = add nuw nsw i64 [[TMP0]], 1
555 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP7]] = add i64 [[TMP1]], -1
556 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP8:%.*]] = icmp eq i64 [[TMP7]], 0
557 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[TMP8]], label [[FOR_END]], label [[FOR_BODY]], !llvm.loop [[LO…
558 ; UNROLL-NOSIMPLIFY: for.end:
559 ; UNROLL-NOSIMPLIFY-NEXT: ret void
646 ; UNROLL-LABEL: @minimal_bit_widths_with_aliasing_store(
647 ; UNROLL-NEXT: entry:
648 ; UNROLL-NEXT: br label [[FOR_BODY:%.*]]
649 ; UNROLL: for.body:
650 ; UNROLL-NEXT: [[TMP0:%.*]] = phi i64 [ [[TMP6:%.*]], [[FOR_INC:%.*]] ], [ 0, [[ENTRY:%.*]] ]
651 ; UNROLL-NEXT: [[TMP1:%.*]] = phi i64 [ [[TMP7:%.*]], [[FOR_INC]] ], [ 0, [[ENTRY]] ]
652 ; UNROLL-NEXT: [[TMP2:%.*]] = getelementptr i8, i8* [[PTR:%.*]], i64 [[TMP0]]
653 ; UNROLL-NEXT: [[TMP3:%.*]] = load i8, i8* [[TMP2]], align 1
654 ; UNROLL-NEXT: store i8 0, i8* [[TMP2]], align 1
655 ; UNROLL-NEXT: br i1 [[C:%.*]], label [[IF_THEN:%.*]], label [[FOR_INC]]
656 ; UNROLL: if.then:
657 ; UNROLL-NEXT: [[TMP4:%.*]] = zext i8 [[TMP3]] to i32
658 ; UNROLL-NEXT: [[TMP5:%.*]] = trunc i32 [[TMP4]] to i8
659 ; UNROLL-NEXT: store i8 [[TMP5]], i8* [[TMP2]], align 1
660 ; UNROLL-NEXT: br label [[FOR_INC]]
661 ; UNROLL: for.inc:
662 ; UNROLL-NEXT: [[TMP6]] = add nuw nsw i64 [[TMP0]], 1
663 ; UNROLL-NEXT: [[TMP7]] = add i64 [[TMP1]], -1
664 ; UNROLL-NEXT: [[TMP8:%.*]] = icmp eq i64 [[TMP7]], 0
665 ; UNROLL-NEXT: br i1 [[TMP8]], label [[FOR_END:%.*]], label [[FOR_BODY]], !llvm.loop [[LOOP6:![0…
666 ; UNROLL: for.end:
667 ; UNROLL-NEXT: ret void
669 ; UNROLL-NOSIMPLIFY-LABEL: @minimal_bit_widths_with_aliasing_store(
670 ; UNROLL-NOSIMPLIFY-NEXT: entry:
671 ; UNROLL-NOSIMPLIFY-NEXT: br i1 true, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
672 ; UNROLL-NOSIMPLIFY: vector.ph:
673 ; UNROLL-NOSIMPLIFY-NEXT: br label [[VECTOR_BODY:%.*]]
674 ; UNROLL-NOSIMPLIFY: vector.body:
675 ; UNROLL-NOSIMPLIFY-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[…
676 ; UNROLL-NOSIMPLIFY-NEXT: [[INDUCTION:%.*]] = add i64 [[INDEX]], 0
677 ; UNROLL-NOSIMPLIFY-NEXT: [[INDUCTION2:%.*]] = add i64 [[INDEX]], 1
678 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP0:%.*]] = getelementptr i8, i8* [[PTR:%.*]], i64 [[INDUCTION]]
679 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP1:%.*]] = getelementptr i8, i8* [[PTR]], i64 [[INDUCTION2]]
680 ; UNROLL-NOSIMPLIFY-NEXT: store i8 0, i8* [[TMP0]], align 1
681 ; UNROLL-NOSIMPLIFY-NEXT: store i8 0, i8* [[TMP1]], align 1
682 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[C:%.*]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTI…
683 ; UNROLL-NOSIMPLIFY: pred.store.if:
684 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP2:%.*]] = load i8, i8* [[TMP0]], align 1
685 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP3:%.*]] = zext i8 [[TMP2]] to i32
686 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP4:%.*]] = trunc i32 [[TMP3]] to i8
687 ; UNROLL-NOSIMPLIFY-NEXT: store i8 [[TMP4]], i8* [[TMP0]], align 1
688 ; UNROLL-NOSIMPLIFY-NEXT: br label [[PRED_STORE_CONTINUE]]
689 ; UNROLL-NOSIMPLIFY: pred.store.continue:
690 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[C]], label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE…
691 ; UNROLL-NOSIMPLIFY: pred.store.if3:
692 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP5:%.*]] = load i8, i8* [[TMP1]], align 1
693 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP6:%.*]] = zext i8 [[TMP5]] to i32
694 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP7:%.*]] = trunc i32 [[TMP6]] to i8
695 ; UNROLL-NOSIMPLIFY-NEXT: store i8 [[TMP7]], i8* [[TMP1]], align 1
696 ; UNROLL-NOSIMPLIFY-NEXT: br label [[PRED_STORE_CONTINUE6]]
697 ; UNROLL-NOSIMPLIFY: pred.store.continue4:
698 ; UNROLL-NOSIMPLIFY-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 2
699 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT]], 0
700 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[TMP8]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !ll…
701 ; UNROLL-NOSIMPLIFY: middle.block:
702 ; UNROLL-NOSIMPLIFY-NEXT: [[CMP_N:%.*]] = icmp eq i64 0, 0
703 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[CMP_N]], label [[FOR_END:%.*]], label [[SCALAR_PH]]
704 ; UNROLL-NOSIMPLIFY: scalar.ph:
705 ; UNROLL-NOSIMPLIFY-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 0, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:…
706 ; UNROLL-NOSIMPLIFY-NEXT: [[BC_RESUME_VAL1:%.*]] = phi i64 [ 0, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY…
707 ; UNROLL-NOSIMPLIFY-NEXT: br label [[FOR_BODY:%.*]]
708 ; UNROLL-NOSIMPLIFY: for.body:
709 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP0:%.*]] = phi i64 [ [[TMP6:%.*]], [[FOR_INC:%.*]] ], [ [[BC_RESUM…
710 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP1:%.*]] = phi i64 [ [[TMP7:%.*]], [[FOR_INC]] ], [ [[BC_RESUME_VA…
711 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP2:%.*]] = getelementptr i8, i8* [[PTR]], i64 [[TMP0]]
712 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP3:%.*]] = load i8, i8* [[TMP2]], align 1
713 ; UNROLL-NOSIMPLIFY-NEXT: store i8 0, i8* [[TMP2]], align 1
714 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[C]], label [[IF_THEN:%.*]], label [[FOR_INC]]
715 ; UNROLL-NOSIMPLIFY: if.then:
716 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP4:%.*]] = zext i8 [[TMP3]] to i32
717 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP5:%.*]] = trunc i32 [[TMP4]] to i8
718 ; UNROLL-NOSIMPLIFY-NEXT: store i8 [[TMP5]], i8* [[TMP2]], align 1
719 ; UNROLL-NOSIMPLIFY-NEXT: br label [[FOR_INC]]
720 ; UNROLL-NOSIMPLIFY: for.inc:
721 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP6]] = add nuw nsw i64 [[TMP0]], 1
722 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP7]] = add i64 [[TMP1]], -1
723 ; UNROLL-NOSIMPLIFY-NEXT: [[TMP8:%.*]] = icmp eq i64 [[TMP7]], 0
724 ; UNROLL-NOSIMPLIFY-NEXT: br i1 [[TMP8]], label [[FOR_END]], label [[FOR_BODY]], !llvm.loop [[LO…
725 ; UNROLL-NOSIMPLIFY: for.end:
726 ; UNROLL-NOSIMPLIFY-NEXT: ret void