1 ; RUN: llc -march=hexagon -O3 < %s | FileCheck %s
6 define void @f0(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
8 %v0 = icmp slt i32 32623, %a2
9 br i1 %v0, label %b1, label %b3
14 b2: ; preds = %b2, %b1
15 %v1 = phi i32 [ 32623, %b1 ], [ %v7, %b2 ]
16 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
17 %v3 = load i8, i8* %v2, align 1
18 %v4 = zext i8 %v3 to i32
19 %v5 = add nsw i32 %v4, 1
20 %v6 = trunc i32 %v5 to i8
21 store i8 %v6, i8* %v2, align 1
22 %v7 = add nsw i32 %v1, 1
23 %v8 = icmp ne i32 %v7, %a2
24 br i1 %v8, label %b2, label %b3
26 b3: ; preds = %b2, %b0
33 define void @f1(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
35 %v0 = icmp slt i32 29554, %a2
36 br i1 %v0, label %b1, label %b3
41 b2: ; preds = %b2, %b1
42 %v1 = phi i32 [ 29554, %b1 ], [ %v7, %b2 ]
43 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
44 %v3 = load i8, i8* %v2, align 1
45 %v4 = zext i8 %v3 to i32
46 %v5 = add nsw i32 %v4, 1
47 %v6 = trunc i32 %v5 to i8
48 store i8 %v6, i8* %v2, align 1
49 %v7 = add nsw i32 %v1, 2
50 %v8 = icmp ne i32 %v7, %a2
51 br i1 %v8, label %b2, label %b3
53 b3: ; preds = %b2, %b0
60 define void @f2(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
62 %v0 = icmp slt i32 15692, %a2
63 br i1 %v0, label %b1, label %b3
68 b2: ; preds = %b2, %b1
69 %v1 = phi i32 [ 15692, %b1 ], [ %v7, %b2 ]
70 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
71 %v3 = load i8, i8* %v2, align 1
72 %v4 = zext i8 %v3 to i32
73 %v5 = add nsw i32 %v4, 1
74 %v6 = trunc i32 %v5 to i8
75 store i8 %v6, i8* %v2, align 1
76 %v7 = add nsw i32 %v1, 4
77 %v8 = icmp ne i32 %v7, %a2
78 br i1 %v8, label %b2, label %b3
80 b3: ; preds = %b2, %b0
87 define void @f3(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
89 %v0 = icmp slt i32 10449, %a2
90 br i1 %v0, label %b1, label %b3
95 b2: ; preds = %b2, %b1
96 %v1 = phi i32 [ 10449, %b1 ], [ %v7, %b2 ]
97 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
98 %v3 = load i8, i8* %v2, align 1
99 %v4 = zext i8 %v3 to i32
100 %v5 = add nsw i32 %v4, 1
101 %v6 = trunc i32 %v5 to i8
102 store i8 %v6, i8* %v2, align 1
103 %v7 = add nsw i32 %v1, 8
104 %v8 = icmp ne i32 %v7, %a2
105 br i1 %v8, label %b2, label %b3
107 b3: ; preds = %b2, %b0
114 define void @f4(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
116 %v0 = icmp slt i32 32087, %a2
117 br i1 %v0, label %b1, label %b3
122 b2: ; preds = %b2, %b1
123 %v1 = phi i32 [ 32087, %b1 ], [ %v7, %b2 ]
124 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
125 %v3 = load i8, i8* %v2, align 1
126 %v4 = zext i8 %v3 to i32
127 %v5 = add nsw i32 %v4, 1
128 %v6 = trunc i32 %v5 to i8
129 store i8 %v6, i8* %v2, align 1
130 %v7 = add nsw i32 %v1, 16
131 %v8 = icmp ne i32 %v7, %a2
132 br i1 %v8, label %b2, label %b3
134 b3: ; preds = %b2, %b0
141 define void @f5(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
143 %v0 = icmp slt i32 %a1, 3472
144 br i1 %v0, label %b1, label %b3
149 b2: ; preds = %b2, %b1
150 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]
151 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
152 %v3 = load i8, i8* %v2, align 1
153 %v4 = zext i8 %v3 to i32
154 %v5 = add nsw i32 %v4, 1
155 %v6 = trunc i32 %v5 to i8
156 store i8 %v6, i8* %v2, align 1
157 %v7 = add nsw i32 %v1, 1
158 %v8 = icmp ne i32 %v7, 3472
159 br i1 %v8, label %b2, label %b3
161 b3: ; preds = %b2, %b0
168 define void @f6(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
170 %v0 = icmp slt i32 %a1, 8730
171 br i1 %v0, label %b1, label %b3
176 b2: ; preds = %b2, %b1
177 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]
178 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
179 %v3 = load i8, i8* %v2, align 1
180 %v4 = zext i8 %v3 to i32
181 %v5 = add nsw i32 %v4, 1
182 %v6 = trunc i32 %v5 to i8
183 store i8 %v6, i8* %v2, align 1
184 %v7 = add nsw i32 %v1, 2
185 %v8 = icmp ne i32 %v7, 8730
186 br i1 %v8, label %b2, label %b3
188 b3: ; preds = %b2, %b0
195 define void @f7(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
197 %v0 = icmp slt i32 %a1, 1493
198 br i1 %v0, label %b1, label %b3
203 b2: ; preds = %b2, %b1
204 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]
205 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
206 %v3 = load i8, i8* %v2, align 1
207 %v4 = zext i8 %v3 to i32
208 %v5 = add nsw i32 %v4, 1
209 %v6 = trunc i32 %v5 to i8
210 store i8 %v6, i8* %v2, align 1
211 %v7 = add nsw i32 %v1, 4
212 %v8 = icmp ne i32 %v7, 1493
213 br i1 %v8, label %b2, label %b3
215 b3: ; preds = %b2, %b0
222 define void @f8(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
224 %v0 = icmp slt i32 %a1, 1706
225 br i1 %v0, label %b1, label %b3
230 b2: ; preds = %b2, %b1
231 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]
232 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
233 %v3 = load i8, i8* %v2, align 1
234 %v4 = zext i8 %v3 to i32
235 %v5 = add nsw i32 %v4, 1
236 %v6 = trunc i32 %v5 to i8
237 store i8 %v6, i8* %v2, align 1
238 %v7 = add nsw i32 %v1, 8
239 %v8 = icmp ne i32 %v7, 1706
240 br i1 %v8, label %b2, label %b3
242 b3: ; preds = %b2, %b0
249 define void @f9(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
251 %v0 = icmp slt i32 %a1, 1886
252 br i1 %v0, label %b1, label %b3
257 b2: ; preds = %b2, %b1
258 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]
259 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
260 %v3 = load i8, i8* %v2, align 1
261 %v4 = zext i8 %v3 to i32
262 %v5 = add nsw i32 %v4, 1
263 %v6 = trunc i32 %v5 to i8
264 store i8 %v6, i8* %v2, align 1
265 %v7 = add nsw i32 %v1, 16
266 %v8 = icmp ne i32 %v7, 1886
267 br i1 %v8, label %b2, label %b3
269 b3: ; preds = %b2, %b0
276 define void @f10(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
278 %v0 = icmp slt i32 %a1, %a2
279 br i1 %v0, label %b1, label %b3
284 b2: ; preds = %b2, %b1
285 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]
286 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
287 %v3 = load i8, i8* %v2, align 1
288 %v4 = zext i8 %v3 to i32
289 %v5 = add nsw i32 %v4, 1
290 %v6 = trunc i32 %v5 to i8
291 store i8 %v6, i8* %v2, align 1
292 %v7 = add nsw i32 %v1, 1
293 %v8 = icmp ne i32 %v7, %a2
294 br i1 %v8, label %b2, label %b3
296 b3: ; preds = %b2, %b0
303 define void @f11(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
305 %v0 = icmp slt i32 %a1, %a2
306 br i1 %v0, label %b1, label %b3
311 b2: ; preds = %b2, %b1
312 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]
313 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
314 %v3 = load i8, i8* %v2, align 1
315 %v4 = zext i8 %v3 to i32
316 %v5 = add nsw i32 %v4, 1
317 %v6 = trunc i32 %v5 to i8
318 store i8 %v6, i8* %v2, align 1
319 %v7 = add nsw i32 %v1, 2
320 %v8 = icmp ne i32 %v7, %a2
321 br i1 %v8, label %b2, label %b3
323 b3: ; preds = %b2, %b0
330 define void @f12(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
332 %v0 = icmp slt i32 %a1, %a2
333 br i1 %v0, label %b1, label %b3
338 b2: ; preds = %b2, %b1
339 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]
340 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
341 %v3 = load i8, i8* %v2, align 1
342 %v4 = zext i8 %v3 to i32
343 %v5 = add nsw i32 %v4, 1
344 %v6 = trunc i32 %v5 to i8
345 store i8 %v6, i8* %v2, align 1
346 %v7 = add nsw i32 %v1, 4
347 %v8 = icmp ne i32 %v7, %a2
348 br i1 %v8, label %b2, label %b3
350 b3: ; preds = %b2, %b0
357 define void @f13(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
359 %v0 = icmp slt i32 %a1, %a2
360 br i1 %v0, label %b1, label %b3
365 b2: ; preds = %b2, %b1
366 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]
367 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
368 %v3 = load i8, i8* %v2, align 1
369 %v4 = zext i8 %v3 to i32
370 %v5 = add nsw i32 %v4, 1
371 %v6 = trunc i32 %v5 to i8
372 store i8 %v6, i8* %v2, align 1
373 %v7 = add nsw i32 %v1, 8
374 %v8 = icmp ne i32 %v7, %a2
375 br i1 %v8, label %b2, label %b3
377 b3: ; preds = %b2, %b0
384 define void @f14(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
386 %v0 = icmp slt i32 %a1, %a2
387 br i1 %v0, label %b1, label %b3
392 b2: ; preds = %b2, %b1
393 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]
394 %v2 = getelementptr inbounds i8, i8* %a0, i32 %v1
395 %v3 = load i8, i8* %v2, align 1
396 %v4 = zext i8 %v3 to i32
397 %v5 = add nsw i32 %v4, 1
398 %v6 = trunc i32 %v5 to i8
399 store i8 %v6, i8* %v2, align 1
400 %v7 = add nsw i32 %v1, 16
401 %v8 = icmp ne i32 %v7, %a2
402 br i1 %v8, label %b2, label %b3
404 b3: ; preds = %b2, %b0
408 attributes #0 = { nounwind "target-cpu"="hexagonv5" }