blob: 8919f265abfe3815e9c983c8a26c9a4816fb4d31 [file] [log] [blame]
Colin LeMahieubb71f7d2015-06-17 20:29:33 +00001; RUN: llc -march=hexagon -O3 < %s | FileCheck %s
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +00002
Brendon Cahoonbece8ed2015-05-08 20:18:21 +00003; CHECK-LABEL: @test_pos1_ir_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +00004; CHECK: loop0
5; a < b
6define void @test_pos1_ir_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
7entry:
8 %cmp3 = icmp slt i32 8531, %b
9 br i1 %cmp3, label %for.body.lr.ph, label %for.end
10
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000011for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000012 br label %for.body
13
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000014for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000015 %i.04 = phi i32 [ 8531, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +000016 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +000017 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000018 %conv = zext i8 %0 to i32
19 %add = add nsw i32 %conv, 1
20 %conv1 = trunc i32 %add to i8
21 store i8 %conv1, i8* %arrayidx, align 1
22 %inc = add nsw i32 %i.04, 1
23 %cmp = icmp slt i32 %inc, %b
24 br i1 %cmp, label %for.body, label %for.end
25
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000026for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000027 ret void
28}
29
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000030; CHECK-LABEL: @test_pos2_ir_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000031; CHECK: loop0
32; a < b
33define void @test_pos2_ir_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
34entry:
35 %cmp3 = icmp slt i32 9152, %b
36 br i1 %cmp3, label %for.body.lr.ph, label %for.end
37
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000038for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000039 br label %for.body
40
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000041for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000042 %i.04 = phi i32 [ 9152, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +000043 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +000044 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000045 %conv = zext i8 %0 to i32
46 %add = add nsw i32 %conv, 1
47 %conv1 = trunc i32 %add to i8
48 store i8 %conv1, i8* %arrayidx, align 1
49 %inc = add nsw i32 %i.04, 2
50 %cmp = icmp slt i32 %inc, %b
51 br i1 %cmp, label %for.body, label %for.end
52
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000053for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000054 ret void
55}
56
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000057; CHECK-LABEL: @test_pos4_ir_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000058; CHECK: loop0
59; a < b
60define void @test_pos4_ir_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
61entry:
62 %cmp3 = icmp slt i32 18851, %b
63 br i1 %cmp3, label %for.body.lr.ph, label %for.end
64
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000065for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000066 br label %for.body
67
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000068for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000069 %i.04 = phi i32 [ 18851, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +000070 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +000071 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000072 %conv = zext i8 %0 to i32
73 %add = add nsw i32 %conv, 1
74 %conv1 = trunc i32 %add to i8
75 store i8 %conv1, i8* %arrayidx, align 1
76 %inc = add nsw i32 %i.04, 4
77 %cmp = icmp slt i32 %inc, %b
78 br i1 %cmp, label %for.body, label %for.end
79
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000080for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000081 ret void
82}
83
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000084; CHECK-LABEL: @test_pos8_ir_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000085; CHECK: loop0
86; a < b
87define void @test_pos8_ir_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
88entry:
89 %cmp3 = icmp slt i32 25466, %b
90 br i1 %cmp3, label %for.body.lr.ph, label %for.end
91
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000092for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000093 br label %for.body
94
Brendon Cahoonbece8ed2015-05-08 20:18:21 +000095for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000096 %i.04 = phi i32 [ 25466, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +000097 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +000098 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +000099 %conv = zext i8 %0 to i32
100 %add = add nsw i32 %conv, 1
101 %conv1 = trunc i32 %add to i8
102 store i8 %conv1, i8* %arrayidx, align 1
103 %inc = add nsw i32 %i.04, 8
104 %cmp = icmp slt i32 %inc, %b
105 br i1 %cmp, label %for.body, label %for.end
106
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000107for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000108 ret void
109}
110
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000111; CHECK-LABEL: @test_pos16_ir_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000112; CHECK: loop0
113; a < b
114define void @test_pos16_ir_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
115entry:
116 %cmp3 = icmp slt i32 9295, %b
117 br i1 %cmp3, label %for.body.lr.ph, label %for.end
118
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000119for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000120 br label %for.body
121
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000122for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000123 %i.04 = phi i32 [ 9295, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000124 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000125 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000126 %conv = zext i8 %0 to i32
127 %add = add nsw i32 %conv, 1
128 %conv1 = trunc i32 %add to i8
129 store i8 %conv1, i8* %arrayidx, align 1
130 %inc = add nsw i32 %i.04, 16
131 %cmp = icmp slt i32 %inc, %b
132 br i1 %cmp, label %for.body, label %for.end
133
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000134for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000135 ret void
136}
137
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000138; CHECK-LABEL: @test_pos1_ri_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000139; CHECK: loop0
140; a < b
141define void @test_pos1_ri_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
142entry:
143 %cmp3 = icmp slt i32 %a, 31236
144 br i1 %cmp3, label %for.body.lr.ph, label %for.end
145
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000146for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000147 br label %for.body
148
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000149for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000150 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000151 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000152 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000153 %conv = zext i8 %0 to i32
154 %add = add nsw i32 %conv, 1
155 %conv1 = trunc i32 %add to i8
156 store i8 %conv1, i8* %arrayidx, align 1
157 %inc = add nsw i32 %i.04, 1
158 %cmp = icmp slt i32 %inc, 31236
159 br i1 %cmp, label %for.body, label %for.end
160
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000161for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000162 ret void
163}
164
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000165; CHECK-LABEL: @test_pos2_ri_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000166; CHECK: loop0
167; a < b
168define void @test_pos2_ri_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
169entry:
170 %cmp3 = icmp slt i32 %a, 22653
171 br i1 %cmp3, label %for.body.lr.ph, label %for.end
172
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000173for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000174 br label %for.body
175
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000176for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000177 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000178 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000179 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000180 %conv = zext i8 %0 to i32
181 %add = add nsw i32 %conv, 1
182 %conv1 = trunc i32 %add to i8
183 store i8 %conv1, i8* %arrayidx, align 1
184 %inc = add nsw i32 %i.04, 2
185 %cmp = icmp slt i32 %inc, 22653
186 br i1 %cmp, label %for.body, label %for.end
187
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000188for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000189 ret void
190}
191
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000192; CHECK-LABEL: @test_pos4_ri_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000193; CHECK: loop0
194; a < b
195define void @test_pos4_ri_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
196entry:
197 %cmp3 = icmp slt i32 %a, 1431
198 br i1 %cmp3, label %for.body.lr.ph, label %for.end
199
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000200for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000201 br label %for.body
202
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000203for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000204 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000205 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000206 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000207 %conv = zext i8 %0 to i32
208 %add = add nsw i32 %conv, 1
209 %conv1 = trunc i32 %add to i8
210 store i8 %conv1, i8* %arrayidx, align 1
211 %inc = add nsw i32 %i.04, 4
212 %cmp = icmp slt i32 %inc, 1431
213 br i1 %cmp, label %for.body, label %for.end
214
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000215for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000216 ret void
217}
218
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000219; CHECK-LABEL: @test_pos8_ri_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000220; CHECK: loop0
221; a < b
222define void @test_pos8_ri_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
223entry:
224 %cmp3 = icmp slt i32 %a, 22403
225 br i1 %cmp3, label %for.body.lr.ph, label %for.end
226
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000227for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000228 br label %for.body
229
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000230for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000231 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000232 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000233 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000234 %conv = zext i8 %0 to i32
235 %add = add nsw i32 %conv, 1
236 %conv1 = trunc i32 %add to i8
237 store i8 %conv1, i8* %arrayidx, align 1
238 %inc = add nsw i32 %i.04, 8
239 %cmp = icmp slt i32 %inc, 22403
240 br i1 %cmp, label %for.body, label %for.end
241
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000242for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000243 ret void
244}
245
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000246; CHECK-LABEL: @test_pos16_ri_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000247; CHECK: loop0
248; a < b
249define void @test_pos16_ri_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
250entry:
251 %cmp3 = icmp slt i32 %a, 21715
252 br i1 %cmp3, label %for.body.lr.ph, label %for.end
253
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000254for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000255 br label %for.body
256
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000257for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000258 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000259 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000260 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000261 %conv = zext i8 %0 to i32
262 %add = add nsw i32 %conv, 1
263 %conv1 = trunc i32 %add to i8
264 store i8 %conv1, i8* %arrayidx, align 1
265 %inc = add nsw i32 %i.04, 16
266 %cmp = icmp slt i32 %inc, 21715
267 br i1 %cmp, label %for.body, label %for.end
268
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000269for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000270 ret void
271}
272
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000273; CHECK-LABEL: @test_pos1_rr_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000274; CHECK: loop0
275; a < b
276define void @test_pos1_rr_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
277entry:
278 %cmp3 = icmp slt i32 %a, %b
279 br i1 %cmp3, label %for.body.lr.ph, label %for.end
280
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000281for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000282 br label %for.body
283
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000284for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000285 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000286 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000287 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000288 %conv = zext i8 %0 to i32
289 %add = add nsw i32 %conv, 1
290 %conv1 = trunc i32 %add to i8
291 store i8 %conv1, i8* %arrayidx, align 1
292 %inc = add nsw i32 %i.04, 1
293 %cmp = icmp slt i32 %inc, %b
294 br i1 %cmp, label %for.body, label %for.end
295
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000296for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000297 ret void
298}
299
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000300; CHECK-LABEL: @test_pos2_rr_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000301; CHECK: loop0
302; a < b
303define void @test_pos2_rr_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
304entry:
305 %cmp3 = icmp slt i32 %a, %b
306 br i1 %cmp3, label %for.body.lr.ph, label %for.end
307
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000308for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000309 br label %for.body
310
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000311for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000312 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000313 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000314 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000315 %conv = zext i8 %0 to i32
316 %add = add nsw i32 %conv, 1
317 %conv1 = trunc i32 %add to i8
318 store i8 %conv1, i8* %arrayidx, align 1
319 %inc = add nsw i32 %i.04, 2
320 %cmp = icmp slt i32 %inc, %b
321 br i1 %cmp, label %for.body, label %for.end
322
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000323for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000324 ret void
325}
326
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000327; CHECK-LABEL: @test_pos4_rr_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000328; CHECK: loop0
329; a < b
330define void @test_pos4_rr_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
331entry:
332 %cmp3 = icmp slt i32 %a, %b
333 br i1 %cmp3, label %for.body.lr.ph, label %for.end
334
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000335for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000336 br label %for.body
337
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000338for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000339 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000340 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000341 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000342 %conv = zext i8 %0 to i32
343 %add = add nsw i32 %conv, 1
344 %conv1 = trunc i32 %add to i8
345 store i8 %conv1, i8* %arrayidx, align 1
346 %inc = add nsw i32 %i.04, 4
347 %cmp = icmp slt i32 %inc, %b
348 br i1 %cmp, label %for.body, label %for.end
349
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000350for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000351 ret void
352}
353
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000354; CHECK-LABEL: @test_pos8_rr_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000355; CHECK: loop0
356; a < b
357define void @test_pos8_rr_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
358entry:
359 %cmp3 = icmp slt i32 %a, %b
360 br i1 %cmp3, label %for.body.lr.ph, label %for.end
361
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000362for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000363 br label %for.body
364
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000365for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000366 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000367 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000368 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000369 %conv = zext i8 %0 to i32
370 %add = add nsw i32 %conv, 1
371 %conv1 = trunc i32 %add to i8
372 store i8 %conv1, i8* %arrayidx, align 1
373 %inc = add nsw i32 %i.04, 8
374 %cmp = icmp slt i32 %inc, %b
375 br i1 %cmp, label %for.body, label %for.end
376
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000377for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000378 ret void
379}
380
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000381; CHECK-LABEL: @test_pos16_rr_slt
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000382; CHECK: loop0
383; a < b
384define void @test_pos16_rr_slt(i8* nocapture %p, i32 %a, i32 %b) nounwind {
385entry:
386 %cmp3 = icmp slt i32 %a, %b
387 br i1 %cmp3, label %for.body.lr.ph, label %for.end
388
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000389for.body.lr.ph:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000390 br label %for.body
391
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000392for.body:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000393 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
David Blaikie79e6c742015-02-27 19:29:02 +0000394 %arrayidx = getelementptr inbounds i8, i8* %p, i32 %i.04
David Blaikiea79ac142015-02-27 21:17:42 +0000395 %0 = load i8, i8* %arrayidx, align 1
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000396 %conv = zext i8 %0 to i32
397 %add = add nsw i32 %conv, 1
398 %conv1 = trunc i32 %add to i8
399 store i8 %conv1, i8* %arrayidx, align 1
400 %inc = add nsw i32 %i.04, 16
401 %cmp = icmp slt i32 %inc, %b
402 br i1 %cmp, label %for.body, label %for.end
403
Brendon Cahoonbece8ed2015-05-08 20:18:21 +0000404for.end:
Krzysztof Parzyszek9a278f12013-02-11 21:37:55 +0000405 ret void
406}
407
408
409