Skip to content

Commit a3d2737

Browse files
committed
Precommit tests for D67514
llvm-svn: 371762
1 parent cf321f4 commit a3d2737

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2+
; RUN: opt -S -analyze -scalar-evolution < %s | FileCheck %s
3+
4+
define void @umin_unsigned_check(i64 %n) {
5+
; CHECK-LABEL: 'umin_unsigned_check'
6+
; CHECK-NEXT: Classifying expressions for: @umin_unsigned_check
7+
; CHECK-NEXT: %min.n = select i1 %min.cmp, i64 4096, i64 %n
8+
; CHECK-NEXT: --> (4096 umin %n) U: full-set S: full-set
9+
; CHECK-NEXT: %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
10+
; CHECK-NEXT: --> {0,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
11+
; CHECK-NEXT: %iv.next = add i64 %iv, 1
12+
; CHECK-NEXT: --> {1,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
13+
; CHECK-NEXT: Determining loop execution counts for: @umin_unsigned_check
14+
; CHECK-NEXT: Loop %loop: Unpredictable backedge-taken count.
15+
; CHECK-NEXT: Loop %loop: Unpredictable max backedge-taken count.
16+
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
17+
;
18+
entry:
19+
%min.cmp = icmp ult i64 4096, %n
20+
%min.n = select i1 %min.cmp, i64 4096, i64 %n
21+
br label %loop
22+
loop:
23+
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
24+
%iv.next = add i64 %iv, 1
25+
%exit = icmp ugt i64 %iv, %min.n
26+
br i1 %exit, label %loop_exit, label %loop
27+
28+
loop_exit:
29+
ret void
30+
}
31+
32+
define void @umin_signed_check(i64 %n) {
33+
; CHECK-LABEL: 'umin_signed_check'
34+
; CHECK-NEXT: Classifying expressions for: @umin_signed_check
35+
; CHECK-NEXT: %min.n = select i1 %min.cmp, i64 4096, i64 %n
36+
; CHECK-NEXT: --> (4096 umin %n) U: full-set S: full-set
37+
; CHECK-NEXT: %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
38+
; CHECK-NEXT: --> {0,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
39+
; CHECK-NEXT: %iv.next = add i64 %iv, 1
40+
; CHECK-NEXT: --> {1,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
41+
; CHECK-NEXT: Determining loop execution counts for: @umin_signed_check
42+
; CHECK-NEXT: Loop %loop: Unpredictable backedge-taken count.
43+
; CHECK-NEXT: Loop %loop: Unpredictable max backedge-taken count.
44+
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
45+
;
46+
entry:
47+
%min.cmp = icmp ult i64 4096, %n
48+
%min.n = select i1 %min.cmp, i64 4096, i64 %n
49+
br label %loop
50+
loop:
51+
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
52+
%iv.next = add i64 %iv, 1
53+
%exit = icmp sgt i64 %iv, %min.n
54+
br i1 %exit, label %loop_exit, label %loop
55+
56+
loop_exit:
57+
ret void
58+
}
59+
60+
define void @smin_signed_check(i64 %n) {
61+
; CHECK-LABEL: 'smin_signed_check'
62+
; CHECK-NEXT: Classifying expressions for: @smin_signed_check
63+
; CHECK-NEXT: %min.n = select i1 %min.cmp, i64 4096, i64 %n
64+
; CHECK-NEXT: --> (4096 smin %n) U: full-set S: full-set
65+
; CHECK-NEXT: %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
66+
; CHECK-NEXT: --> {0,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
67+
; CHECK-NEXT: %iv.next = add i64 %iv, 1
68+
; CHECK-NEXT: --> {1,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
69+
; CHECK-NEXT: Determining loop execution counts for: @smin_signed_check
70+
; CHECK-NEXT: Loop %loop: Unpredictable backedge-taken count.
71+
; CHECK-NEXT: Loop %loop: Unpredictable max backedge-taken count.
72+
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
73+
;
74+
entry:
75+
%min.cmp = icmp slt i64 4096, %n
76+
%min.n = select i1 %min.cmp, i64 4096, i64 %n
77+
br label %loop
78+
loop:
79+
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
80+
%iv.next = add i64 %iv, 1
81+
%exit = icmp sgt i64 %iv, %min.n
82+
br i1 %exit, label %loop_exit, label %loop
83+
84+
loop_exit:
85+
ret void
86+
}
87+
88+
define void @smin_unsigned_check(i64 %n) {
89+
; CHECK-LABEL: 'smin_unsigned_check'
90+
; CHECK-NEXT: Classifying expressions for: @smin_unsigned_check
91+
; CHECK-NEXT: %min.n = select i1 %min.cmp, i64 4096, i64 %n
92+
; CHECK-NEXT: --> (4096 smin %n) U: full-set S: full-set
93+
; CHECK-NEXT: %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
94+
; CHECK-NEXT: --> {0,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
95+
; CHECK-NEXT: %iv.next = add i64 %iv, 1
96+
; CHECK-NEXT: --> {1,+,1}<%loop> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop: Computable }
97+
; CHECK-NEXT: Determining loop execution counts for: @smin_unsigned_check
98+
; CHECK-NEXT: Loop %loop: Unpredictable backedge-taken count.
99+
; CHECK-NEXT: Loop %loop: Unpredictable max backedge-taken count.
100+
; CHECK-NEXT: Loop %loop: Unpredictable predicated backedge-taken count.
101+
;
102+
entry:
103+
%min.cmp = icmp slt i64 4096, %n
104+
%min.n = select i1 %min.cmp, i64 4096, i64 %n
105+
br label %loop
106+
loop:
107+
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
108+
%iv.next = add i64 %iv, 1
109+
%exit = icmp ugt i64 %iv, %min.n
110+
br i1 %exit, label %loop_exit, label %loop
111+
112+
loop_exit:
113+
ret void
114+
}
115+

0 commit comments

Comments
 (0)