44; Check for scenarios without TTI.
55
66define i64 @foo1 (i64 %a ) {
7- ; LOOKUPTABLE-LABEL: define i64 @foo1(
8- ; LOOKUPTABLE-SAME: i64 [[TMP0:%.*]]) {
9- ; LOOKUPTABLE-NEXT: switch i64 [[TMP0]], label [[DEFAULT_BRANCH_I:%.*]] [
10- ; LOOKUPTABLE-NEXT: i64 0, label [[BRANCH_0_I:%.*]]
11- ; LOOKUPTABLE-NEXT: i64 2, label [[BRANCH_2_I:%.*]]
12- ; LOOKUPTABLE-NEXT: i64 4, label [[BRANCH_4_I:%.*]]
13- ; LOOKUPTABLE-NEXT: i64 6, label [[BRANCH_6_I:%.*]]
14- ; LOOKUPTABLE-NEXT: ]
15- ; LOOKUPTABLE: branch_0.i:
16- ; LOOKUPTABLE-NEXT: br label [[BAR1_EXIT:%.*]]
17- ; LOOKUPTABLE: branch_2.i:
18- ; LOOKUPTABLE-NEXT: br label [[BAR1_EXIT]]
19- ; LOOKUPTABLE: branch_4.i:
20- ; LOOKUPTABLE-NEXT: br label [[BAR1_EXIT]]
21- ; LOOKUPTABLE: branch_6.i:
22- ; LOOKUPTABLE-NEXT: br label [[BAR1_EXIT]]
23- ; LOOKUPTABLE: default_branch.i:
24- ; LOOKUPTABLE-NEXT: br label [[BAR1_EXIT]]
25- ; LOOKUPTABLE: bar1.exit:
26- ; LOOKUPTABLE-NEXT: [[TMP2:%.*]] = phi i64 [ 5, [[BRANCH_0_I]] ], [ 9, [[BRANCH_2_I]] ], [ 2, [[BRANCH_4_I]] ], [ 7, [[BRANCH_6_I]] ], [ 3, [[DEFAULT_BRANCH_I]] ]
27- ; LOOKUPTABLE-NEXT: ret i64 [[TMP2]]
28- ;
29- ; SWITCH-LABEL: define i64 @foo1(
30- ; SWITCH-SAME: i64 [[TMP0:%.*]]) {
31- ; SWITCH-NEXT: switch i64 [[TMP0]], label [[DEFAULT_BRANCH_I:%.*]] [
32- ; SWITCH-NEXT: i64 0, label [[BRANCH_0_I:%.*]]
33- ; SWITCH-NEXT: i64 2, label [[BRANCH_2_I:%.*]]
34- ; SWITCH-NEXT: i64 4, label [[BRANCH_4_I:%.*]]
35- ; SWITCH-NEXT: i64 6, label [[BRANCH_6_I:%.*]]
36- ; SWITCH-NEXT: ]
37- ; SWITCH: branch_0.i:
38- ; SWITCH-NEXT: br label [[BAR1_EXIT:%.*]]
39- ; SWITCH: branch_2.i:
40- ; SWITCH-NEXT: br label [[BAR1_EXIT]]
41- ; SWITCH: branch_4.i:
42- ; SWITCH-NEXT: br label [[BAR1_EXIT]]
43- ; SWITCH: branch_6.i:
44- ; SWITCH-NEXT: br label [[BAR1_EXIT]]
45- ; SWITCH: default_branch.i:
46- ; SWITCH-NEXT: br label [[BAR1_EXIT]]
47- ; SWITCH: bar1.exit:
48- ; SWITCH-NEXT: [[TMP2:%.*]] = phi i64 [ 5, [[BRANCH_0_I]] ], [ 9, [[BRANCH_2_I]] ], [ 2, [[BRANCH_4_I]] ], [ 7, [[BRANCH_6_I]] ], [ 3, [[DEFAULT_BRANCH_I]] ]
49- ; SWITCH-NEXT: ret i64 [[TMP2]]
50- ;
517; CHECK-LABEL: define i64 @foo1(
528; CHECK-SAME: i64 [[A:%.*]]) {
539; CHECK-NEXT: [[B:%.*]] = call i64 @bar1(i64 [[A]])
@@ -58,50 +14,6 @@ define i64 @foo1(i64 %a) {
5814}
5915
6016define i64 @foo2 (i64 %a ) {
61- ; LOOKUPTABLE-LABEL: define i64 @foo2(
62- ; LOOKUPTABLE-SAME: i64 [[TMP0:%.*]]) {
63- ; LOOKUPTABLE-NEXT: switch i64 [[TMP0]], label [[UNREACHABLEDEFAULT_I:%.*]] [
64- ; LOOKUPTABLE-NEXT: i64 0, label [[BRANCH_0_I:%.*]]
65- ; LOOKUPTABLE-NEXT: i64 2, label [[BRANCH_2_I:%.*]]
66- ; LOOKUPTABLE-NEXT: i64 4, label [[BRANCH_4_I:%.*]]
67- ; LOOKUPTABLE-NEXT: i64 6, label [[BRANCH_6_I:%.*]]
68- ; LOOKUPTABLE-NEXT: ]
69- ; LOOKUPTABLE: branch_0.i:
70- ; LOOKUPTABLE-NEXT: br label [[BAR2_EXIT:%.*]]
71- ; LOOKUPTABLE: branch_2.i:
72- ; LOOKUPTABLE-NEXT: br label [[BAR2_EXIT]]
73- ; LOOKUPTABLE: branch_4.i:
74- ; LOOKUPTABLE-NEXT: br label [[BAR2_EXIT]]
75- ; LOOKUPTABLE: branch_6.i:
76- ; LOOKUPTABLE-NEXT: br label [[BAR2_EXIT]]
77- ; LOOKUPTABLE: unreachabledefault.i:
78- ; LOOKUPTABLE-NEXT: unreachable
79- ; LOOKUPTABLE: bar2.exit:
80- ; LOOKUPTABLE-NEXT: [[TMP2:%.*]] = phi i64 [ 5, [[BRANCH_0_I]] ], [ 9, [[BRANCH_2_I]] ], [ 2, [[BRANCH_4_I]] ], [ 7, [[BRANCH_6_I]] ]
81- ; LOOKUPTABLE-NEXT: ret i64 [[TMP2]]
82- ;
83- ; SWITCH-LABEL: define i64 @foo2(
84- ; SWITCH-SAME: i64 [[TMP0:%.*]]) {
85- ; SWITCH-NEXT: switch i64 [[TMP0]], label [[UNREACHABLEDEFAULT_I:%.*]] [
86- ; SWITCH-NEXT: i64 0, label [[BRANCH_0_I:%.*]]
87- ; SWITCH-NEXT: i64 2, label [[BRANCH_2_I:%.*]]
88- ; SWITCH-NEXT: i64 4, label [[BRANCH_4_I:%.*]]
89- ; SWITCH-NEXT: i64 6, label [[BRANCH_6_I:%.*]]
90- ; SWITCH-NEXT: ]
91- ; SWITCH: branch_0.i:
92- ; SWITCH-NEXT: br label [[BAR2_EXIT:%.*]]
93- ; SWITCH: branch_2.i:
94- ; SWITCH-NEXT: br label [[BAR2_EXIT]]
95- ; SWITCH: branch_4.i:
96- ; SWITCH-NEXT: br label [[BAR2_EXIT]]
97- ; SWITCH: branch_6.i:
98- ; SWITCH-NEXT: br label [[BAR2_EXIT]]
99- ; SWITCH: unreachabledefault.i:
100- ; SWITCH-NEXT: unreachable
101- ; SWITCH: bar2.exit:
102- ; SWITCH-NEXT: [[TMP2:%.*]] = phi i64 [ 5, [[BRANCH_0_I]] ], [ 9, [[BRANCH_2_I]] ], [ 2, [[BRANCH_4_I]] ], [ 7, [[BRANCH_6_I]] ]
103- ; SWITCH-NEXT: ret i64 [[TMP2]]
104- ;
10517; CHECK-LABEL: define i64 @foo2(
10618; CHECK-SAME: i64 [[A:%.*]]) {
10719; CHECK-NEXT: switch i64 [[A]], label [[UNREACHABLEDEFAULT_I:%.*]] [
@@ -129,50 +41,6 @@ define i64 @foo2(i64 %a) {
12941}
13042
13143define i64 @bar1 (i64 %a ) {
132- ; LOOKUPTABLE-LABEL: define i64 @bar1(
133- ; LOOKUPTABLE-SAME: i64 [[TMP0:%.*]]) {
134- ; LOOKUPTABLE-NEXT: switch i64 [[TMP0]], label [[DEFAULT_BRANCH:%.*]] [
135- ; LOOKUPTABLE-NEXT: i64 0, label [[BRANCH_0:%.*]]
136- ; LOOKUPTABLE-NEXT: i64 2, label [[BRANCH_2:%.*]]
137- ; LOOKUPTABLE-NEXT: i64 4, label [[BRANCH_4:%.*]]
138- ; LOOKUPTABLE-NEXT: i64 6, label [[BRANCH_6:%.*]]
139- ; LOOKUPTABLE-NEXT: ]
140- ; LOOKUPTABLE: branch_0:
141- ; LOOKUPTABLE-NEXT: br label [[EXIT:%.*]]
142- ; LOOKUPTABLE: branch_2:
143- ; LOOKUPTABLE-NEXT: br label [[EXIT]]
144- ; LOOKUPTABLE: branch_4:
145- ; LOOKUPTABLE-NEXT: br label [[EXIT]]
146- ; LOOKUPTABLE: branch_6:
147- ; LOOKUPTABLE-NEXT: br label [[EXIT]]
148- ; LOOKUPTABLE: default_branch:
149- ; LOOKUPTABLE-NEXT: br label [[EXIT]]
150- ; LOOKUPTABLE: exit:
151- ; LOOKUPTABLE-NEXT: [[TMP2:%.*]] = phi i64 [ 5, [[BRANCH_0]] ], [ 9, [[BRANCH_2]] ], [ 2, [[BRANCH_4]] ], [ 7, [[BRANCH_6]] ], [ 3, [[DEFAULT_BRANCH]] ]
152- ; LOOKUPTABLE-NEXT: ret i64 [[TMP2]]
153- ;
154- ; SWITCH-LABEL: define i64 @bar1(
155- ; SWITCH-SAME: i64 [[TMP0:%.*]]) {
156- ; SWITCH-NEXT: switch i64 [[TMP0]], label [[DEFAULT_BRANCH:%.*]] [
157- ; SWITCH-NEXT: i64 0, label [[BRANCH_0:%.*]]
158- ; SWITCH-NEXT: i64 2, label [[BRANCH_2:%.*]]
159- ; SWITCH-NEXT: i64 4, label [[BRANCH_4:%.*]]
160- ; SWITCH-NEXT: i64 6, label [[BRANCH_6:%.*]]
161- ; SWITCH-NEXT: ]
162- ; SWITCH: branch_0:
163- ; SWITCH-NEXT: br label [[EXIT:%.*]]
164- ; SWITCH: branch_2:
165- ; SWITCH-NEXT: br label [[EXIT]]
166- ; SWITCH: branch_4:
167- ; SWITCH-NEXT: br label [[EXIT]]
168- ; SWITCH: branch_6:
169- ; SWITCH-NEXT: br label [[EXIT]]
170- ; SWITCH: default_branch:
171- ; SWITCH-NEXT: br label [[EXIT]]
172- ; SWITCH: exit:
173- ; SWITCH-NEXT: [[TMP2:%.*]] = phi i64 [ 5, [[BRANCH_0]] ], [ 9, [[BRANCH_2]] ], [ 2, [[BRANCH_4]] ], [ 7, [[BRANCH_6]] ], [ 3, [[DEFAULT_BRANCH]] ]
174- ; SWITCH-NEXT: ret i64 [[TMP2]]
175- ;
17644; CHECK-LABEL: define i64 @bar1(
17745; CHECK-SAME: i64 [[A:%.*]]) {
17846; CHECK-NEXT: switch i64 [[A]], label [[DEFAULT_BRANCH:%.*]] [
@@ -223,50 +91,6 @@ exit:
22391}
22492
22593define i64 @bar2 (i64 %a ) {
226- ; LOOKUPTABLE-LABEL: define i64 @bar2(
227- ; LOOKUPTABLE-SAME: i64 [[TMP0:%.*]]) {
228- ; LOOKUPTABLE-NEXT: switch i64 [[TMP0]], label [[UNREACHABLEDEFAULT:%.*]] [
229- ; LOOKUPTABLE-NEXT: i64 0, label [[BRANCH_0:%.*]]
230- ; LOOKUPTABLE-NEXT: i64 2, label [[BRANCH_2:%.*]]
231- ; LOOKUPTABLE-NEXT: i64 4, label [[BRANCH_4:%.*]]
232- ; LOOKUPTABLE-NEXT: i64 6, label [[BRANCH_6:%.*]]
233- ; LOOKUPTABLE-NEXT: ]
234- ; LOOKUPTABLE: branch_0:
235- ; LOOKUPTABLE-NEXT: br label [[EXIT:%.*]]
236- ; LOOKUPTABLE: branch_2:
237- ; LOOKUPTABLE-NEXT: br label [[EXIT]]
238- ; LOOKUPTABLE: branch_4:
239- ; LOOKUPTABLE-NEXT: br label [[EXIT]]
240- ; LOOKUPTABLE: branch_6:
241- ; LOOKUPTABLE-NEXT: br label [[EXIT]]
242- ; LOOKUPTABLE: unreachabledefault:
243- ; LOOKUPTABLE-NEXT: unreachable
244- ; LOOKUPTABLE: exit:
245- ; LOOKUPTABLE-NEXT: [[TMP2:%.*]] = phi i64 [ 5, [[BRANCH_0]] ], [ 9, [[BRANCH_2]] ], [ 2, [[BRANCH_4]] ], [ 7, [[BRANCH_6]] ]
246- ; LOOKUPTABLE-NEXT: ret i64 [[TMP2]]
247- ;
248- ; SWITCH-LABEL: define i64 @bar2(
249- ; SWITCH-SAME: i64 [[TMP0:%.*]]) {
250- ; SWITCH-NEXT: switch i64 [[TMP0]], label [[UNREACHABLEDEFAULT:%.*]] [
251- ; SWITCH-NEXT: i64 0, label [[BRANCH_0:%.*]]
252- ; SWITCH-NEXT: i64 2, label [[BRANCH_2:%.*]]
253- ; SWITCH-NEXT: i64 4, label [[BRANCH_4:%.*]]
254- ; SWITCH-NEXT: i64 6, label [[BRANCH_6:%.*]]
255- ; SWITCH-NEXT: ]
256- ; SWITCH: branch_0:
257- ; SWITCH-NEXT: br label [[EXIT:%.*]]
258- ; SWITCH: branch_2:
259- ; SWITCH-NEXT: br label [[EXIT]]
260- ; SWITCH: branch_4:
261- ; SWITCH-NEXT: br label [[EXIT]]
262- ; SWITCH: branch_6:
263- ; SWITCH-NEXT: br label [[EXIT]]
264- ; SWITCH: unreachabledefault:
265- ; SWITCH-NEXT: unreachable
266- ; SWITCH: exit:
267- ; SWITCH-NEXT: [[TMP2:%.*]] = phi i64 [ 5, [[BRANCH_0]] ], [ 9, [[BRANCH_2]] ], [ 2, [[BRANCH_4]] ], [ 7, [[BRANCH_6]] ]
268- ; SWITCH-NEXT: ret i64 [[TMP2]]
269- ;
27094; CHECK-LABEL: define i64 @bar2(
27195; CHECK-SAME: i64 [[A:%.*]]) {
27296; CHECK-NEXT: switch i64 [[A]], label [[UNREACHABLEDEFAULT:%.*]] [
0 commit comments