| // Copyright 2020 Google Inc. All rights reserved. | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //     http://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 |  | 
 | package android | 
 |  | 
 | var archVariants = map[ArchType][]string{ | 
 | 	Arm: { | 
 | 		"armv7-a-neon", | 
 | 		"armv8-a", | 
 | 		"armv8-2a", | 
 | 	}, | 
 | 	Arm64: { | 
 | 		"armv8-a", | 
 | 		"armv8-a-branchprot", | 
 | 		"armv8-2a", | 
 | 		"armv8-2a-dotprod", | 
 | 		"armv9-a", | 
 | 	}, | 
 | 	X86: { | 
 | 		"amberlake", | 
 | 		"atom", | 
 | 		"broadwell", | 
 | 		"goldmont", | 
 | 		"goldmont-plus", | 
 | 		// Target arch is goldmont, but without supporting SHA and XSAVES. | 
 | 		// This ensures efficient execution on a broad range of Intel/AMD CPUs used | 
 | 		// in Chromebooks, including those lacking SHA or XSAVES support. | 
 | 		// (e.g. Kaby Lake, Gemini Lake, Alder Lake and AMD Zen series) | 
 | 		"goldmont-without-sha-xsaves", | 
 | 		"haswell", | 
 | 		"icelake", | 
 | 		"ivybridge", | 
 | 		"kabylake", | 
 | 		"sandybridge", | 
 | 		"silvermont", | 
 | 		"skylake", | 
 | 		"stoneyridge", | 
 | 		"tigerlake", | 
 | 		"tremont", | 
 | 		"whiskeylake", | 
 | 		"x86_64", | 
 | 	}, | 
 | 	X86_64: { | 
 | 		"amberlake", | 
 | 		"broadwell", | 
 | 		"goldmont", | 
 | 		"goldmont-plus", | 
 | 		"goldmont-without-sha-xsaves", | 
 | 		"haswell", | 
 | 		"icelake", | 
 | 		"ivybridge", | 
 | 		"kabylake", | 
 | 		"sandybridge", | 
 | 		"silvermont", | 
 | 		"skylake", | 
 | 		"stoneyridge", | 
 | 		"tigerlake", | 
 | 		"tremont", | 
 | 		"whiskeylake", | 
 | 	}, | 
 | } | 
 |  | 
 | var cpuVariants = map[ArchType][]string{ | 
 | 	Arm: { | 
 | 		"cortex-a7", | 
 | 		"cortex-a8", | 
 | 		"cortex-a9", | 
 | 		"cortex-a15", | 
 | 		"cortex-a32", | 
 | 		"cortex-a53", | 
 | 		"cortex-a53.a57", | 
 | 		"cortex-a55", | 
 | 		"cortex-a72", | 
 | 		"cortex-a73", | 
 | 		"cortex-a75", | 
 | 		"cortex-a76", | 
 | 		"krait", | 
 | 		"kryo", | 
 | 		"kryo385", | 
 | 		"exynos-m1", | 
 | 		"exynos-m2", | 
 | 	}, | 
 | 	Arm64: { | 
 | 		"cortex-a53", | 
 | 		"cortex-a55", | 
 | 		"cortex-a72", | 
 | 		"cortex-a73", | 
 | 		"cortex-a75", | 
 | 		"cortex-a76", | 
 | 		"kryo", | 
 | 		"kryo385", | 
 | 		"exynos-m1", | 
 | 		"exynos-m2", | 
 | 		"oryon", | 
 | 	}, | 
 | 	X86:    {}, | 
 | 	X86_64: {}, | 
 | } | 
 |  | 
 | var archFeatures = map[ArchType][]string{ | 
 | 	Arm: { | 
 | 		"neon", | 
 | 	}, | 
 | 	Arm64: { | 
 | 		"dotprod", | 
 | 	}, | 
 | 	X86: { | 
 | 		"ssse3", | 
 | 		"sse4", | 
 | 		"sse4_1", | 
 | 		"sse4_2", | 
 | 		"aes_ni", | 
 | 		"avx", | 
 | 		"avx2", | 
 | 		"avx512", | 
 | 		"popcnt", | 
 | 		"movbe", | 
 | 	}, | 
 | 	X86_64: { | 
 | 		"ssse3", | 
 | 		"sse4", | 
 | 		"sse4_1", | 
 | 		"sse4_2", | 
 | 		"aes_ni", | 
 | 		"avx", | 
 | 		"avx2", | 
 | 		"avx512", | 
 | 		"popcnt", | 
 | 	}, | 
 | } | 
 |  | 
 | var androidArchFeatureMap = map[ArchType]map[string][]string{ | 
 | 	Arm: { | 
 | 		"armv7-a-neon": { | 
 | 			"neon", | 
 | 		}, | 
 | 		"armv8-a": { | 
 | 			"neon", | 
 | 		}, | 
 | 		"armv8-2a": { | 
 | 			"neon", | 
 | 		}, | 
 | 	}, | 
 | 	Arm64: { | 
 | 		"armv8-2a-dotprod": { | 
 | 			"dotprod", | 
 | 		}, | 
 | 		"armv9-a": { | 
 | 			"dotprod", | 
 | 		}, | 
 | 	}, | 
 | 	X86: { | 
 | 		"amberlake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"atom": { | 
 | 			"ssse3", | 
 | 			"movbe", | 
 | 		}, | 
 | 		"broadwell": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"goldmont": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 			"movbe", | 
 | 		}, | 
 | 		"goldmont-plus": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 			"movbe", | 
 | 		}, | 
 | 		"goldmont-without-sha-xsaves": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 			"movbe", | 
 | 		}, | 
 | 		"haswell": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"avx", | 
 | 			"popcnt", | 
 | 			"movbe", | 
 | 		}, | 
 | 		"icelake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"avx512", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"ivybridge": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"avx", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"kabylake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"sandybridge": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"silvermont": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 			"movbe", | 
 | 		}, | 
 | 		"skylake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"avx512", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"stoneyridge": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"popcnt", | 
 | 			"movbe", | 
 | 		}, | 
 | 		"tigerlake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"avx512", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"tremont": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 			"movbe", | 
 | 		}, | 
 | 		"whiskeylake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"avx512", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"x86_64": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"popcnt", | 
 | 		}, | 
 | 	}, | 
 | 	X86_64: { | 
 | 		"" /*default */ : { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"amberlake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"broadwell": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"goldmont": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"goldmont-plus": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"goldmont-without-sha-xsaves": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"haswell": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"avx", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"icelake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"avx512", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"ivybridge": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"avx", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"kabylake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"sandybridge": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"silvermont": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"skylake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"avx512", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"stoneyridge": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"tigerlake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"avx512", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"tremont": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 		"whiskeylake": { | 
 | 			"ssse3", | 
 | 			"sse4", | 
 | 			"sse4_1", | 
 | 			"sse4_2", | 
 | 			"avx", | 
 | 			"avx2", | 
 | 			"avx512", | 
 | 			"aes_ni", | 
 | 			"popcnt", | 
 | 		}, | 
 | 	}, | 
 | } |