This extends the work from 7755c26 to all of the different backend
taken count kinds that we print for the scev analysis printer. As
before, the goal is to cut down on confusion as i4 -1 is a very
different (unsigned) value from i32 -1.
40 lines
1.3 KiB
LLVM
40 lines
1.3 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
|
|
; RUN: opt < %s -disable-output "-passes=print<scalar-evolution>" -scalar-evolution-classify-expressions=0 2>&1 | FileCheck %s
|
|
|
|
@A = weak global [1000 x i32] zeroinitializer, align 32
|
|
|
|
define void @PR1101(i32 %N) {
|
|
; CHECK-LABEL: 'PR1101'
|
|
; CHECK-NEXT: Determining loop execution counts for: @PR1101
|
|
; CHECK-NEXT: Loop %bb3: backedge-taken count is i32 4
|
|
; CHECK-NEXT: Loop %bb3: constant max backedge-taken count is i32 4
|
|
; CHECK-NEXT: Loop %bb3: symbolic max backedge-taken count is i32 4
|
|
; CHECK-NEXT: Loop %bb3: Trip multiple is 5
|
|
;
|
|
entry:
|
|
br label %bb3
|
|
|
|
bb: ; preds = %bb3
|
|
%tmp = getelementptr [1000 x i32], ptr @A, i32 0, i32 %i.0 ; <ptr> [#uses=1]
|
|
store i32 123, ptr %tmp
|
|
%tmp4 = mul i32 %i.0, 4 ; <i32> [#uses=1]
|
|
%tmp5 = or i32 %tmp4, 1
|
|
%tmp61 = xor i32 %tmp5, -2147483648
|
|
%tmp6 = trunc i32 %tmp61 to i16
|
|
%tmp71 = shl i16 %tmp6, 2
|
|
%tmp7 = zext i16 %tmp71 to i32
|
|
%tmp2 = add i32 %tmp7, %i.0
|
|
br label %bb3
|
|
|
|
bb3: ; preds = %bb, %entry
|
|
%i.0 = phi i32 [ 0, %entry ], [ %tmp2, %bb ] ; <i32> [#uses=3]
|
|
%tmp3 = icmp sle i32 %i.0, 9999 ; <i1> [#uses=1]
|
|
br i1 %tmp3, label %bb, label %bb5
|
|
|
|
bb5: ; preds = %bb3
|
|
br label %return
|
|
|
|
return: ; preds = %bb5
|
|
ret void
|
|
}
|