• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// 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
17var archVariants = map[ArchType][]string{
18	Arm: {
19		"armv7-a",
20		"armv7-a-neon",
21		"armv8-a",
22		"armv8-2a",
23	},
24	Arm64: {
25		"armv8-a",
26		"armv8-a-branchprot",
27		"armv8-2a",
28		"armv8-2a-dotprod",
29		"armv9-a",
30	},
31	X86: {
32		"amberlake",
33		"atom",
34		"broadwell",
35		"goldmont",
36		"goldmont-plus",
37		"haswell",
38		"icelake",
39		"ivybridge",
40		"kabylake",
41		"sandybridge",
42		"silvermont",
43		"skylake",
44		"stoneyridge",
45		"tigerlake",
46		"tremont",
47		"whiskeylake",
48		"x86_64",
49	},
50	X86_64: {
51		"amberlake",
52		"broadwell",
53		"goldmont",
54		"goldmont-plus",
55		"haswell",
56		"icelake",
57		"ivybridge",
58		"kabylake",
59		"sandybridge",
60		"silvermont",
61		"skylake",
62		"stoneyridge",
63		"tigerlake",
64		"tremont",
65		"whiskeylake",
66	},
67}
68
69var cpuVariants = map[ArchType][]string{
70	Arm: {
71		"cortex-a7",
72		"cortex-a8",
73		"cortex-a9",
74		"cortex-a15",
75		"cortex-a32",
76		"cortex-a53",
77		"cortex-a53.a57",
78		"cortex-a55",
79		"cortex-a72",
80		"cortex-a73",
81		"cortex-a75",
82		"cortex-a76",
83		"krait",
84		"kryo",
85		"kryo385",
86		"exynos-m1",
87		"exynos-m2",
88	},
89	Arm64: {
90		"cortex-a53",
91		"cortex-a55",
92		"cortex-a72",
93		"cortex-a73",
94		"cortex-a75",
95		"cortex-a76",
96		"kryo",
97		"kryo385",
98		"exynos-m1",
99		"exynos-m2",
100	},
101	X86:    {},
102	X86_64: {},
103}
104
105var archFeatures = map[ArchType][]string{
106	Arm: {
107		"neon",
108	},
109	Arm64: {
110		"dotprod",
111	},
112	X86: {
113		"ssse3",
114		"sse4",
115		"sse4_1",
116		"sse4_2",
117		"aes_ni",
118		"avx",
119		"avx2",
120		"avx512",
121		"popcnt",
122		"movbe",
123	},
124	X86_64: {
125		"ssse3",
126		"sse4",
127		"sse4_1",
128		"sse4_2",
129		"aes_ni",
130		"avx",
131		"avx2",
132		"avx512",
133		"popcnt",
134	},
135}
136
137var androidArchFeatureMap = map[ArchType]map[string][]string{
138	Arm: {
139		"armv7-a-neon": {
140			"neon",
141		},
142		"armv8-a": {
143			"neon",
144		},
145		"armv8-2a": {
146			"neon",
147		},
148	},
149	Arm64: {
150		"armv8-2a-dotprod": {
151			"dotprod",
152		},
153		"armv9-a": {
154			"dotprod",
155		},
156	},
157	X86: {
158		"amberlake": {
159			"ssse3",
160			"sse4",
161			"sse4_1",
162			"sse4_2",
163			"avx",
164			"avx2",
165			"aes_ni",
166			"popcnt",
167		},
168		"atom": {
169			"ssse3",
170			"movbe",
171		},
172		"broadwell": {
173			"ssse3",
174			"sse4",
175			"sse4_1",
176			"sse4_2",
177			"avx",
178			"avx2",
179			"aes_ni",
180			"popcnt",
181		},
182		"goldmont": {
183			"ssse3",
184			"sse4",
185			"sse4_1",
186			"sse4_2",
187			"aes_ni",
188			"popcnt",
189			"movbe",
190		},
191		"goldmont-plus": {
192			"ssse3",
193			"sse4",
194			"sse4_1",
195			"sse4_2",
196			"aes_ni",
197			"popcnt",
198			"movbe",
199		},
200		"haswell": {
201			"ssse3",
202			"sse4",
203			"sse4_1",
204			"sse4_2",
205			"aes_ni",
206			"avx",
207			"popcnt",
208			"movbe",
209		},
210		"icelake": {
211			"ssse3",
212			"sse4",
213			"sse4_1",
214			"sse4_2",
215			"avx",
216			"avx2",
217			"avx512",
218			"aes_ni",
219			"popcnt",
220		},
221		"ivybridge": {
222			"ssse3",
223			"sse4",
224			"sse4_1",
225			"sse4_2",
226			"aes_ni",
227			"avx",
228			"popcnt",
229		},
230		"kabylake": {
231			"ssse3",
232			"sse4",
233			"sse4_1",
234			"sse4_2",
235			"avx",
236			"avx2",
237			"aes_ni",
238			"popcnt",
239		},
240		"sandybridge": {
241			"ssse3",
242			"sse4",
243			"sse4_1",
244			"sse4_2",
245			"popcnt",
246		},
247		"silvermont": {
248			"ssse3",
249			"sse4",
250			"sse4_1",
251			"sse4_2",
252			"aes_ni",
253			"popcnt",
254			"movbe",
255		},
256		"skylake": {
257			"ssse3",
258			"sse4",
259			"sse4_1",
260			"sse4_2",
261			"avx",
262			"avx2",
263			"avx512",
264			"aes_ni",
265			"popcnt",
266		},
267		"stoneyridge": {
268			"ssse3",
269			"sse4",
270			"sse4_1",
271			"sse4_2",
272			"aes_ni",
273			"avx",
274			"avx2",
275			"popcnt",
276			"movbe",
277		},
278		"tigerlake": {
279			"ssse3",
280			"sse4",
281			"sse4_1",
282			"sse4_2",
283			"avx",
284			"avx2",
285			"avx512",
286			"aes_ni",
287			"popcnt",
288		},
289		"tremont": {
290			"ssse3",
291			"sse4",
292			"sse4_1",
293			"sse4_2",
294			"aes_ni",
295			"popcnt",
296			"movbe",
297		},
298		"whiskeylake": {
299			"ssse3",
300			"sse4",
301			"sse4_1",
302			"sse4_2",
303			"avx",
304			"avx2",
305			"avx512",
306			"aes_ni",
307			"popcnt",
308		},
309		"x86_64": {
310			"ssse3",
311			"sse4",
312			"sse4_1",
313			"sse4_2",
314			"popcnt",
315		},
316	},
317	X86_64: {
318		"" /*default */ : {
319			"ssse3",
320			"sse4",
321			"sse4_1",
322			"sse4_2",
323			"popcnt",
324		},
325		"amberlake": {
326			"ssse3",
327			"sse4",
328			"sse4_1",
329			"sse4_2",
330			"avx",
331			"avx2",
332			"aes_ni",
333			"popcnt",
334		},
335		"broadwell": {
336			"ssse3",
337			"sse4",
338			"sse4_1",
339			"sse4_2",
340			"avx",
341			"avx2",
342			"aes_ni",
343			"popcnt",
344		},
345		"goldmont": {
346			"ssse3",
347			"sse4",
348			"sse4_1",
349			"sse4_2",
350			"aes_ni",
351			"popcnt",
352		},
353		"goldmont-plus": {
354			"ssse3",
355			"sse4",
356			"sse4_1",
357			"sse4_2",
358			"aes_ni",
359			"popcnt",
360		},
361		"haswell": {
362			"ssse3",
363			"sse4",
364			"sse4_1",
365			"sse4_2",
366			"aes_ni",
367			"avx",
368			"popcnt",
369		},
370		"icelake": {
371			"ssse3",
372			"sse4",
373			"sse4_1",
374			"sse4_2",
375			"avx",
376			"avx2",
377			"avx512",
378			"aes_ni",
379			"popcnt",
380		},
381		"ivybridge": {
382			"ssse3",
383			"sse4",
384			"sse4_1",
385			"sse4_2",
386			"aes_ni",
387			"avx",
388			"popcnt",
389		},
390		"kabylake": {
391			"ssse3",
392			"sse4",
393			"sse4_1",
394			"sse4_2",
395			"avx",
396			"avx2",
397			"aes_ni",
398			"popcnt",
399		},
400		"sandybridge": {
401			"ssse3",
402			"sse4",
403			"sse4_1",
404			"sse4_2",
405			"popcnt",
406		},
407		"silvermont": {
408			"ssse3",
409			"sse4",
410			"sse4_1",
411			"sse4_2",
412			"aes_ni",
413			"popcnt",
414		},
415		"skylake": {
416			"ssse3",
417			"sse4",
418			"sse4_1",
419			"sse4_2",
420			"avx",
421			"avx2",
422			"avx512",
423			"aes_ni",
424			"popcnt",
425		},
426		"stoneyridge": {
427			"ssse3",
428			"sse4",
429			"sse4_1",
430			"sse4_2",
431			"aes_ni",
432			"avx",
433			"avx2",
434			"popcnt",
435		},
436		"tigerlake": {
437			"ssse3",
438			"sse4",
439			"sse4_1",
440			"sse4_2",
441			"avx",
442			"avx2",
443			"avx512",
444			"aes_ni",
445			"popcnt",
446		},
447		"tremont": {
448			"ssse3",
449			"sse4",
450			"sse4_1",
451			"sse4_2",
452			"aes_ni",
453			"popcnt",
454		},
455		"whiskeylake": {
456			"ssse3",
457			"sse4",
458			"sse4_1",
459			"sse4_2",
460			"avx",
461			"avx2",
462			"avx512",
463			"aes_ni",
464			"popcnt",
465		},
466	},
467}
468