Skip to content

Commit 1b5a006

Browse files
committed
[FnSpecialization] (6/6) Update tests for prior set of changes
1 parent 49725f4 commit 1b5a006

File tree

2 files changed

+86
-52
lines changed

2 files changed

+86
-52
lines changed

llvm/test/Transforms/FunctionSpecialization/specialize-chain.ll

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,19 +114,51 @@ entry:
114114
; CHECK-NEXT: ret i32 0
115115
;
116116
;
117-
; CHECK-LABEL: define range(i32 -2147483642, -2147483648) i32 @main() {
117+
; CHECK-LABEL: define i32 @main() {
118118
; CHECK-NEXT: [[ENTRY:.*:]]
119119
; CHECK-NEXT: [[ADD:%.*]] = call i32 @incr.specialized.1(i32 10)
120120
; CHECK-NEXT: [[INT:%.*]] = call i32 @intrinsic(i32 3)
121121
; CHECK-NEXT: [[FWD_UNFOLD:%.*]] = call i32 @forward_unfold(i32 3)
122-
; CHECK-NEXT: [[FWD_INNER:%.*]] = call i32 @forward_inner(i32 3)
123-
; CHECK-NEXT: [[FWD_OUTER:%.*]] = call i32 @forward_outer(i32 3)
124-
; CHECK-NEXT: [[FWD_OUTER1:%.*]] = call i32 @forward_outer(i32 3)
125-
; CHECK-NEXT: [[MULTI_CALL:%.*]] = call i32 @multi_call(i32 5)
126-
; CHECK-NEXT: ret i32 [[MULTI_CALL]]
122+
; CHECK-NEXT: [[FWD_INNER:%.*]] = call i32 @forward_inner.specialized.4(i32 3)
123+
; CHECK-NEXT: [[FWD_OUTER:%.*]] = call i32 @forward_outer.specialized.6(i32 3)
124+
; CHECK-NEXT: [[FWD_OUTER1:%.*]] = call i32 @forward_outer.specialized.6(i32 3)
125+
; CHECK-NEXT: [[MULTI_CALL:%.*]] = call i32 @multi_call.specialized.2(i32 5)
126+
; CHECK-NEXT: ret i32 11
127127
;
128128
;
129129
; CHECK-LABEL: define internal i32 @incr.specialized.1(
130130
; CHECK-SAME: i32 [[A:%.*]]) {
131131
; CHECK-NEXT: ret i32 poison
132132
;
133+
;
134+
; CHECK-LABEL: define internal i32 @multi_call.specialized.2(
135+
; CHECK-SAME: i32 [[A:%.*]]) {
136+
; CHECK-NEXT: [[ENTRY:.*:]]
137+
; CHECK-NEXT: [[CALL:%.*]] = call i32 @incr.specialized.3(i32 5)
138+
; CHECK-NEXT: [[MUL_CALL:%.*]] = call i32 @incr.specialized.1(i32 10)
139+
; CHECK-NEXT: ret i32 poison
140+
;
141+
;
142+
; CHECK-LABEL: define internal i32 @incr.specialized.3(
143+
; CHECK-SAME: i32 [[A:%.*]]) {
144+
; CHECK-NEXT: ret i32 poison
145+
;
146+
;
147+
; CHECK-LABEL: define internal i32 @forward_inner.specialized.4(
148+
; CHECK-SAME: i32 [[A:%.*]]) {
149+
; CHECK-NEXT: [[ENTRY:.*:]]
150+
; CHECK-NEXT: [[CALL:%.*]] = call i32 @incr.specialized.5(i32 3)
151+
; CHECK-NEXT: ret i32 poison
152+
;
153+
;
154+
; CHECK-LABEL: define internal i32 @incr.specialized.5(
155+
; CHECK-SAME: i32 [[A:%.*]]) {
156+
; CHECK-NEXT: ret i32 poison
157+
;
158+
;
159+
; CHECK-LABEL: define internal i32 @forward_outer.specialized.6(
160+
; CHECK-SAME: i32 [[A:%.*]]) {
161+
; CHECK-NEXT: [[ENTRY:.*:]]
162+
; CHECK-NEXT: [[CALL:%.*]] = call i32 @forward_inner.specialized.4(i32 3)
163+
; CHECK-NEXT: ret i32 poison
164+
;

llvm/test/Transforms/FunctionSpecialization/track-return.ll

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ define i64 @main() {
44
; CHECK: define i64 @main
55
; CHECK-NEXT: entry:
66
; CHECK-NEXT: [[C1:%.*]] = call i64 @foo.specialized.1(i1 true, i64 3, i64 1)
7-
; CHECK-NEXT: [[C2:%.*]] = call i64 @foo.specialized.2(i1 false, i64 4, i64 -1)
7+
; CHECK-NEXT: [[C2:%.*]] = call i64 @foo.specialized.3(i1 false, i64 4, i64 -1)
88
; CHECK-NEXT: ret i64 8
99
;
1010
entry:
@@ -15,27 +15,6 @@ entry:
1515
}
1616

1717
define internal i64 @foo(i1 %flag, i64 %m, i64 %n) {
18-
;
19-
; CHECK: define internal i64 @foo.specialized.1
20-
; CHECK-NEXT: entry:
21-
; CHECK-NEXT: br label %plus
22-
; CHECK: plus:
23-
; CHECK-NEXT: [[N0:%.*]] = call i64 @binop.specialized.4(i64 3, i64 1)
24-
; CHECK-NEXT: [[RES0:%.*]] = call i64 @bar.specialized.6(i64 4)
25-
; CHECK-NEXT: br label %merge
26-
; CHECK: merge:
27-
; CHECK-NEXT: ret i64 poison
28-
;
29-
; CHECK: define internal i64 @foo.specialized.2
30-
; CHECK-NEXT: entry:
31-
; CHECK-NEXT: br label %minus
32-
; CHECK: minus:
33-
; CHECK-NEXT: [[N1:%.*]] = call i64 @binop.specialized.3(i64 4, i64 -1)
34-
; CHECK-NEXT: [[RES1:%.*]] = call i64 @bar.specialized.5(i64 3)
35-
; CHECK-NEXT: br label %merge
36-
; CHECK: merge:
37-
; CHECK-NEXT: ret i64 poison
38-
;
3918
entry:
4019
br i1 %flag, label %plus, label %minus
4120

@@ -55,21 +34,61 @@ merge:
5534
}
5635

5736
define internal i64 @binop(i64 %x, i64 %y) {
37+
entry:
38+
%z = add i64 %x, %y
39+
ret i64 %z
40+
}
41+
42+
define internal i64 @bar(i64 %n) {
43+
entry:
44+
%cmp = icmp sgt i64 %n, 3
45+
br i1 %cmp, label %if.then, label %if.else
46+
47+
if.then:
48+
%res0 = sdiv i64 %n, 2
49+
br label %if.end
50+
51+
if.else:
52+
%res1 = mul i64 %n, 2
53+
br label %if.end
54+
55+
if.end:
56+
%res = phi i64 [ %res0, %if.then ], [ %res1, %if.else]
57+
ret i64 %res
58+
}
59+
60+
;
61+
; CHECK: define internal i64 @foo.specialized.1
62+
; CHECK-NEXT: entry:
63+
; CHECK-NEXT: br label %plus
64+
; CHECK: plus:
65+
; CHECK-NEXT: [[N0:%.*]] = call i64 @binop.specialized.2(i64 3, i64 1)
66+
; CHECK-NEXT: [[RES0:%.*]] = call i64 @bar.specialized.6(i64 4)
67+
; CHECK-NEXT: br label %merge
68+
; CHECK: merge:
69+
; CHECK-NEXT: ret i64 poison
70+
;
5871
;
59-
; CHECK: define internal i64 @binop.specialized.3
72+
; CHECK: define internal i64 @binop.specialized.2
6073
; CHECK-NEXT: entry:
6174
; CHECK-NEXT: ret i64 poison
6275
;
76+
;
77+
; CHECK: define internal i64 @foo.specialized.3
78+
; CHECK-NEXT: entry:
79+
; CHECK-NEXT: br label %minus
80+
; CHECK: minus:
81+
; CHECK-NEXT: [[N1:%.*]] = call i64 @binop.specialized.4(i64 4, i64 -1)
82+
; CHECK-NEXT: [[RES1:%.*]] = call i64 @bar.specialized.5(i64 3)
83+
; CHECK-NEXT: br label %merge
84+
; CHECK: merge:
85+
; CHECK-NEXT: ret i64 poison
86+
;
87+
;
6388
; CHECK: define internal i64 @binop.specialized.4
6489
; CHECK-NEXT: entry:
6590
; CHECK-NEXT: ret i64 poison
6691
;
67-
entry:
68-
%z = add i64 %x, %y
69-
ret i64 %z
70-
}
71-
72-
define internal i64 @bar(i64 %n) {
7392
;
7493
; CHECK: define internal i64 @bar.specialized.5
7594
; CHECK-NEXT: entry:
@@ -87,20 +106,3 @@ define internal i64 @bar(i64 %n) {
87106
; CHECK: if.end:
88107
; CHECK-NEXT: ret i64 poison
89108
;
90-
entry:
91-
%cmp = icmp sgt i64 %n, 3
92-
br i1 %cmp, label %if.then, label %if.else
93-
94-
if.then:
95-
%res0 = sdiv i64 %n, 2
96-
br label %if.end
97-
98-
if.else:
99-
%res1 = mul i64 %n, 2
100-
br label %if.end
101-
102-
if.end:
103-
%res = phi i64 [ %res0, %if.then ], [ %res1, %if.else]
104-
ret i64 %res
105-
}
106-

0 commit comments

Comments
 (0)