1*9250aedbSAndreas Jonson; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 4 2*9250aedbSAndreas Jonson; RUN: opt -disable-output "-passes=print<scalar-evolution>" -scalar-evolution-classify-expressions=0 < %s 2>&1 | FileCheck %s 3*9250aedbSAndreas Jonson 4*9250aedbSAndreas Jonsondefine i32 @slt_trip_count_with_range_attr(i32 range(i32 1, 100) %limit) { 5*9250aedbSAndreas Jonson; 6*9250aedbSAndreas Jonson; CHECK-LABEL: 'slt_trip_count_with_range_attr' 7*9250aedbSAndreas Jonson; CHECK-NEXT: Determining loop execution counts for: @slt_trip_count_with_range_attr 8*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + %limit)<nsw> 9*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 98 10*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + %limit)<nsw> 11*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: Trip multiple is 1 12*9250aedbSAndreas Jonson; 13*9250aedbSAndreas Jonson entry: 14*9250aedbSAndreas Jonson br label %loop 15*9250aedbSAndreas Jonson 16*9250aedbSAndreas Jonson loop: 17*9250aedbSAndreas Jonson %index = phi i32 [ 0, %entry ], [ %index.inc, %loop ] 18*9250aedbSAndreas Jonson %index.inc = add i32 %index, 1 19*9250aedbSAndreas Jonson %continue = icmp slt i32 %index.inc, %limit 20*9250aedbSAndreas Jonson br i1 %continue, label %loop, label %loop.exit 21*9250aedbSAndreas Jonson 22*9250aedbSAndreas Jonson loop.exit: 23*9250aedbSAndreas Jonson ret i32 0 24*9250aedbSAndreas Jonson} 25*9250aedbSAndreas Jonson 26*9250aedbSAndreas Jonsondeclare i32 @get_i32() 27*9250aedbSAndreas Jonson 28*9250aedbSAndreas Jonsondefine i32 @slt_trip_count_with_range_call() { 29*9250aedbSAndreas Jonson; 30*9250aedbSAndreas Jonson; CHECK-LABEL: 'slt_trip_count_with_range_call' 31*9250aedbSAndreas Jonson; CHECK-NEXT: Determining loop execution counts for: @slt_trip_count_with_range_call 32*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + %limit)<nsw> 33*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 98 34*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + %limit)<nsw> 35*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: Trip multiple is 1 36*9250aedbSAndreas Jonson; 37*9250aedbSAndreas Jonson entry: 38*9250aedbSAndreas Jonson %limit = call range(i32 1, 100) i32 @get_i32() 39*9250aedbSAndreas Jonson br label %loop 40*9250aedbSAndreas Jonson 41*9250aedbSAndreas Jonson loop: 42*9250aedbSAndreas Jonson %index = phi i32 [ 0, %entry ], [ %index.inc, %loop ] 43*9250aedbSAndreas Jonson %index.inc = add i32 %index, 1 44*9250aedbSAndreas Jonson %continue = icmp slt i32 %index.inc, %limit 45*9250aedbSAndreas Jonson br i1 %continue, label %loop, label %loop.exit 46*9250aedbSAndreas Jonson 47*9250aedbSAndreas Jonson loop.exit: 48*9250aedbSAndreas Jonson ret i32 0 49*9250aedbSAndreas Jonson} 50*9250aedbSAndreas Jonson 51*9250aedbSAndreas Jonsondeclare range(i32 1, 100) i32 @get_i32_in_range() 52*9250aedbSAndreas Jonson 53*9250aedbSAndreas Jonsondefine i32 @slt_trip_count_with_range_result() { 54*9250aedbSAndreas Jonson; 55*9250aedbSAndreas Jonson; CHECK-LABEL: 'slt_trip_count_with_range_result' 56*9250aedbSAndreas Jonson; CHECK-NEXT: Determining loop execution counts for: @slt_trip_count_with_range_result 57*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: backedge-taken count is (-1 + %limit)<nsw> 58*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 98 59*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is (-1 + %limit)<nsw> 60*9250aedbSAndreas Jonson; CHECK-NEXT: Loop %loop: Trip multiple is 1 61*9250aedbSAndreas Jonson; 62*9250aedbSAndreas Jonson entry: 63*9250aedbSAndreas Jonson %limit = call i32 @get_i32_in_range() 64*9250aedbSAndreas Jonson br label %loop 65*9250aedbSAndreas Jonson 66*9250aedbSAndreas Jonson loop: 67*9250aedbSAndreas Jonson %index = phi i32 [ 0, %entry ], [ %index.inc, %loop ] 68*9250aedbSAndreas Jonson %index.inc = add i32 %index, 1 69*9250aedbSAndreas Jonson %continue = icmp slt i32 %index.inc, %limit 70*9250aedbSAndreas Jonson br i1 %continue, label %loop, label %loop.exit 71*9250aedbSAndreas Jonson 72*9250aedbSAndreas Jonson loop.exit: 73*9250aedbSAndreas Jonson ret i32 0 74*9250aedbSAndreas Jonson} 75