@@ -20,9 +20,6 @@ define i32 @test_simple_case(i32 %start, i32 %len) {
20
20
; CHECK-NEXT: exit count for range_check_block: ***COULDNOTCOMPUTE***
21
21
; CHECK-NEXT: exit count for backedge: ***COULDNOTCOMPUTE***
22
22
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is -1
23
- ; CHECK-NEXT: constant max exit count for loop: -1
24
- ; CHECK-NEXT: constant max exit count for range_check_block: ***COULDNOTCOMPUTE***
25
- ; CHECK-NEXT: constant max exit count for backedge: ***COULDNOTCOMPUTE***
26
23
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is %start
27
24
; CHECK-NEXT: symbolic max exit count for loop: %start
28
25
; CHECK-NEXT: symbolic max exit count for range_check_block: ***COULDNOTCOMPUTE***
@@ -83,9 +80,6 @@ define i32 @test_litter_conditions(i32 %start, i32 %len) {
83
80
; CHECK-NEXT: exit count for range_check_block: ***COULDNOTCOMPUTE***
84
81
; CHECK-NEXT: exit count for backedge: ***COULDNOTCOMPUTE***
85
82
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is -1
86
- ; CHECK-NEXT: constant max exit count for loop: ***COULDNOTCOMPUTE***
87
- ; CHECK-NEXT: constant max exit count for range_check_block: ***COULDNOTCOMPUTE***
88
- ; CHECK-NEXT: constant max exit count for backedge: ***COULDNOTCOMPUTE***
89
83
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
90
84
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
91
85
; CHECK-NEXT: symbolic max exit count for range_check_block: ***COULDNOTCOMPUTE***
@@ -150,9 +144,6 @@ define i32 @test_litter_conditions_bad_context(i32 %start, i32 %len) {
150
144
; CHECK-NEXT: exit count for range_check_block: ***COULDNOTCOMPUTE***
151
145
; CHECK-NEXT: exit count for backedge: ***COULDNOTCOMPUTE***
152
146
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is -1
153
- ; CHECK-NEXT: constant max exit count for loop: ***COULDNOTCOMPUTE***
154
- ; CHECK-NEXT: constant max exit count for range_check_block: ***COULDNOTCOMPUTE***
155
- ; CHECK-NEXT: constant max exit count for backedge: ***COULDNOTCOMPUTE***
156
147
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
157
148
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
158
149
; CHECK-NEXT: symbolic max exit count for range_check_block: ***COULDNOTCOMPUTE***
@@ -210,8 +201,6 @@ define i32 @test_and_conditions(i32 %start, i32 %len) {
210
201
; CHECK-NEXT: exit count for loop: ***COULDNOTCOMPUTE***
211
202
; CHECK-NEXT: exit count for backedge: ***COULDNOTCOMPUTE***
212
203
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is -1
213
- ; CHECK-NEXT: constant max exit count for loop: ***COULDNOTCOMPUTE***
214
- ; CHECK-NEXT: constant max exit count for backedge: ***COULDNOTCOMPUTE***
215
204
; CHECK-NEXT: Loop %loop: Unpredictable symbolic max backedge-taken count.
216
205
; CHECK-NEXT: symbolic max exit count for loop: ***COULDNOTCOMPUTE***
217
206
; CHECK-NEXT: symbolic max exit count for backedge: ***COULDNOTCOMPUTE***
@@ -239,99 +228,3 @@ done:
239
228
failed:
240
229
ret i32 -3
241
230
}
242
-
243
- define i32 @test_mixup_constant_symbolic (i32 %end , i32 %len ) {
244
- ; CHECK-LABEL: 'test_mixup_constant_symbolic'
245
- ; CHECK-NEXT: Classifying expressions for: @test_mixup_constant_symbolic
246
- ; CHECK-NEXT: %iv = phi i32 [ 0, %entry ], [ %iv.next, %backedge ]
247
- ; CHECK-NEXT: --> {0,+,1}<%loop> U: [0,1001) S: [0,1001) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
248
- ; CHECK-NEXT: %iv.next = add i32 %iv, 1
249
- ; CHECK-NEXT: --> {1,+,1}<%loop> U: [1,1002) S: [1,1002) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
250
- ; CHECK-NEXT: %loop_cond = call i1 @cond()
251
- ; CHECK-NEXT: --> %loop_cond U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Variant }
252
- ; CHECK-NEXT: Determining loop execution counts for: @test_mixup_constant_symbolic
253
- ; CHECK-NEXT: Loop %loop: <multiple exits> Unpredictable backedge-taken count.
254
- ; CHECK-NEXT: exit count for loop: %end
255
- ; CHECK-NEXT: exit count for range_check_block: 1000
256
- ; CHECK-NEXT: exit count for backedge: ***COULDNOTCOMPUTE***
257
- ; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 1000
258
- ; CHECK-NEXT: constant max exit count for loop: -1
259
- ; CHECK-NEXT: constant max exit count for range_check_block: 1000
260
- ; CHECK-NEXT: constant max exit count for backedge: ***COULDNOTCOMPUTE***
261
- ; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (1000 umin %end)
262
- ; CHECK-NEXT: symbolic max exit count for loop: %end
263
- ; CHECK-NEXT: symbolic max exit count for range_check_block: 1000
264
- ; CHECK-NEXT: symbolic max exit count for backedge: ***COULDNOTCOMPUTE***
265
- ; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
266
- ;
267
- entry:
268
- br label %loop
269
-
270
- loop:
271
- %iv = phi i32 [0 , %entry ], [%iv.next , %backedge ]
272
- %zero_check = icmp ne i32 %iv , %end
273
- br i1 %zero_check , label %range_check_block , label %failed_1
274
-
275
- range_check_block:
276
- %range_check = icmp ult i32 %iv , 1000
277
- br i1 %range_check , label %backedge , label %failed_2
278
-
279
- backedge:
280
- %iv.next = add i32 %iv , 1
281
- %loop_cond = call i1 @cond ()
282
- br i1 %loop_cond , label %done , label %loop
283
-
284
- done:
285
- ret i32 %iv
286
-
287
- failed_1:
288
- ret i32 -1
289
-
290
- failed_2:
291
- ret i32 -2
292
- }
293
-
294
- define i32 @test_mixup_constant_symbolic_merged (i32 %end , i32 %len ) {
295
- ; CHECK-LABEL: 'test_mixup_constant_symbolic_merged'
296
- ; CHECK-NEXT: Classifying expressions for: @test_mixup_constant_symbolic_merged
297
- ; CHECK-NEXT: %iv = phi i32 [ 0, %entry ], [ %iv.next, %backedge ]
298
- ; CHECK-NEXT: --> {0,+,1}<%loop> U: [0,1001) S: [0,1001) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
299
- ; CHECK-NEXT: %and = and i1 %zero_check, %range_check
300
- ; CHECK-NEXT: --> (%range_check umin %zero_check) U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Variant }
301
- ; CHECK-NEXT: %iv.next = add i32 %iv, 1
302
- ; CHECK-NEXT: --> {1,+,1}<%loop> U: [1,1002) S: [1,1002) Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
303
- ; CHECK-NEXT: %loop_cond = call i1 @cond()
304
- ; CHECK-NEXT: --> %loop_cond U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Variant }
305
- ; CHECK-NEXT: Determining loop execution counts for: @test_mixup_constant_symbolic_merged
306
- ; CHECK-NEXT: Loop %loop: <multiple exits> Unpredictable backedge-taken count.
307
- ; CHECK-NEXT: exit count for loop: (1000 umin %end)
308
- ; CHECK-NEXT: exit count for backedge: ***COULDNOTCOMPUTE***
309
- ; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 1000
310
- ; CHECK-NEXT: constant max exit count for loop: 1000
311
- ; CHECK-NEXT: constant max exit count for backedge: ***COULDNOTCOMPUTE***
312
- ; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (1000 umin %end)
313
- ; CHECK-NEXT: symbolic max exit count for loop: (1000 umin %end)
314
- ; CHECK-NEXT: symbolic max exit count for backedge: ***COULDNOTCOMPUTE***
315
- ; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
316
- ;
317
- entry:
318
- br label %loop
319
-
320
- loop:
321
- %iv = phi i32 [0 , %entry ], [%iv.next , %backedge ]
322
- %zero_check = icmp ne i32 %iv , %end
323
- %range_check = icmp ult i32 %iv , 1000
324
- %and = and i1 %zero_check , %range_check
325
- br i1 %and , label %backedge , label %failed_1
326
-
327
- backedge:
328
- %iv.next = add i32 %iv , 1
329
- %loop_cond = call i1 @cond ()
330
- br i1 %loop_cond , label %done , label %loop
331
-
332
- done:
333
- ret i32 %iv
334
-
335
- failed_1:
336
- ret i32 -1
337
- }
0 commit comments