~ubuntu-branches/ubuntu/trusty/llvm-toolchain-snapshot/trusty-201310232150

« back to all changes in this revision

Viewing changes to test/CodeGen/PowerPC/ctrloop-ne.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-27 15:01:57 UTC
  • mfrom: (0.10.1) (0.9.1) (0.8.1) (0.7.1) (0.6.1) (0.5.2)
  • Revision ID: package-import@ubuntu.com-20130527150157-tdkrsjpuvht7v0qx
Tags: 1:3.4~svn182733-1~exp1
* New snapshot release (3.4 release)
* Add a symlink of libLLVM-3.4.so.1 to usr/lib/llvm-3.4/lib/libLLVM-3.4.so
    to fix make the llvm-config-3.4 --libdir work (Closes: #708677)
  * Various packages rename to allow co installations:
    * libclang1 => libclang1-3.4
    * libclang1-dbg => libclang1-3.4-dbg
    * libclang-dev => libclang-3.4-dev
    * libclang-common-dev => libclang-common-3.4-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"
 
2
target triple = "powerpc64-unknown-linux-gnu"
 
3
; RUN: llc < %s -march=ppc64 | FileCheck %s
 
4
 
 
5
; CHECK: test_pos1_ir_ne
 
6
; CHECK: bdnz
 
7
; a < b
 
8
define void @test_pos1_ir_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
9
entry:
 
10
  %cmp3 = icmp slt i32 32623, %b
 
11
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
12
 
 
13
for.body.lr.ph:                                   ; preds = %entry
 
14
  br label %for.body
 
15
 
 
16
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
17
  %i.04 = phi i32 [ 32623, %for.body.lr.ph ], [ %inc, %for.body ]
 
18
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
19
  %0 = load i8* %arrayidx, align 1
 
20
  %conv = zext i8 %0 to i32
 
21
  %add = add nsw i32 %conv, 1
 
22
  %conv1 = trunc i32 %add to i8
 
23
  store i8 %conv1, i8* %arrayidx, align 1
 
24
  %inc = add nsw i32 %i.04, 1
 
25
  %cmp = icmp ne i32 %inc, %b
 
26
  br i1 %cmp, label %for.body, label %for.end
 
27
 
 
28
for.end:                                          ; preds = %for.body, %entry
 
29
  ret void
 
30
}
 
31
 
 
32
 
 
33
 
 
34
; CHECK: test_pos2_ir_ne
 
35
; FIXME: Support this loop!
 
36
; CHECK-NOT: bdnz
 
37
; a < b
 
38
define void @test_pos2_ir_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
39
entry:
 
40
  %cmp3 = icmp slt i32 29554, %b
 
41
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
42
 
 
43
for.body.lr.ph:                                   ; preds = %entry
 
44
  br label %for.body
 
45
 
 
46
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
47
  %i.04 = phi i32 [ 29554, %for.body.lr.ph ], [ %inc, %for.body ]
 
48
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
49
  %0 = load i8* %arrayidx, align 1
 
50
  %conv = zext i8 %0 to i32
 
51
  %add = add nsw i32 %conv, 1
 
52
  %conv1 = trunc i32 %add to i8
 
53
  store i8 %conv1, i8* %arrayidx, align 1
 
54
  %inc = add nsw i32 %i.04, 2
 
55
  %cmp = icmp ne i32 %inc, %b
 
56
  br i1 %cmp, label %for.body, label %for.end
 
57
 
 
58
for.end:                                          ; preds = %for.body, %entry
 
59
  ret void
 
60
}
 
61
 
 
62
 
 
63
 
 
64
; CHECK: test_pos4_ir_ne
 
65
; FIXME: Support this loop!
 
66
; CHECK-NOT: bdnz
 
67
; a < b
 
68
define void @test_pos4_ir_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
69
entry:
 
70
  %cmp3 = icmp slt i32 15692, %b
 
71
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
72
 
 
73
for.body.lr.ph:                                   ; preds = %entry
 
74
  br label %for.body
 
75
 
 
76
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
77
  %i.04 = phi i32 [ 15692, %for.body.lr.ph ], [ %inc, %for.body ]
 
78
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
79
  %0 = load i8* %arrayidx, align 1
 
80
  %conv = zext i8 %0 to i32
 
81
  %add = add nsw i32 %conv, 1
 
82
  %conv1 = trunc i32 %add to i8
 
83
  store i8 %conv1, i8* %arrayidx, align 1
 
84
  %inc = add nsw i32 %i.04, 4
 
85
  %cmp = icmp ne i32 %inc, %b
 
86
  br i1 %cmp, label %for.body, label %for.end
 
