@@ -308,19 +308,18 @@ exit:
308
308
ret void
309
309
}
310
310
311
- ; TODO: Currently we miss getting the tightest constant max backedge-taken count (11).
312
311
define void @test_multiple_var_guards_order1 (ptr nocapture %a , i64 %i , i64 %N ) {
313
312
; CHECK-LABEL: 'test_multiple_var_guards_order1'
314
313
; CHECK-NEXT: Classifying expressions for: @test_multiple_var_guards_order1
315
314
; CHECK-NEXT: %iv = phi i64 [ %iv.next, %loop ], [ 0, %guardbb ]
316
- ; CHECK-NEXT: --> {0,+,1}<nuw><nsw><%loop> U: [0,-9223372036854775808 ) S: [0,-9223372036854775808 ) Exits: %i LoopDispositions: { %loop: Computable }
315
+ ; CHECK-NEXT: --> {0,+,1}<nuw><nsw><%loop> U: [0,11 ) S: [0,11 ) Exits: %i LoopDispositions: { %loop: Computable }
317
316
; CHECK-NEXT: %idx = getelementptr inbounds i32, ptr %a, i64 %iv
318
317
; CHECK-NEXT: --> {%a,+,4}<nuw><%loop> U: full-set S: full-set Exits: ((4 * %i) + %a) LoopDispositions: { %loop: Computable }
319
318
; CHECK-NEXT: %iv.next = add nuw nsw i64 %iv, 1
320
- ; CHECK-NEXT: --> {1,+,1}<nuw><%loop> U: [1,0 ) S: [1,0 ) Exits: (1 + %i) LoopDispositions: { %loop: Computable }
319
+ ; CHECK-NEXT: --> {1,+,1}<nuw><nsw>< %loop> U: [1,12 ) S: [1,12 ) Exits: (1 + %i) LoopDispositions: { %loop: Computable }
321
320
; CHECK-NEXT: Determining loop execution counts for: @test_multiple_var_guards_order1
322
321
; CHECK-NEXT: Loop %loop: backedge-taken count is %i
323
- ; CHECK-NEXT: Loop %loop: constant max backedge-taken count is -1
322
+ ; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 10
324
323
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is %i
325
324
; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is %i
326
325
; CHECK-NEXT: Predicates:
@@ -346,19 +345,18 @@ exit:
346
345
ret void
347
346
}
348
347
349
- ; TODO: Currently we miss getting the tightest constant max backedge-taken count (11).
350
348
define void @test_multiple_var_guards_order2 (ptr nocapture %a , i64 %i , i64 %N ) {
351
349
; CHECK-LABEL: 'test_multiple_var_guards_order2'
352
350
; CHECK-NEXT: Classifying expressions for: @test_multiple_var_guards_order2
353
351
; CHECK-NEXT: %iv = phi i64 [ %iv.next, %loop ], [ 0, %guardbb ]
354
- ; CHECK-NEXT: --> {0,+,1}<nuw><nsw><%loop> U: [0,-9223372036854775808 ) S: [0,-9223372036854775808 ) Exits: %i LoopDispositions: { %loop: Computable }
352
+ ; CHECK-NEXT: --> {0,+,1}<nuw><nsw><%loop> U: [0,11 ) S: [0,11 ) Exits: %i LoopDispositions: { %loop: Computable }
355
353
; CHECK-NEXT: %idx = getelementptr inbounds i32, ptr %a, i64 %iv
356
354
; CHECK-NEXT: --> {%a,+,4}<nuw><%loop> U: full-set S: full-set Exits: ((4 * %i) + %a) LoopDispositions: { %loop: Computable }
357
355
; CHECK-NEXT: %iv.next = add nuw nsw i64 %iv, 1
358
- ; CHECK-NEXT: --> {1,+,1}<nuw><%loop> U: [1,0 ) S: [1,0 ) Exits: (1 + %i) LoopDispositions: { %loop: Computable }
356
+ ; CHECK-NEXT: --> {1,+,1}<nuw><nsw>< %loop> U: [1,12 ) S: [1,12 ) Exits: (1 + %i) LoopDispositions: { %loop: Computable }
359
357
; CHECK-NEXT: Determining loop execution counts for: @test_multiple_var_guards_order2
360
358
; CHECK-NEXT: Loop %loop: backedge-taken count is %i
361
- ; CHECK-NEXT: Loop %loop: constant max backedge-taken count is -1
359
+ ; CHECK-NEXT: Loop %loop: constant max backedge-taken count is 10
362
360
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is %i
363
361
; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is %i
364
362
; CHECK-NEXT: Predicates:
@@ -393,10 +391,10 @@ define void @test_multiple_var_guards_cycle(ptr nocapture %a, i64 %i, i64 %N) {
393
391
; CHECK-NEXT: %idx = getelementptr inbounds i32, ptr %a, i64 %iv
394
392
; CHECK-NEXT: --> {%a,+,4}<nuw><%loop> U: full-set S: full-set Exits: ((4 * %N) + %a) LoopDispositions: { %loop: Computable }
395
393
; CHECK-NEXT: %iv.next = add nuw nsw i64 %iv, 1
396
- ; CHECK-NEXT: --> {1,+,1}<nuw><%loop> U: [1,0 ) S: [1,0 ) Exits: (1 + %N) LoopDispositions: { %loop: Computable }
394
+ ; CHECK-NEXT: --> {1,+,1}<nuw><%loop> U: [1,-1 ) S: [1,-1 ) Exits: (1 + %N) LoopDispositions: { %loop: Computable }
397
395
; CHECK-NEXT: Determining loop execution counts for: @test_multiple_var_guards_cycle
398
396
; CHECK-NEXT: Loop %loop: backedge-taken count is %N
399
- ; CHECK-NEXT: Loop %loop: constant max backedge-taken count is -1
397
+ ; CHECK-NEXT: Loop %loop: constant max backedge-taken count is -3
400
398
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is %N
401
399
; CHECK-NEXT: Loop %loop: Predicated backedge-taken count is %N
402
400
; CHECK-NEXT: Predicates:
0 commit comments