arm-isa.h 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521
  1. /* -*- buffer-read-only: t -*-
  2. Generated automatically by parsecpu.awk from arm-cpus.in.
  3. Do not edit.
  4. Copyright (C) 2011-2019 Free Software Foundation, Inc.
  5. This file is part of GCC.
  6. GCC is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as
  8. published by the Free Software Foundation; either version 3,
  9. or (at your option) any later version.
  10. GCC is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. GNU General Public License for more details.
  14. You should have received a copy of the GNU General Public
  15. License along with GCC; see the file COPYING3. If not see
  16. <http://www.gnu.org/licenses/>. */
  17. enum isa_feature {
  18. isa_nobit = 0,
  19. isa_bit_fp16fml,
  20. isa_bit_cmse,
  21. isa_bit_quirk_armv6kz,
  22. isa_bit_dotprod,
  23. isa_bit_crc32,
  24. isa_bit_xscale,
  25. isa_bit_vfpv2,
  26. isa_bit_vfpv3,
  27. isa_bit_vfpv4,
  28. isa_bit_lpae,
  29. isa_bit_armv7em,
  30. isa_bit_fp16,
  31. isa_bit_adiv,
  32. isa_bit_fp_d32,
  33. isa_bit_be8,
  34. isa_bit_fp16conv,
  35. isa_bit_thumb2,
  36. isa_bit_crypto,
  37. isa_bit_mp,
  38. isa_bit_sec,
  39. isa_bit_sb,
  40. isa_bit_predres,
  41. isa_bit_armv4,
  42. isa_bit_quirk_cm3_ldrd,
  43. isa_bit_smallmul,
  44. isa_bit_armv5t,
  45. isa_bit_armv6,
  46. isa_bit_thumb,
  47. isa_bit_armv7,
  48. isa_bit_armv8,
  49. isa_bit_fp_dbl,
  50. isa_bit_armv5te,
  51. isa_bit_fpv5,
  52. isa_bit_iwmmxt2,
  53. isa_bit_notm,
  54. isa_bit_iwmmxt,
  55. isa_bit_armv8_1,
  56. isa_bit_armv8_2,
  57. isa_bit_armv8_3,
  58. isa_bit_tdiv,
  59. isa_bit_armv8_4,
  60. isa_bit_armv8_5,
  61. isa_bit_neon,
  62. isa_bit_quirk_no_volatile_ce,
  63. isa_bit_armv6k,
  64. isa_num_bits
  65. };
  66. #define ISA_ARMv8r \
  67. isa_bit_notm, \
  68. isa_bit_armv5te, \
  69. isa_bit_tdiv, \
  70. isa_bit_thumb, \
  71. isa_bit_thumb2, \
  72. isa_bit_armv4, \
  73. isa_bit_armv6, \
  74. isa_bit_armv7, \
  75. isa_bit_armv8, \
  76. isa_bit_be8, \
  77. isa_bit_lpae, \
  78. isa_bit_sec, \
  79. isa_bit_armv5t, \
  80. isa_bit_adiv, \
  81. isa_bit_mp, \
  82. isa_bit_armv6k
  83. #define ISA_ARMv6z \
  84. isa_bit_armv5te, \
  85. isa_bit_notm, \
  86. isa_bit_armv5t, \
  87. isa_bit_be8, \
  88. isa_bit_armv4, \
  89. isa_bit_armv6, \
  90. isa_bit_thumb
  91. #define ISA_DOTPROD \
  92. isa_bit_dotprod, \
  93. isa_bit_neon, \
  94. isa_bit_fp_d32, \
  95. isa_bit_fp_dbl
  96. #define ISA_ALL_CRYPTO \
  97. isa_bit_crypto
  98. #define ISA_ALL_SIMD \
  99. isa_bit_dotprod, \
  100. isa_bit_fp16fml, \
  101. isa_bit_neon, \
  102. isa_bit_fp_d32, \
  103. isa_bit_crypto
  104. #define ISA_ALL_QUIRKS \
  105. isa_bit_quirk_armv6kz, \
  106. isa_bit_xscale, \
  107. isa_bit_quirk_no_volatile_ce, \
  108. isa_bit_quirk_cm3_ldrd
  109. #define ISA_CRYPTO \
  110. isa_bit_fp_dbl, \
  111. isa_bit_neon, \
  112. isa_bit_fp_d32, \
  113. isa_bit_crypto
  114. #define ISA_ARMv8m_base \
  115. isa_bit_armv5t, \
  116. isa_bit_tdiv, \
  117. isa_bit_armv4, \
  118. isa_bit_thumb, \
  119. isa_bit_armv6, \
  120. isa_bit_armv8, \
  121. isa_bit_cmse, \
  122. isa_bit_be8, \
  123. isa_bit_armv5te
  124. #define ISA_ARMv6zk \
  125. isa_bit_armv5te, \
  126. isa_bit_armv5t, \
  127. isa_bit_armv4, \
  128. isa_bit_thumb, \
  129. isa_bit_armv6, \
  130. isa_bit_be8, \
  131. isa_bit_armv6k, \
  132. isa_bit_notm
  133. #define ISA_VFPv2 \
  134. isa_bit_vfpv2
  135. #define ISA_VFPv3 \
  136. isa_bit_vfpv2, \
  137. isa_bit_vfpv3
  138. #define ISA_VFPv4 \
  139. isa_bit_vfpv2, \
  140. isa_bit_vfpv3, \
  141. isa_bit_vfpv4, \
  142. isa_bit_fp16conv
  143. #define ISA_FP_D32 \
  144. isa_bit_fp_d32, \
  145. isa_bit_fp_dbl
  146. #define ISA_ARMv7ve \
  147. isa_bit_sec, \
  148. isa_bit_thumb, \
  149. isa_bit_tdiv, \
  150. isa_bit_notm, \
  151. isa_bit_mp, \
  152. isa_bit_armv4, \
  153. isa_bit_armv6, \
  154. isa_bit_armv7, \
  155. isa_bit_armv5te, \
  156. isa_bit_thumb2, \
  157. isa_bit_armv5t, \
  158. isa_bit_lpae, \
  159. isa_bit_adiv, \
  160. isa_bit_be8, \
  161. isa_bit_armv6k
  162. #define ISA_ARMv7a \
  163. isa_bit_armv5te, \
  164. isa_bit_thumb2, \
  165. isa_bit_notm, \
  166. isa_bit_armv5t, \
  167. isa_bit_armv4, \
  168. isa_bit_armv6, \
  169. isa_bit_thumb, \
  170. isa_bit_armv7, \
  171. isa_bit_be8, \
  172. isa_bit_armv6k
  173. #define ISA_ALL_SIMD_INTERNAL \
  174. isa_bit_neon, \
  175. isa_bit_fp_d32, \
  176. isa_bit_crypto
  177. #define ISA_ARMv8_1a \
  178. isa_bit_armv8_1, \
  179. isa_bit_lpae, \
  180. isa_bit_crc32, \
  181. isa_bit_adiv, \
  182. isa_bit_thumb2, \
  183. isa_bit_armv5t, \
  184. isa_bit_be8, \
  185. isa_bit_armv4, \
  186. isa_bit_thumb, \
  187. isa_bit_armv6, \
  188. isa_bit_armv7, \
  189. isa_bit_mp, \
  190. isa_bit_armv8, \
  191. isa_bit_sec, \
  192. isa_bit_notm, \
  193. isa_bit_armv6k, \
  194. isa_bit_tdiv, \
  195. isa_bit_armv5te
  196. #define ISA_ARMv7em \
  197. isa_bit_armv5t, \
  198. isa_bit_armv7em, \
  199. isa_bit_be8, \
  200. isa_bit_tdiv, \
  201. isa_bit_armv4, \
  202. isa_bit_thumb, \
  203. isa_bit_armv6, \
  204. isa_bit_armv7, \
  205. isa_bit_armv5te, \
  206. isa_bit_thumb2
  207. #define ISA_FP_DBL \
  208. isa_bit_fp_dbl
  209. #define ISA_ARMv8_3a \
  210. isa_bit_sec, \
  211. isa_bit_crc32, \
  212. isa_bit_lpae, \
  213. isa_bit_adiv, \
  214. isa_bit_thumb2, \
  215. isa_bit_armv5t, \
  216. isa_bit_armv5te, \
  217. isa_bit_armv4, \
  218. isa_bit_thumb, \
  219. isa_bit_armv6, \
  220. isa_bit_armv7, \
  221. isa_bit_armv8, \
  222. isa_bit_armv8_1, \
  223. isa_bit_armv8_2, \
  224. isa_bit_armv8_3, \
  225. isa_bit_notm, \
  226. isa_bit_tdiv, \
  227. isa_bit_mp, \
  228. isa_bit_armv6k, \
  229. isa_bit_be8
  230. #define ISA_ARMv5t \
  231. isa_bit_armv4, \
  232. isa_bit_thumb, \
  233. isa_bit_notm, \
  234. isa_bit_armv5t
  235. #define ISA_ARMv7m \
  236. isa_bit_thumb2, \
  237. isa_bit_armv5t, \
  238. isa_bit_tdiv, \
  239. isa_bit_armv5te, \
  240. isa_bit_armv4, \
  241. isa_bit_armv6, \
  242. isa_bit_thumb, \
  243. isa_bit_be8, \
  244. isa_bit_armv7
  245. #define ISA_ARMv4 \
  246. isa_bit_notm, \
  247. isa_bit_armv4
  248. #define ISA_ARMv6kz \
  249. isa_bit_armv6k, \
  250. isa_bit_be8, \
  251. isa_bit_notm, \
  252. isa_bit_armv5t, \
  253. isa_bit_armv4, \
  254. isa_bit_thumb, \
  255. isa_bit_armv6, \
  256. isa_bit_quirk_armv6kz, \
  257. isa_bit_armv5te
  258. #define ISA_ARMv6 \
  259. isa_bit_notm, \
  260. isa_bit_be8, \
  261. isa_bit_armv5te, \
  262. isa_bit_armv5t, \
  263. isa_bit_thumb, \
  264. isa_bit_armv4, \
  265. isa_bit_armv6
  266. #define ISA_ALL_FP \
  267. isa_bit_fp16, \
  268. isa_bit_fp_dbl, \
  269. isa_bit_vfpv2, \
  270. isa_bit_vfpv3, \
  271. isa_bit_vfpv4, \
  272. isa_bit_fpv5, \
  273. isa_bit_fp16conv, \
  274. isa_bit_neon, \
  275. isa_bit_fp_d32, \
  276. isa_bit_crypto
  277. #define ISA_ARMv7 \
  278. isa_bit_be8, \
  279. isa_bit_armv4, \
  280. isa_bit_thumb, \
  281. isa_bit_armv6, \
  282. isa_bit_armv7, \
  283. isa_bit_armv5te, \
  284. isa_bit_thumb2, \
  285. isa_bit_armv5t
  286. #define ISA_ARMv8_5a \
  287. isa_bit_sb, \
  288. isa_bit_adiv, \
  289. isa_bit_armv5te, \
  290. isa_bit_thumb2, \
  291. isa_bit_crc32, \
  292. isa_bit_armv8_1, \
  293. isa_bit_armv5t, \
  294. isa_bit_armv8_2, \
  295. isa_bit_armv8_3, \
  296. isa_bit_armv8_4, \
  297. isa_bit_armv8_5, \
  298. isa_bit_thumb, \
  299. isa_bit_armv4, \
  300. isa_bit_armv6, \
  301. isa_bit_be8, \
  302. isa_bit_armv7, \
  303. isa_bit_armv8, \
  304. isa_bit_sec, \
  305. isa_bit_notm, \
  306. isa_bit_tdiv, \
  307. isa_bit_armv6k, \
  308. isa_bit_mp, \
  309. isa_bit_predres, \
  310. isa_bit_lpae
  311. #define ISA_ARMv7r \
  312. isa_bit_armv6k, \
  313. isa_bit_armv4, \
  314. isa_bit_thumb, \
  315. isa_bit_armv6, \
  316. isa_bit_armv7, \
  317. isa_bit_thumb2, \
  318. isa_bit_armv5t, \
  319. isa_bit_notm, \
  320. isa_bit_be8, \
  321. isa_bit_tdiv, \
  322. isa_bit_armv5te
  323. #define ISA_ALL_FPU_INTERNAL \
  324. isa_bit_vfpv2, \
  325. isa_bit_vfpv3, \
  326. isa_bit_vfpv4, \
  327. isa_bit_neon, \
  328. isa_bit_fp_d32, \
  329. isa_bit_crypto, \
  330. isa_bit_fp_dbl, \
  331. isa_bit_fpv5, \
  332. isa_bit_fp16conv
  333. #define ISA_FPv5 \
  334. isa_bit_fpv5, \
  335. isa_bit_fp16conv, \
  336. isa_bit_vfpv2, \
  337. isa_bit_vfpv3, \
  338. isa_bit_vfpv4
  339. #define ISA_ARMv6t2 \
  340. isa_bit_notm, \
  341. isa_bit_thumb2, \
  342. isa_bit_armv5t, \
  343. isa_bit_be8, \
  344. isa_bit_armv5te, \
  345. isa_bit_armv4, \
  346. isa_bit_armv6, \
  347. isa_bit_thumb
  348. #define ISA_ARMv8m_main \
  349. isa_bit_armv8, \
  350. isa_bit_be8, \
  351. isa_bit_tdiv, \
  352. isa_bit_armv5te, \
  353. isa_bit_cmse, \
  354. isa_bit_thumb2, \
  355. isa_bit_armv5t, \
  356. isa_bit_armv4, \
  357. isa_bit_thumb, \
  358. isa_bit_armv6, \
  359. isa_bit_armv7
  360. #define ISA_NEON \
  361. isa_bit_neon, \
  362. isa_bit_fp_d32, \
  363. isa_bit_fp_dbl
  364. #define ISA_ARMv5te \
  365. isa_bit_notm, \
  366. isa_bit_thumb, \
  367. isa_bit_armv4, \
  368. isa_bit_armv5t, \
  369. isa_bit_armv5te
  370. #define ISA_FP_ARMv8 \
  371. isa_bit_vfpv2, \
  372. isa_bit_vfpv3, \
  373. isa_bit_vfpv4, \
  374. isa_bit_fpv5, \
  375. isa_bit_fp16conv, \
  376. isa_bit_fp_d32, \
  377. isa_bit_fp_dbl
  378. #define ISA_ARMv8a \
  379. isa_bit_lpae, \
  380. isa_bit_thumb2, \
  381. isa_bit_adiv, \
  382. isa_bit_be8, \
  383. isa_bit_armv5t, \
  384. isa_bit_sec, \
  385. isa_bit_armv4, \
  386. isa_bit_armv6, \
  387. isa_bit_thumb, \
  388. isa_bit_armv7, \
  389. isa_bit_armv8, \
  390. isa_bit_armv5te, \
  391. isa_bit_notm, \
  392. isa_bit_armv6k, \
  393. isa_bit_tdiv, \
  394. isa_bit_mp
  395. #define ISA_ARMv8_2a \
  396. isa_bit_crc32, \
  397. isa_bit_armv5te, \
  398. isa_bit_be8, \
  399. isa_bit_notm, \
  400. isa_bit_sec, \
  401. isa_bit_thumb2, \
  402. isa_bit_tdiv, \
  403. isa_bit_armv5t, \
  404. isa_bit_armv8_1, \
  405. isa_bit_armv8_2, \
  406. isa_bit_armv4, \
  407. isa_bit_armv6, \
  408. isa_bit_thumb, \
  409. isa_bit_armv7, \
  410. isa_bit_armv8, \
  411. isa_bit_mp, \
  412. isa_bit_lpae, \
  413. isa_bit_adiv, \
  414. isa_bit_armv6k
  415. #define ISA_ARMv6j \
  416. isa_bit_armv5t, \
  417. isa_bit_armv4, \
  418. isa_bit_armv6, \
  419. isa_bit_thumb, \
  420. isa_bit_armv5te, \
  421. isa_bit_be8, \
  422. isa_bit_notm
  423. #define ISA_ARMv6k \
  424. isa_bit_armv4, \
  425. isa_bit_armv6, \
  426. isa_bit_armv5t, \
  427. isa_bit_armv5te, \
  428. isa_bit_notm, \
  429. isa_bit_armv6k, \
  430. isa_bit_be8, \
  431. isa_bit_thumb
  432. #define ISA_ARMv4t \
  433. isa_bit_armv4, \
  434. isa_bit_thumb, \
  435. isa_bit_notm
  436. #define ISA_ARMv6m \
  437. isa_bit_be8, \
  438. isa_bit_armv5t, \
  439. isa_bit_armv5te, \
  440. isa_bit_armv4, \
  441. isa_bit_armv6, \
  442. isa_bit_thumb
  443. #define ISA_ARMv5tej \
  444. isa_bit_notm, \
  445. isa_bit_armv5te, \
  446. isa_bit_armv5t, \
  447. isa_bit_armv4, \
  448. isa_bit_thumb
  449. #define ISA_ARMv8_4a \
  450. isa_bit_armv8_1, \
  451. isa_bit_armv8_2, \
  452. isa_bit_armv8_3, \
  453. isa_bit_armv8_4, \
  454. isa_bit_thumb2, \
  455. isa_bit_tdiv, \
  456. isa_bit_crc32, \
  457. isa_bit_notm, \
  458. isa_bit_armv5t, \
  459. isa_bit_armv4, \
  460. isa_bit_armv6, \
  461. isa_bit_thumb, \
  462. isa_bit_armv7, \
  463. isa_bit_armv8, \
  464. isa_bit_lpae, \
  465. isa_bit_adiv, \
  466. isa_bit_be8, \
  467. isa_bit_mp, \
  468. isa_bit_armv6k, \
  469. isa_bit_armv5te, \
  470. isa_bit_sec