87
 
 
88
for.end:                                          ; preds = %for.body, %entry
 
89
  ret void
 
90
}
 
91
 
 
92
 
 
93
 
 
94
; CHECK: test_pos8_ir_ne
 
95
; FIXME: Support this loop!
 
96
; CHECK-NOT: bdnz
 
97
; a < b
 
98
define void @test_pos8_ir_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
99
entry:
 
100
  %cmp3 = icmp slt i32 10449, %b
 
101
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
102
 
 
103
for.body.lr.ph:                                   ; preds = %entry
 
104
  br label %for.body
 
105
 
 
106
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
107
  %i.04 = phi i32 [ 10449, %for.body.lr.ph ], [ %inc, %for.body ]
 
108
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
109
  %0 = load i8* %arrayidx, align 1
 
110
  %conv = zext i8 %0 to i32
 
111
  %add = add nsw i32 %conv, 1
 
112
  %conv1 = trunc i32 %add to i8
 
113
  store i8 %conv1, i8* %arrayidx, align 1
 
114
  %inc = add nsw i32 %i.04, 8
 
115
  %cmp = icmp ne i32 %inc, %b
 
116
  br i1 %cmp, label %for.body, label %for.end
 
117
 
 
118
for.end:                                          ; preds = %for.body, %entry
 
119
  ret void
 
120
}
 
121
 
 
122
 
 
123
 
 
124
; CHECK: test_pos16_ir_ne
 
125
; FIXME: Support this loop!
 
126
; CHECK-NOT: bdnz
 
127
; a < b
 
128
define void @test_pos16_ir_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
129
entry:
 
130
  %cmp3 = icmp slt i32 32087, %b
 
131
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
132
 
 
133
for.body.lr.ph:                                   ; preds = %entry
 
134
  br label %for.body
 
135
 
 
136
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
137
  %i.04 = phi i32 [ 32087, %for.body.lr.ph ], [ %inc, %for.body ]
 
138
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
139
  %0 = load i8* %arrayidx, align 1
 
140
  %conv = zext i8 %0 to i32
 
141
  %add = add nsw i32 %conv, 1
 
142
  %conv1 = trunc i32 %add to i8
 
143
  store i8 %conv1, i8* %arrayidx, align 1
 
144
  %inc = add nsw i32 %i.04, 16
 
145
  %cmp = icmp ne i32 %inc, %b
 
146
  br i1 %cmp, label %for.body, label %for.end
 
147
 
 
148
for.end:                                          ; preds = %for.body, %entry
 
149
  ret void
 
150
}
 
151
 
 
152
 
 
153
 
 
154
; CHECK: test_pos1_ri_ne
 
155
; CHECK: bdnz
 
156
; a < b
 
157
define void @test_pos1_ri_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
158
entry:
 
159
  %cmp3 = icmp slt i32 %a, 3472
 
160
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
161
 
 
162
for.body.lr.ph:                                   ; preds = %entry
 
163
  br label %for.body
 
164
 
 
165
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
166
  %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
 
167
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
168
  %0 = load i8* %arrayidx, align 1
 
169
  %conv = zext i8 %0 to i32
 
170
  %add = add nsw i32 %conv, 1
 
171
  %conv1 = trunc i32 %add to i8
 
172
  store i8 %conv1, i8* %arrayidx, align 1
 
173
  %inc = add nsw i32 %i.04, 1
 
174
  %cmp = icmp ne i32 %inc, 3472
 
175
  br i1 %cmp, label %for.body, label %for.end
 
176
 
 
177
for.end:                                          ; preds = %for.body, %entry
 
178
  ret void
 
179
}
 
180
 
 
181
 
 
182
 
 
183
; CHECK: test_pos2_ri_ne
 
184
; FIXME: Support this loop!
 
185
; CHECK-NOT: bdnz
 
186
; a < b
 
187
define void @test_pos2_ri_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
188
entry:
 
189
  %cmp3 = icmp slt i32 %a, 8730
 
190
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
191
 
 
192
for.body.lr.ph:                                   ; preds = %entry
 
193
  br label %for.body
 
194
 
 
195
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
196
  %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
 
197
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
198
  %0 = load i8* %arrayidx, align 1
 
199
  %conv = zext i8 %0 to i32
 
200
  %add = add nsw i32 %conv, 1
 
201
  %conv1 = trunc i32 %add to i8
 
202
  store i8 %conv1, i8* %arrayidx, align 1
 
203
  %inc = add nsw i32 %i.04, 2
 
204
  %cmp = icmp ne i32 %inc, 8730
 
205
  br i1 %cmp, label %for.body, label %for.end
 
