Skip to content

Commit 5ba64c3

Browse files
committed
[SCEV] Add tests for #89885 (NFC)
1 parent d2af1ea commit 5ba64c3

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

llvm/test/Analysis/ScalarEvolution/exhaustive-trip-counts.ll

+54
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,58 @@ for.cond.cleanup:
2727
ret void
2828
}
2929

30+
31+
define i64 @test_fp_libcall() {
32+
; CHECK-LABEL: 'test_fp_libcall'
33+
; CHECK-NEXT: Determining loop execution counts for: @test_fp_libcall
34+
; CHECK-NEXT: Loop %loop: backedge-taken count is i32 90
35+
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 90
36+
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is i32 90
37+
; CHECK-NEXT: Loop %loop: Trip multiple is 91
38+
;
39+
entry:
40+
br label %loop
41+
42+
loop:
43+
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
44+
%fv = phi double [ 1.000000e+00, %entry ], [ %fv.next, %loop ]
45+
call void @use(double %fv)
46+
%fv.next = call double @llvm.sin.f64(double %fv)
47+
%iv.next = add i64 %iv, 1
48+
%fcmp = fcmp une double %fv, 0x3FC6BA15EE8460B0
49+
br i1 %fcmp, label %loop, label %exit
50+
51+
exit:
52+
ret i64 %iv
53+
}
54+
55+
define i64 @test_nan_sign() {
56+
; CHECK-LABEL: 'test_nan_sign'
57+
; CHECK-NEXT: Determining loop execution counts for: @test_nan_sign
58+
; CHECK-NEXT: Loop %loop: backedge-taken count is i32 46
59+
; CHECK-NEXT: Loop %loop: constant max backedge-taken count is i32 46
60+
; CHECK-NEXT: Loop %loop: symbolic max backedge-taken count is i32 46
61+
; CHECK-NEXT: Loop %loop: Trip multiple is 47
62+
;
63+
entry:
64+
br label %loop
65+
66+
loop:
67+
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
68+
%fv = phi double [ -1.000000e+00, %entry ], [ %fv.next, %loop ]
69+
call void @use(double %fv)
70+
%a = fsub double %fv, 0x7F86C16C16C16C16
71+
%b = fadd double %a, %a
72+
%fv.next = fsub double %b, %a
73+
%iv.next = add i64 %iv, 1
74+
%fv.bc = bitcast double %fv to i64
75+
%icmp = icmp slt i64 %fv.bc, 0
76+
br i1 %icmp, label %loop, label %exit
77+
78+
exit:
79+
ret i64 %iv
80+
}
81+
3082
declare void @dummy()
83+
declare void @use(double %i)
84+
declare double @llvm.sin.f64(double)

0 commit comments

Comments
 (0)