arch_list.go 6.0 KB

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