206
 
 
207
for.end:                                          ; preds = %for.body, %entry
 
208
  ret void
 
209
}
 
210
 
 
211
 
 
212
 
 
213
; CHECK: test_pos4_ri_ne
 
214
; FIXME: Support this loop!
 
215
; CHECK-NOT: bdnz
 
216
; a < b
 
217
define void @test_pos4_ri_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
218
entry:
 
219
  %cmp3 = icmp slt i32 %a, 1493
 
220
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
221
 
 
222
for.body.lr.ph:                                   ; preds = %entry
 
223
  br label %for.body
 
224
 
 
225
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
226
  %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
 
227
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
228
  %0 = load i8* %arrayidx, align 1
 
229
  %conv = zext i8 %0 to i32
 
230
  %add = add nsw i32 %conv, 1
 
231
  %conv1 = trunc i32 %add to i8
 
232
  store i8 %conv1, i8* %arrayidx, align 1
 
233
  %inc = add nsw i32 %i.04, 4
 
234
  %cmp = icmp ne i32 %inc, 1493
 
235
  br i1 %cmp, label %for.body, label %for.end
 
236
 
 
237
for.end:                                          ; preds = %for.body, %entry
 
238
  ret void
 
239
}
 
240
 
 
241
 
 
242
 
 
243
; CHECK: test_pos8_ri_ne
 
244
; FIXME: Support this loop!
 
245
; CHECK-NOT: bdnz
 
246
; a < b
 
247
define void @test_pos8_ri_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
248
entry:
 
249
  %cmp3 = icmp slt i32 %a, 1706
 
250
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
251
 
 
252
for.body.lr.ph:                                   ; preds = %entry
 
253
  br label %for.body
 
254
 
 
255
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
256
  %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
 
257
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
258
  %0 = load i8* %arrayidx, align 1
 
259
  %conv = zext i8 %0 to i32
 
260
  %add = add nsw i32 %conv, 1
 
261
  %conv1 = trunc i32 %add to i8
 
262
  store i8 %conv1, i8* %arrayidx, align 1
 
263
  %inc = add nsw i32 %i.04, 8
 
264
  %cmp = icmp ne i32 %inc, 1706
 
265
  br i1 %cmp, label %for.body, label %for.end
 
266
 
 
267
for.end:                                          ; preds = %for.body, %entry
 
268
  ret void
 
269
}
 
270
 
 
271
 
 
272
 
 
273
; CHECK: test_pos16_ri_ne
 
274
; FIXME: Support this loop!
 
275
; CHECK-NOT: bdnz
 
276
; a < b
 
277
define void @test_pos16_ri_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
278
entry:
 
279
  %cmp3 = icmp slt i32 %a, 1886
 
280
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
281
 
 
282
for.body.lr.ph:                                   ; preds = %entry
 
283
  br label %for.body
 
284
 
 
285
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
286
  %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
 
287
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
288
  %0 = load i8* %arrayidx, align 1
 
289
  %conv = zext i8 %0 to i32
 
290
  %add = add nsw i32 %conv, 1
 
291
  %conv1 = trunc i32 %add to i8
 
292
  store i8 %conv1, i8* %arrayidx, align 1
 
293
  %inc = add nsw i32 %i.04, 16
 
294
  %cmp = icmp ne i32 %inc, 1886
 
295
  br i1 %cmp, label %for.body, label %for.end
 
296
 
 
297
for.end:                                          ; preds = %for.body, %entry
 
298
  ret void
 
299
}
 
300
 
 
301
 
 
302
 
 
303
; CHECK: test_pos1_rr_ne
 
304
; CHECK: bdnz
 
305
; a < b
 
306
define void @test_pos1_rr_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
307
entry:
 
308
  %cmp3 = icmp slt i32 %a, %b
 
309
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
310
 
 
311
for.body.lr.ph:                                   ; preds = %entry
 
312
  br label %for.body
 
313
 
 
314
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
315
  %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
 
316
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
317
  %0 = load i8* %arrayidx, align 1
 
318
  %conv = zext i8 %0 to i32
 
319
  %add = add nsw i32 %conv, 1
 
320
  %conv1 = trunc i32 %add to i8
 
321
  store i8 %conv1, i8* %arrayidx, align 1
 
322
  %inc = add nsw i32 %i.04, 1
 
323
  %cmp = icmp ne i32 %inc, %b
 
324
  br i1 %cmp, label %for.body, label %for.end
 
325
 
 
326
for.end:                                          ; preds = %for.body, %entry
 
327
  ret void
 
328
}
 
329
 
 
330
 
 
331
 
 
332
; CHECK: test_pos2_rr_ne
 
333
; FIXME: Support this loop!
 
