109 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 42; RUN: opt < %s "-passes=print<scalar-evolution>" -scalar-evolution-classify-expressions=0 -disable-output 2>&1 | FileCheck %s3 4define void @test1(i32 %n) {5; CHECK-LABEL: 'test1'6; CHECK-NEXT: Determining loop execution counts for: @test17; CHECK-NEXT: Loop %loop: backedge-taken count is ((-32 + (96 * %n)) /u 32)8; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 1342177279; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is ((-32 + (96 * %n)) /u 32)10; CHECK-NEXT: Loop %loop: Trip multiple is 111;12entry:13 %s = mul i32 %n, 9614 br label %loop15loop:16 %i = phi i32 [ 0, %entry ], [ %i.next, %loop ]17 %i.next = add i32 %i, 3218 %t = icmp ne i32 %i.next, %s19 br i1 %t, label %loop, label %exit20exit:21 ret void22 23}24 25; PR1918326define i32 @test2(i32 %n) {27; CHECK-LABEL: 'test2'28; CHECK-NEXT: Determining loop execution counts for: @test229; CHECK-NEXT: Loop %loop: backedge-taken count is ((-32 + (32 * (%n /u 32))<nuw>) /u 32)30; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 13421772731; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is ((-32 + (32 * (%n /u 32))<nuw>) /u 32)32; CHECK-NEXT: Loop %loop: Trip multiple is 133;34entry:35 %s = and i32 %n, -3236 br label %loop37loop:38 %i = phi i32 [ 0, %entry ], [ %i.next, %loop ]39 %i.next = add i32 %i, 3240 %t = icmp ne i32 %i.next, %s41 br i1 %t, label %loop, label %exit42exit:43 ret i32 %i44 45}46 47define void @test3(i32 %n) {48; CHECK-LABEL: 'test3'49; CHECK-NEXT: Determining loop execution counts for: @test350; CHECK-NEXT: Loop %loop: backedge-taken count is ((-32 + (32 * %n)) /u 32)51; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 13421772752; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is ((-32 + (32 * %n)) /u 32)53; CHECK-NEXT: Loop %loop: Trip multiple is 154;55entry:56 %s = mul i32 %n, 9657 br label %loop58loop:59 %i = phi i32 [ 0, %entry ], [ %i.next, %loop ]60 %i.next = add i32 %i, 9661 %t = icmp ne i32 %i.next, %s62 br i1 %t, label %loop, label %exit63exit:64 ret void65 66}67 68define void @test4(i32 %n) {69; CHECK-LABEL: 'test4'70; CHECK-NEXT: Determining loop execution counts for: @test471; CHECK-NEXT: Loop %loop: backedge-taken count is ((-4 + (-1431655764 * %n)) /u 4)72; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 107374182373; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is ((-4 + (-1431655764 * %n)) /u 4)74; CHECK-NEXT: Loop %loop: Trip multiple is 175;76entry:77 %s = mul i32 %n, 478 br label %loop79loop:80 %i = phi i32 [ 0, %entry ], [ %i.next, %loop ]81 %i.next = add i32 %i, 1282 %t = icmp ne i32 %i.next, %s83 br i1 %t, label %loop, label %exit84exit:85 ret void86 87}88 89define void @test5(i32 %n) {90; CHECK-LABEL: 'test5'91; CHECK-NEXT: Determining loop execution counts for: @test592; CHECK-NEXT: Loop %loop: backedge-taken count is ((-4 + (4 * %n)) /u 4)93; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 107374182394; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is ((-4 + (4 * %n)) /u 4)95; CHECK-NEXT: Loop %loop: Trip multiple is 196;97entry:98 %s = mul i32 %n, 499 br label %loop100loop:101 %i = phi i32 [ %s, %entry ], [ %i.next, %loop ]102 %i.next = add i32 %i, -4103 %t = icmp ne i32 %i.next, 0104 br i1 %t, label %loop, label %exit105exit:106 ret void107 108}109