blob: 42334568f365a39295b7f1630eaa4d479604cd58 [file] [log] [blame]
Colin Crossa6845402020-11-16 15:08:19 -08001// Copyright 2020 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package android
16
Colin Crossa6845402020-11-16 15:08:19 -080017var archVariants = map[ArchType][]string{
18 Arm: {
19 "armv7-a",
20 "armv7-a-neon",
21 "armv8-a",
22 "armv8-2a",
Colin Crossa6845402020-11-16 15:08:19 -080023 },
24 Arm64: {
Liz Kammer2c2afe22022-02-11 11:35:03 -050025 "armv8-a",
26 "armv8-a-branchprot",
27 "armv8-2a",
Colin Crossa6845402020-11-16 15:08:19 -080028 "armv8-2a-dotprod",
Evgenii Stepanov80d74922023-02-10 19:13:49 -080029 "armv9-a",
Colin Crossa6845402020-11-16 15:08:19 -080030 },
31 X86: {
32 "amberlake",
33 "atom",
34 "broadwell",
Ryo Hashimotof68c18f2022-11-16 17:25:01 +090035 "goldmont",
36 "goldmont-plus",
Satoshi Niwab6d818d2024-01-24 16:17:00 +090037 // Target arch is goldmont, but without supporting SHA and XSAVES.
Satoshi Niwac41f2112023-12-14 17:33:36 +090038 // This ensures efficient execution on a broad range of Intel/AMD CPUs used
Satoshi Niwab6d818d2024-01-24 16:17:00 +090039 // in Chromebooks, including those lacking SHA or XSAVES support.
Satoshi Niwac41f2112023-12-14 17:33:36 +090040 // (e.g. Kaby Lake, Gemini Lake, Alder Lake and AMD Zen series)
Satoshi Niwab6d818d2024-01-24 16:17:00 +090041 "goldmont-without-sha-xsaves",
Colin Crossa6845402020-11-16 15:08:19 -080042 "haswell",
43 "icelake",
44 "ivybridge",
45 "kabylake",
46 "sandybridge",
47 "silvermont",
48 "skylake",
49 "stoneyridge",
50 "tigerlake",
Ryo Hashimotof68c18f2022-11-16 17:25:01 +090051 "tremont",
Colin Crossa6845402020-11-16 15:08:19 -080052 "whiskeylake",
53 "x86_64",
54 },
55 X86_64: {
56 "amberlake",
57 "broadwell",
Ryo Hashimotof68c18f2022-11-16 17:25:01 +090058 "goldmont",
59 "goldmont-plus",
Satoshi Niwab6d818d2024-01-24 16:17:00 +090060 "goldmont-without-sha-xsaves",
Colin Crossa6845402020-11-16 15:08:19 -080061 "haswell",
62 "icelake",
63 "ivybridge",
64 "kabylake",
65 "sandybridge",
66 "silvermont",
67 "skylake",
68 "stoneyridge",
69 "tigerlake",
Ryo Hashimotof68c18f2022-11-16 17:25:01 +090070 "tremont",
Colin Crossa6845402020-11-16 15:08:19 -080071 "whiskeylake",
72 },
73}
74
Liz Kammer2c2afe22022-02-11 11:35:03 -050075var cpuVariants = map[ArchType][]string{
76 Arm: {
77 "cortex-a7",
78 "cortex-a8",
79 "cortex-a9",
80 "cortex-a15",
Jesus Sanchez-Palenciade7c7842023-03-02 16:56:05 -080081 "cortex-a32",
Liz Kammer2c2afe22022-02-11 11:35:03 -050082 "cortex-a53",
83 "cortex-a53.a57",
84 "cortex-a55",
85 "cortex-a72",
86 "cortex-a73",
87 "cortex-a75",
88 "cortex-a76",
89 "krait",
90 "kryo",
91 "kryo385",
92 "exynos-m1",
93 "exynos-m2",
94 },
95 Arm64: {
96 "cortex-a53",
97 "cortex-a55",
98 "cortex-a72",
99 "cortex-a73",
100 "cortex-a75",
101 "cortex-a76",
102 "kryo",
103 "kryo385",
104 "exynos-m1",
105 "exynos-m2",
Roopesh Nataraja826912e2024-07-08 15:27:45 -0700106 "oryon",
Liz Kammer2c2afe22022-02-11 11:35:03 -0500107 },
108 X86: {},
109 X86_64: {},
110}
111
Colin Crossa6845402020-11-16 15:08:19 -0800112var archFeatures = map[ArchType][]string{
113 Arm: {
114 "neon",
115 },
116 Arm64: {
117 "dotprod",
118 },
119 X86: {
120 "ssse3",
121 "sse4",
122 "sse4_1",
123 "sse4_2",
124 "aes_ni",
125 "avx",
126 "avx2",
127 "avx512",
128 "popcnt",
129 "movbe",
130 },
131 X86_64: {
132 "ssse3",
133 "sse4",
134 "sse4_1",
135 "sse4_2",
136 "aes_ni",
137 "avx",
138 "avx2",
139 "avx512",
140 "popcnt",
141 },
142}
143
Liz Kammere8303bd2022-02-16 09:02:48 -0500144var androidArchFeatureMap = map[ArchType]map[string][]string{
Colin Crossa6845402020-11-16 15:08:19 -0800145 Arm: {
146 "armv7-a-neon": {
147 "neon",
148 },
149 "armv8-a": {
150 "neon",
151 },
152 "armv8-2a": {
153 "neon",
154 },
155 },
156 Arm64: {
157 "armv8-2a-dotprod": {
158 "dotprod",
159 },
Evgenii Stepanov80d74922023-02-10 19:13:49 -0800160 "armv9-a": {
161 "dotprod",
162 },
Colin Crossa6845402020-11-16 15:08:19 -0800163 },
164 X86: {
165 "amberlake": {
166 "ssse3",
167 "sse4",
168 "sse4_1",
169 "sse4_2",
170 "avx",
171 "avx2",
172 "aes_ni",
173 "popcnt",
174 },
175 "atom": {
176 "ssse3",
177 "movbe",
178 },
179 "broadwell": {
180 "ssse3",
181 "sse4",
182 "sse4_1",
183 "sse4_2",
184 "avx",
185 "avx2",
186 "aes_ni",
187 "popcnt",
188 },
Ryo Hashimotof68c18f2022-11-16 17:25:01 +0900189 "goldmont": {
190 "ssse3",
191 "sse4",
192 "sse4_1",
193 "sse4_2",
194 "aes_ni",
195 "popcnt",
196 "movbe",
197 },
198 "goldmont-plus": {
199 "ssse3",
200 "sse4",
201 "sse4_1",
202 "sse4_2",
203 "aes_ni",
204 "popcnt",
205 "movbe",
206 },
Satoshi Niwab6d818d2024-01-24 16:17:00 +0900207 "goldmont-without-sha-xsaves": {
Satoshi Niwac41f2112023-12-14 17:33:36 +0900208 "ssse3",
209 "sse4",
210 "sse4_1",
211 "sse4_2",
212 "aes_ni",
213 "popcnt",
214 "movbe",
215 },
Colin Crossa6845402020-11-16 15:08:19 -0800216 "haswell": {
217 "ssse3",
218 "sse4",
219 "sse4_1",
220 "sse4_2",
221 "aes_ni",
222 "avx",
223 "popcnt",
224 "movbe",
225 },
226 "icelake": {
227 "ssse3",
228 "sse4",
229 "sse4_1",
230 "sse4_2",
231 "avx",
232 "avx2",
233 "avx512",
234 "aes_ni",
235 "popcnt",
236 },
237 "ivybridge": {
238 "ssse3",
239 "sse4",
240 "sse4_1",
241 "sse4_2",
242 "aes_ni",
243 "avx",
244 "popcnt",
245 },
246 "kabylake": {
247 "ssse3",
248 "sse4",
249 "sse4_1",
250 "sse4_2",
251 "avx",
252 "avx2",
253 "aes_ni",
254 "popcnt",
255 },
256 "sandybridge": {
257 "ssse3",
258 "sse4",
259 "sse4_1",
260 "sse4_2",
261 "popcnt",
262 },
263 "silvermont": {
264 "ssse3",
265 "sse4",
266 "sse4_1",
267 "sse4_2",
268 "aes_ni",
269 "popcnt",
270 "movbe",
271 },
272 "skylake": {
273 "ssse3",
274 "sse4",
275 "sse4_1",
276 "sse4_2",
277 "avx",
278 "avx2",
279 "avx512",
280 "aes_ni",
281 "popcnt",
282 },
283 "stoneyridge": {
284 "ssse3",
285 "sse4",
286 "sse4_1",
287 "sse4_2",
288 "aes_ni",
289 "avx",
290 "avx2",
291 "popcnt",
292 "movbe",
293 },
294 "tigerlake": {
295 "ssse3",
296 "sse4",
297 "sse4_1",
298 "sse4_2",
299 "avx",
300 "avx2",
301 "avx512",
302 "aes_ni",
303 "popcnt",
304 },
Ryo Hashimotof68c18f2022-11-16 17:25:01 +0900305 "tremont": {
306 "ssse3",
307 "sse4",
308 "sse4_1",
309 "sse4_2",
310 "aes_ni",
311 "popcnt",
312 "movbe",
313 },
Colin Crossa6845402020-11-16 15:08:19 -0800314 "whiskeylake": {
315 "ssse3",
316 "sse4",
317 "sse4_1",
318 "sse4_2",
319 "avx",
320 "avx2",
321 "avx512",
322 "aes_ni",
323 "popcnt",
324 },
325 "x86_64": {
326 "ssse3",
327 "sse4",
328 "sse4_1",
329 "sse4_2",
330 "popcnt",
331 },
332 },
333 X86_64: {
Liz Kammere8303bd2022-02-16 09:02:48 -0500334 "" /*default */ : {
335 "ssse3",
336 "sse4",
337 "sse4_1",
338 "sse4_2",
339 "popcnt",
340 },
Colin Crossa6845402020-11-16 15:08:19 -0800341 "amberlake": {
342 "ssse3",
343 "sse4",
344 "sse4_1",
345 "sse4_2",
346 "avx",
347 "avx2",
348 "aes_ni",
349 "popcnt",
350 },
351 "broadwell": {
352 "ssse3",
353 "sse4",
354 "sse4_1",
355 "sse4_2",
356 "avx",
357 "avx2",
358 "aes_ni",
359 "popcnt",
360 },
Ryo Hashimotof68c18f2022-11-16 17:25:01 +0900361 "goldmont": {
362 "ssse3",
363 "sse4",
364 "sse4_1",
365 "sse4_2",
366 "aes_ni",
367 "popcnt",
368 },
369 "goldmont-plus": {
370 "ssse3",
371 "sse4",
372 "sse4_1",
373 "sse4_2",
374 "aes_ni",
375 "popcnt",
376 },
Satoshi Niwab6d818d2024-01-24 16:17:00 +0900377 "goldmont-without-sha-xsaves": {
Satoshi Niwac41f2112023-12-14 17:33:36 +0900378 "ssse3",
379 "sse4",
380 "sse4_1",
381 "sse4_2",
382 "aes_ni",
383 "popcnt",
384 },
Colin Crossa6845402020-11-16 15:08:19 -0800385 "haswell": {
386 "ssse3",
387 "sse4",
388 "sse4_1",
389 "sse4_2",
390 "aes_ni",
391 "avx",
392 "popcnt",
393 },
394 "icelake": {
395 "ssse3",
396 "sse4",
397 "sse4_1",
398 "sse4_2",
399 "avx",
400 "avx2",
401 "avx512",
402 "aes_ni",
403 "popcnt",
404 },
405 "ivybridge": {
406 "ssse3",
407 "sse4",
408 "sse4_1",
409 "sse4_2",
410 "aes_ni",
411 "avx",
412 "popcnt",
413 },
414 "kabylake": {
415 "ssse3",
416 "sse4",
417 "sse4_1",
418 "sse4_2",
419 "avx",
420 "avx2",
421 "aes_ni",
422 "popcnt",
423 },
424 "sandybridge": {
425 "ssse3",
426 "sse4",
427 "sse4_1",
428 "sse4_2",
429 "popcnt",
430 },
431 "silvermont": {
432 "ssse3",
433 "sse4",
434 "sse4_1",
435 "sse4_2",
436 "aes_ni",
437 "popcnt",
438 },
439 "skylake": {
440 "ssse3",
441 "sse4",
442 "sse4_1",
443 "sse4_2",
444 "avx",
445 "avx2",
446 "avx512",
447 "aes_ni",
448 "popcnt",
449 },
450 "stoneyridge": {
451 "ssse3",
452 "sse4",
453 "sse4_1",
454 "sse4_2",
455 "aes_ni",
456 "avx",
457 "avx2",
458 "popcnt",
459 },
460 "tigerlake": {
461 "ssse3",
462 "sse4",
463 "sse4_1",
464 "sse4_2",
465 "avx",
466 "avx2",
467 "avx512",
468 "aes_ni",
469 "popcnt",
470 },
Ryo Hashimotof68c18f2022-11-16 17:25:01 +0900471 "tremont": {
472 "ssse3",
473 "sse4",
474 "sse4_1",
475 "sse4_2",
476 "aes_ni",
477 "popcnt",
478 },
Colin Crossa6845402020-11-16 15:08:19 -0800479 "whiskeylake": {
480 "ssse3",
481 "sse4",
482 "sse4_1",
483 "sse4_2",
484 "avx",
485 "avx2",
486 "avx512",
487 "aes_ni",
488 "popcnt",
489 },
490 },
491}