334
; CHECK-NOT: bdnz
 
335
; a < b
 
336
define void @test_pos2_rr_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
337
entry:
 
338
  %cmp3 = icmp slt i32 %a, %b
 
339
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
340
 
 
341
for.body.lr.ph:                                   ; preds = %entry
 
342
  br label %for.body
 
343
 
 
344
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
345
  %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
 
346
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
347
  %0 = load i8* %arrayidx, align 1
 
348
  %conv = zext i8 %0 to i32
 
349
  %add = add nsw i32 %conv, 1
 
350
  %conv1 = trunc i32 %add to i8
 
351
  store i8 %conv1, i8* %arrayidx, align 1
 
352
  %inc = add nsw i32 %i.04, 2
 
353
  %cmp = icmp ne i32 %inc, %b
 
354
  br i1 %cmp, label %for.body, label %for.end
 
355
 
 
356
for.end:                                          ; preds = %for.body, %entry
 
357
  ret void
 
358
}
 
359
 
 
360
 
 
361
 
 
362
; CHECK: test_pos4_rr_ne
 
363
; FIXME: Support this loop!
 
364
; CHECK-NOT: bdnz
 
365
; a < b
 
366
define void @test_pos4_rr_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
367
entry:
 
368
  %cmp3 = icmp slt i32 %a, %b
 
369
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
370
 
 
371
for.body.lr.ph:                                   ; preds = %entry
 
372
  br label %for.body
 
373
 
 
374
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
375
  %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
 
376
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
377
  %0 = load i8* %arrayidx, align 1
 
378
  %conv = zext i8 %0 to i32
 
379
  %add = add nsw i32 %conv, 1
 
380
  %conv1 = trunc i32 %add to i8
 
381
  store i8 %conv1, i8* %arrayidx, align 1
 
382
  %inc = add nsw i32 %i.04, 4
 
383
  %cmp = icmp ne i32 %inc, %b
 
384
  br i1 %cmp, label %for.body, label %for.end
 
385
 
 
386
for.end:                                          ; preds = %for.body, %entry
 
387
  ret void
 
388
}
 
389
 
 
390
 
 
391
 
 
392
; CHECK: test_pos8_rr_ne
 
393
; FIXME: Support this loop!
 
394
; CHECK-NOT: bdnz
 
395
; a < b
 
396
define void @test_pos8_rr_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
397
entry:
 
398
  %cmp3 = icmp slt i32 %a, %b
 
399
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
400
 
 
401
for.body.lr.ph:                                   ; preds = %entry
 
402
  br label %for.body
 
403
 
 
404
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
405
  %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
 
406
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
407
  %0 = load i8* %arrayidx, align 1
 
408
  %conv = zext i8 %0 to i32
 
409
  %add = add nsw i32 %conv, 1
 
410
  %conv1 = trunc i32 %add to i8
 
411
  store i8 %conv1, i8* %arrayidx, align 1
 
412
  %inc = add nsw i32 %i.04, 8
 
413
  %cmp = icmp ne i32 %inc, %b
 
414
  br i1 %cmp, label %for.body, label %for.end
 
415
 
 
416
for.end:                                          ; preds = %for.body, %entry
 
417
  ret void
 
418
}
 
419
 
 
420
 
 
421
 
 
422
; CHECK: test_pos16_rr_ne
 
423
; FIXME: Support this loop!
 
424
; CHECK-NOT: bdnz
 
425
; a < b
 
426
define void @test_pos16_rr_ne(i8* nocapture %p, i32 %a, i32 %b) nounwind {
 
427
entry:
 
428
  %cmp3 = icmp slt i32 %a, %b
 
429
  br i1 %cmp3, label %for.body.lr.ph, label %for.end
 
430
 
 
431
for.body.lr.ph:                                   ; preds = %entry
 
432
  br label %for.body
 
433
 
 
434
for.body:                                         ; preds = %for.body.lr.ph, %for.body
 
435
  %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]
 
436
  %arrayidx = getelementptr inbounds i8* %p, i32 %i.04
 
437
  %0 = load i8* %arrayidx, align 1
 
438
  %conv = zext i8 %0 to i32
 
439
  %add = add nsw i32 %conv, 1
 
440
  %conv1 = trunc i32 %add to i8
 
441
  store i8 %conv1, i8* %arrayidx, align 1
 
442
  %inc = add nsw i32 %i.04, 16
 
443
  %cmp = icmp ne i32 %inc, %b
 
444
  br i1 %cmp, label %for.body, label %for.end
 
445
 
 
446
for.end:                                          ; preds = %for.body, %entry
 
447
  ret void
 
448
}
 
449