4
4
; Check for scenarios without TTI.
5
5
6
6
define 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
- ;
51
7
; CHECK-LABEL: define i64 @foo1(
52
8
; CHECK-SAME: i64 [[A:%.*]]) {
53
9
; CHECK-NEXT: [[B:%.*]] = call i64 @bar1(i64 [[A]])
@@ -58,50 +14,6 @@ define i64 @foo1(i64 %a) {
58
14
}
59
15
60
16
define 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
- ;
105
17
; CHECK-LABEL: define i64 @foo2(
106
18
; CHECK-SAME: i64 [[A:%.*]]) {
107
19
; CHECK-NEXT: switch i64 [[A]], label [[UNREACHABLEDEFAULT_I:%.*]] [
@@ -129,50 +41,6 @@ define i64 @foo2(i64 %a) {
129
41
}
130
42
131
43
define 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
- ;
176
44
; CHECK-LABEL: define i64 @bar1(
177
45
; CHECK-SAME: i64 [[A:%.*]]) {
178
46
; CHECK-NEXT: switch i64 [[A]], label [[DEFAULT_BRANCH:%.*]] [
@@ -223,50 +91,6 @@ exit:
223
91
}
224
92
225
93
define 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
- ;
270
94
; CHECK-LABEL: define i64 @bar2(
271
95
; CHECK-SAME: i64 [[A:%.*]]) {
272
96
; CHECK-NEXT: switch i64 [[A]], label [[UNREACHABLEDEFAULT:%.*]] [
0 commit comments