[Reland][Runtimes] Merge 'compile_commands.json' files from runtimes build (#116303)
[llvm-project.git] / llvm / test / CodeGen / AArch64 / min-jump-table.ll
blob98b89210f5a05f6cada1f59a1813efccd216ad89
1 ; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -aarch64-min-jump-table-entries=0 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK0  < %t
2 ; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -aarch64-min-jump-table-entries=2 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK2  < %t
3 ; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -aarch64-min-jump-table-entries=4 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK4  < %t
4 ; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -aarch64-min-jump-table-entries=8 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK8  < %t
5 ; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -aarch64-min-jump-table-entries=12 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK12  < %t
6 ; RUN: llc %s -O2 -print-after-isel -mtriple=aarch64-linux-gnu -jump-table-density=40 -o /dev/null 2> %t; FileCheck %s --check-prefixes=CHECK,CHECK-DEFAULT  < %t
8 declare void @ext(i32, i32)
10 define i32 @jt2(i32 %a, i32 %b) {
11 entry:
12   switch i32 %a, label %return [
13     i32 1, label %bb1
14     i32 3, label %bb2
15   ]
16 ; CHECK-LABEL: function jt2:
17 ; CHECK0-NEXT: Jump Tables:
18 ; CHECK2-NEXT: Jump Tables:
19 ; CHECK4-NOT: {{^}}Jump Tables:
20 ; CHECK8-NOT: {{^}}Jump Tables:
21 ; CHECK12-NOT: {{^}}Jump Tables:
22 ; CHECK-DEFAULT-NOT: {{^}}Jump Tables:
24 bb1: tail call void @ext(i32 1, i32 0) br label %return
25 bb2: tail call void @ext(i32 2, i32 2) br label %return
27 return: ret i32 %b
30 define i32 @jt4(i32 %a, i32 %b) {
31 entry:
32   switch i32 %a, label %return [
33     i32 1, label %bb1
34     i32 2, label %bb2
35     i32 3, label %bb3
36     i32 5, label %bb4
37   ]
38 ; CHECK-LABEL: function jt4:
39 ; CHECK0-NEXT: Jump Tables:
40 ; CHECK2-NEXT: Jump Tables:
41 ; CHECK4-NEXT: Jump Tables:
42 ; CHECK8-NOT: {{^}}Jump Tables:
43 ; CHECK12-NOT: {{^}}Jump Tables:
44 ; CHECK-DEFAULT-NOT: {{^}}Jump Tables:
46 bb1: tail call void @ext(i32 1, i32 0) br label %return
47 bb2: tail call void @ext(i32 3, i32 2) br label %return
48 bb3: tail call void @ext(i32 4, i32 4) br label %return
49 bb4: tail call void @ext(i32 5, i32 6) br label %return
51 return: ret i32 %b
54 define i32 @jt8(i32 %a, i32 %b) {
55 entry:
56   switch i32 %a, label %return [
57     i32 1, label %bb1
58     i32 2, label %bb2
59     i32 3, label %bb3
60     i32 4, label %bb4
61     i32 5, label %bb5
62     i32 6, label %bb6
63     i32 7, label %bb7
64     i32 9, label %bb8
65   ]
66 ; CHECK-LABEL: function jt8:
67 ; CHECK0-NEXT: Jump Tables:
68 ; CHECK2-NEXT: Jump Tables:
69 ; CHECK4-NEXT: Jump Tables:
70 ; CHECK8-NEXT: Jump Tables:
71 ; CHECK12-NOT: Jump Tables:
72 ; CHECK-DEFAULT-NOT: {{^}}Jump Tables:
74 bb1: tail call void @ext(i32 1, i32 0) br label %return
75 bb2: tail call void @ext(i32 2, i32 2) br label %return
76 bb3: tail call void @ext(i32 3, i32 4) br label %return
77 bb4: tail call void @ext(i32 4, i32 6) br label %return
78 bb5: tail call void @ext(i32 5, i32 8) br label %return
79 bb6: tail call void @ext(i32 6, i32 10) br label %return
80 bb7: tail call void @ext(i32 7, i32 12) br label %return
81 bb8: tail call void @ext(i32 8, i32 14) br label %return
83 return: ret i32 %b
86 define i32 @jt12(i32 %a, i32 %b) {
87 entry:
88   switch i32 %a, label %return [
89     i32 1, label %bb1
90     i32 2, label %bb2
91     i32 3, label %bb3
92     i32 4, label %bb4
93     i32 5, label %bb5
94     i32 6, label %bb6
95     i32 7, label %bb7
96     i32 8, label %bb8
97     i32 9, label %bb9
98     i32 10, label %bb10
99     i32 11, label %bb11
100     i32 12, label %bb12
101   ]
102 ; CHECK-LABEL: function jt12:
103 ; CHECK0-NEXT: Jump Tables:
104 ; CHECK2-NEXT: Jump Tables:
105 ; CHECK4-NEXT: Jump Tables:
106 ; CHECK8-NEXT: Jump Tables:
107 ; CHECK12-NEXT: Jump Tables:
108 ; CHECK-DEFAULT-NOT: {{^}}Jump Tables:
110 bb1: tail call void @ext(i32 1, i32 0) br label %return
111 bb2: tail call void @ext(i32 2, i32 2) br label %return
112 bb3: tail call void @ext(i32 3, i32 4) br label %return
113 bb4: tail call void @ext(i32 4, i32 6) br label %return
114 bb5: tail call void @ext(i32 5, i32 8) br label %return
115 bb6: tail call void @ext(i32 6, i32 10) br label %return
116 bb7: tail call void @ext(i32 7, i32 12) br label %return
117 bb8: tail call void @ext(i32 8, i32 14) br label %return
118 bb9: tail call void @ext(i32 9, i32 16) br label %return
119 bb10: tail call void @ext(i32 10, i32 18) br label %return
120 bb11: tail call void @ext(i32 11, i32 20) br label %return
121 bb12: tail call void @ext(i32 12, i32 22) br label %return
123 return: ret i32 %b
126 define i32 @jt12_min_size(i32 %a, i32 %b) minsize {
127 entry:
128   switch i32 %a, label %return [
129     i32 1, label %bb1
130     i32 2, label %bb2
131     i32 3, label %bb3
132     i32 4, label %bb4
133     i32 5, label %bb5
134     i32 6, label %bb6
135     i32 7, label %bb7
136     i32 8, label %bb8
137     i32 9, label %bb9
138     i32 10, label %bb10
139     i32 11, label %bb11
140     i32 12, label %bb12
141   ]
142 ; CHECK-LABEL: function jt12_min_size:
143 ; CHECK0-NEXT: Jump Tables:
144 ; CHECK2-NEXT: Jump Tables:
145 ; CHECK4-NEXT: Jump Tables:
146 ; CHECK8-NEXT: Jump Tables:
147 ; CHECK12-NEXT: Jump Tables:
148 ; CHECK-DEFAULT: Jump Tables:
150 bb1: tail call void @ext(i32 1, i32 0) br label %return
151 bb2: tail call void @ext(i32 2, i32 2) br label %return
152 bb3: tail call void @ext(i32 3, i32 4) br label %return
153 bb4: tail call void @ext(i32 4, i32 6) br label %return
154 bb5: tail call void @ext(i32 5, i32 8) br label %return
155 bb6: tail call void @ext(i32 6, i32 10) br label %return
156 bb7: tail call void @ext(i32 7, i32 12) br label %return
157 bb8: tail call void @ext(i32 8, i32 14) br label %return
158 bb9: tail call void @ext(i32 9, i32 16) br label %return
159 bb10: tail call void @ext(i32 10, i32 18) br label %return
160 bb11: tail call void @ext(i32 11, i32 20) br label %return
161 bb12: tail call void @ext(i32 12, i32 22) br label %return
163 return: ret i32 %b
166 define i32 @jt13(i32 %a, i32 %b) {
167 entry:
168   switch i32 %a, label %return [
169     i32 1, label %bb1
170     i32 2, label %bb2
171     i32 3, label %bb3
172     i32 4, label %bb4
173     i32 5, label %bb5
174     i32 6, label %bb6
175     i32 7, label %bb7
176     i32 8, label %bb8
177     i32 9, label %bb9
178     i32 10, label %bb10
179     i32 11, label %bb11
180     i32 12, label %bb12
181     i32 13, label %bb13
182   ]
183 ; CHECK-LABEL: function jt13:
184 ; CHECK-NEXT: Jump Tables:
186 bb1: tail call void @ext(i32 1, i32 0) br label %return
187 bb2: tail call void @ext(i32 2, i32 2) br label %return
188 bb3: tail call void @ext(i32 3, i32 4) br label %return
189 bb4: tail call void @ext(i32 4, i32 6) br label %return
190 bb5: tail call void @ext(i32 5, i32 8) br label %return
191 bb6: tail call void @ext(i32 6, i32 10) br label %return
192 bb7: tail call void @ext(i32 7, i32 12) br label %return
193 bb8: tail call void @ext(i32 8, i32 14) br label %return
194 bb9: tail call void @ext(i32 9, i32 16) br label %return
195 bb10: tail call void @ext(i32 10, i32 18) br label %return
196 bb11: tail call void @ext(i32 11, i32 20) br label %return
197 bb12: tail call void @ext(i32 12, i32 22) br label %return
198 bb13: tail call void @ext(i32 13, i32 24) br label %return
200 return: ret i32 %b