blob: 301a31a7c0b7d1c8904df07c23ca3d68895597a3 [file] [log] [blame]
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +00001; RUN: llc -march=hexagon -O3 < %s | FileCheck %s
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +00002
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +00003; CHECK-LABEL: f0:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +00004; CHECK: loop0
5; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +00006define void @f0(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
7b0:
8 %v0 = icmp slt i32 32623, %a2
9 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000010
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000011b1: ; preds = %b0
12 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000013
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000014b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000025
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000026b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000027 ret void
28}
29
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000030; CHECK-LABEL: f1:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000031; CHECK: loop0
32; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000033define void @f1(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
34b0:
35 %v0 = icmp slt i32 29554, %a2
36 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000037
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000038b1: ; preds = %b0
39 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000040
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000041b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000052
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000053b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000054 ret void
55}
56
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000057; CHECK-LABEL: f2:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000058; CHECK: loop0
59; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000060define void @f2(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
61b0:
62 %v0 = icmp slt i32 15692, %a2
63 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000064
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000065b1: ; preds = %b0
66 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000067
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000068b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000079
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000080b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000081 ret void
82}
83
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000084; CHECK-LABEL: f3:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000085; CHECK: loop0
86; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000087define void @f3(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
88b0:
89 %v0 = icmp slt i32 10449, %a2
90 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000091
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000092b1: ; preds = %b0
93 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000094
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +000095b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000106
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000107b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000108 ret void
109}
110
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000111; CHECK-LABEL: f4:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000112; CHECK: loop0
113; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000114define void @f4(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
115b0:
116 %v0 = icmp slt i32 32087, %a2
117 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000118
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000119b1: ; preds = %b0
120 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000121
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000122b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000133
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000134b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000135 ret void
136}
137
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000138; CHECK-LABEL: f5:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000139; CHECK: loop0
140; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000141define void @f5(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
142b0:
143 %v0 = icmp slt i32 %a1, 3472
144 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000145
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000146b1: ; preds = %b0
147 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000148
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000149b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000160
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000161b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000162 ret void
163}
164
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000165; CHECK-LABEL: f6:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000166; CHECK: loop0
167; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000168define void @f6(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
169b0:
170 %v0 = icmp slt i32 %a1, 8730
171 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000172
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000173b1: ; preds = %b0
174 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000175
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000176b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000187
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000188b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000189 ret void
190}
191
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000192; CHECK-LABEL: f7:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000193; CHECK: loop0
194; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000195define void @f7(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
196b0:
197 %v0 = icmp slt i32 %a1, 1493
198 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000199
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000200b1: ; preds = %b0
201 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000202
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000203b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000214
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000215b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000216 ret void
217}
218
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000219; CHECK-LABEL: f8:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000220; CHECK: loop0
221; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000222define void @f8(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
223b0:
224 %v0 = icmp slt i32 %a1, 1706
225 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000226
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000227b1: ; preds = %b0
228 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000229
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000230b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000241
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000242b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000243 ret void
244}
245
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000246; CHECK-LABEL: f9:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000247; CHECK: loop0
248; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000249define void @f9(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
250b0:
251 %v0 = icmp slt i32 %a1, 1886
252 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000253
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000254b1: ; preds = %b0
255 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000256
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000257b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000268
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000269b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000270 ret void
271}
272
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000273; CHECK-LABEL: f10:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000274; CHECK: loop0
275; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000276define void @f10(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
277b0:
278 %v0 = icmp slt i32 %a1, %a2
279 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000280
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000281b1: ; preds = %b0
282 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000283
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000284b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000295
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000296b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000297 ret void
298}
299
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000300; CHECK-LABEL: f11:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000301; CHECK: loop0
302; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000303define void @f11(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
304b0:
305 %v0 = icmp slt i32 %a1, %a2
306 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000307
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000308b1: ; preds = %b0
309 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000310
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000311b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000322
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000323b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000324 ret void
325}
326
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000327; CHECK-LABEL: f12:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000328; CHECK: loop0
329; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000330define void @f12(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
331b0:
332 %v0 = icmp slt i32 %a1, %a2
333 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000334
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000335b1: ; preds = %b0
336 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000337
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000338b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000349
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000350b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000351 ret void
352}
353
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000354; CHECK-LABEL: f13
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000355; CHECK: loop0
356; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000357define void @f13(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
358b0:
359 %v0 = icmp slt i32 %a1, %a2
360 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000361
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000362b1: ; preds = %b0
363 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000364
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000365b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000376
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000377b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000378 ret void
379}
380
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000381; CHECK-LABEL: f14
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000382; CHECK: loop0
383; a < b
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000384define void @f14(i8* nocapture %a0, i32 %a1, i32 %a2) #0 {
385b0:
386 %v0 = icmp slt i32 %a1, %a2
387 br i1 %v0, label %b1, label %b3
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000388
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000389b1: ; preds = %b0
390 br label %b2
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000391
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000392b2: ; 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
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000403
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000404b3: ; preds = %b2, %b0
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000405 ret void
406}
407
Krzysztof Parzyszek6bfc6572018-10-19 17:31:11 +0000408attributes #0 = { nounwind "target-cpu"="hexagonv5" }