您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

640 行
12KB

  1. /* -*- buffer-read-only: t -*-
  2. Generated automatically by parsecpu.awk from arm-cpus.in.
  3. Do not edit.
  4. Copyright (C) 2011-2020 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_cdecp1,
  20. isa_bit_vfpv2,
  21. isa_bit_adiv,
  22. isa_bit_cdecp2,
  23. isa_bit_vfpv3,
  24. isa_bit_cdecp3,
  25. isa_bit_vfpv4,
  26. isa_bit_cdecp4,
  27. isa_bit_cdecp5,
  28. isa_bit_cdecp6,
  29. isa_bit_cdecp7,
  30. isa_bit_smallmul,
  31. isa_bit_mve,
  32. isa_bit_iwmmxt,
  33. isa_bit_armv5te,
  34. isa_bit_i8mm,
  35. isa_bit_fp16fml,
  36. isa_bit_xscale,
  37. isa_bit_quirk_no_asmcpu,
  38. isa_bit_bf16,
  39. isa_bit_sb,
  40. isa_bit_thumb,
  41. isa_bit_quirk_cm3_ldrd,
  42. isa_bit_be8,
  43. isa_bit_armv5t,
  44. isa_bit_dotprod,
  45. isa_bit_lpae,
  46. isa_bit_armv4,
  47. isa_bit_armv8_1m_main,
  48. isa_bit_quirk_armv6kz,
  49. isa_bit_neon,
  50. isa_bit_armv6,
  51. isa_bit_crc32,
  52. isa_bit_armv7,
  53. isa_bit_armv7em,
  54. isa_bit_cmse,
  55. isa_bit_armv8,
  56. isa_bit_fpv5,
  57. isa_bit_vfp_base,
  58. isa_bit_tdiv,
  59. isa_bit_quirk_no_volatile_ce,
  60. isa_bit_fp_d32,
  61. isa_bit_thumb2,
  62. isa_bit_iwmmxt2,
  63. isa_bit_notm,
  64. isa_bit_fp16,
  65. isa_bit_armv8_1,
  66. isa_bit_fp16conv,
  67. isa_bit_armv8_2,
  68. isa_bit_armv6k,
  69. isa_bit_armv8_3,
  70. isa_bit_armv8_4,
  71. isa_bit_mp,
  72. isa_bit_armv8_5,
  73. isa_bit_crypto,
  74. isa_bit_armv8_6,
  75. isa_bit_mve_float,
  76. isa_bit_fp_dbl,
  77. isa_bit_sec,
  78. isa_bit_cdecp0,
  79. isa_bit_predres,
  80. isa_num_bits
  81. };
  82. #define ISA_CRYPTO \
  83. isa_bit_crypto, \
  84. isa_bit_neon, \
  85. isa_bit_fp_dbl, \
  86. isa_bit_fp_d32
  87. #define ISA_ARMv8_1a \
  88. isa_bit_crc32, \
  89. isa_bit_be8, \
  90. isa_bit_lpae, \
  91. isa_bit_notm, \
  92. isa_bit_thumb, \
  93. isa_bit_adiv, \
  94. isa_bit_armv8_1, \
  95. isa_bit_sec, \
  96. isa_bit_armv5t, \
  97. isa_bit_armv6k, \
  98. isa_bit_thumb2, \
  99. isa_bit_armv5te, \
  100. isa_bit_mp, \
  101. isa_bit_armv4, \
  102. isa_bit_armv6, \
  103. isa_bit_armv7, \
  104. isa_bit_armv8, \
  105. isa_bit_tdiv
  106. #define ISA_ARMv5t \
  107. isa_bit_thumb, \
  108. isa_bit_armv5t, \
  109. isa_bit_armv4, \
  110. isa_bit_notm
  111. #define ISA_ALL_FPU_EXTERNAL \
  112. isa_bit_fp16, \
  113. isa_bit_bf16
  114. #define ISA_ALL_CRYPTO \
  115. isa_bit_crypto
  116. #define ISA_DOTPROD \
  117. isa_bit_neon, \
  118. isa_bit_dotprod, \
  119. isa_bit_fp_dbl, \
  120. isa_bit_fp_d32
  121. #define ISA_ARMv8_6a \
  122. isa_bit_notm, \
  123. isa_bit_sb, \
  124. isa_bit_armv8_1, \
  125. isa_bit_armv8_2, \
  126. isa_bit_armv8_3, \
  127. isa_bit_armv8_4, \
  128. isa_bit_armv8_5, \
  129. isa_bit_armv8_6, \
  130. isa_bit_armv4, \
  131. isa_bit_armv6, \
  132. isa_bit_armv7, \
  133. isa_bit_armv8, \
  134. isa_bit_be8, \
  135. isa_bit_predres, \
  136. isa_bit_adiv, \
  137. isa_bit_armv5te, \
  138. isa_bit_crc32, \
  139. isa_bit_armv5t, \
  140. isa_bit_armv6k, \
  141. isa_bit_thumb2, \
  142. isa_bit_sec, \
  143. isa_bit_thumb, \
  144. isa_bit_tdiv, \
  145. isa_bit_mp, \
  146. isa_bit_lpae
  147. #define ISA_ARMv7m \
  148. isa_bit_thumb, \
  149. isa_bit_be8, \
  150. isa_bit_armv5te, \
  151. isa_bit_armv4, \
  152. isa_bit_armv6, \
  153. isa_bit_armv7, \
  154. isa_bit_thumb2, \
  155. isa_bit_armv5t, \
  156. isa_bit_tdiv
  157. #define ISA_MVE_FP \
  158. isa_bit_mve, \
  159. isa_bit_fpv5, \
  160. isa_bit_mve_float, \
  161. isa_bit_fp16, \
  162. isa_bit_vfpv2, \
  163. isa_bit_vfpv3, \
  164. isa_bit_vfpv4, \
  165. isa_bit_fp16conv, \
  166. isa_bit_armv7em
  167. #define ISA_ARMv8m_main \
  168. isa_bit_armv5te, \
  169. isa_bit_cmse, \
  170. isa_bit_armv5t, \
  171. isa_bit_thumb2, \
  172. isa_bit_thumb, \
  173. isa_bit_be8, \
  174. isa_bit_armv4, \
  175. isa_bit_armv6, \
  176. isa_bit_armv7, \
  177. isa_bit_armv8, \
  178. isa_bit_tdiv
  179. #define ISA_ARMv8m_base \
  180. isa_bit_tdiv, \
  181. isa_bit_armv5te, \
  182. isa_bit_cmse, \
  183. isa_bit_thumb, \
  184. isa_bit_armv5t, \
  185. isa_bit_be8, \
  186. isa_bit_armv4, \
  187. isa_bit_armv6, \
  188. isa_bit_armv8
  189. #define ISA_FPv5 \
  190. isa_bit_fp16conv, \
  191. isa_bit_fpv5, \
  192. isa_bit_vfpv2, \
  193. isa_bit_vfpv3, \
  194. isa_bit_vfpv4
  195. #define ISA_ARMv7r \
  196. isa_bit_tdiv, \
  197. isa_bit_armv5te, \
  198. isa_bit_be8, \
  199. isa_bit_notm, \
  200. isa_bit_armv4, \
  201. isa_bit_armv6, \
  202. isa_bit_armv7, \
  203. isa_bit_thumb2, \
  204. isa_bit_thumb, \
  205. isa_bit_armv5t, \
  206. isa_bit_armv6k
  207. #define ISA_ARMv8_3a \
  208. isa_bit_thumb, \
  209. isa_bit_tdiv, \
  210. isa_bit_lpae, \
  211. isa_bit_notm, \
  212. isa_bit_sec, \
  213. isa_bit_armv5t, \
  214. isa_bit_armv6k, \
  215. isa_bit_thumb2, \
  216. isa_bit_armv4, \
  217. isa_bit_armv6, \
  218. isa_bit_armv7, \
  219. isa_bit_armv8, \
  220. isa_bit_adiv, \
  221. isa_bit_mp, \
  222. isa_bit_armv8_1, \
  223. isa_bit_armv8_2, \
  224. isa_bit_armv8_3, \
  225. isa_bit_crc32, \
  226. isa_bit_be8, \
  227. isa_bit_armv5te
  228. #define ISA_ALL_SIMD_EXTERNAL \
  229. isa_bit_fp16fml, \
  230. isa_bit_dotprod, \
  231. isa_bit_i8mm
  232. #define ISA_VFPv2 \
  233. isa_bit_vfpv2
  234. #define ISA_FP_DBL \
  235. isa_bit_fp_dbl
  236. #define ISA_VFPv3 \
  237. isa_bit_vfpv2, \
  238. isa_bit_vfpv3
  239. #define ISA_VFPv4 \
  240. isa_bit_fp16conv, \
  241. isa_bit_vfpv2, \
  242. isa_bit_vfpv3, \
  243. isa_bit_vfpv4
  244. #define ISA_ARMv7ve \
  245. isa_bit_armv4, \
  246. isa_bit_armv6, \
  247. isa_bit_armv7, \
  248. isa_bit_tdiv, \
  249. isa_bit_mp, \
  250. isa_bit_lpae, \
  251. isa_bit_be8, \
  252. isa_bit_notm, \
  253. isa_bit_adiv, \
  254. isa_bit_thumb, \
  255. isa_bit_thumb2, \
  256. isa_bit_armv5te, \
  257. isa_bit_armv5t, \
  258. isa_bit_armv6k, \
  259. isa_bit_sec
  260. #define ISA_ARMv4t \
  261. isa_bit_notm, \
  262. isa_bit_thumb, \
  263. isa_bit_armv4
  264. #define ISA_ARMv6j \
  265. isa_bit_notm, \
  266. isa_bit_armv5te, \
  267. isa_bit_be8, \
  268. isa_bit_thumb, \
  269. isa_bit_armv4, \
  270. isa_bit_armv6, \
  271. isa_bit_armv5t
  272. #define ISA_ALL_FP \
  273. isa_bit_fp_d32, \
  274. isa_bit_neon, \
  275. isa_bit_dotprod, \
  276. isa_bit_vfpv2, \
  277. isa_bit_vfpv3, \
  278. isa_bit_vfpv4, \
  279. isa_bit_fpv5, \
  280. isa_bit_fp16conv, \
  281. isa_bit_fp16fml, \
  282. isa_bit_crypto, \
  283. isa_bit_i8mm, \
  284. isa_bit_fp16, \
  285. isa_bit_fp_dbl, \
  286. isa_bit_bf16
  287. #define ISA_ARMv6k \
  288. isa_bit_thumb, \
  289. isa_bit_armv5te, \
  290. isa_bit_armv4, \
  291. isa_bit_armv6, \
  292. isa_bit_notm, \
  293. isa_bit_armv5t, \
  294. isa_bit_be8, \
  295. isa_bit_armv6k
  296. #define ISA_FP_D32 \
  297. isa_bit_fp_d32, \
  298. isa_bit_fp_dbl
  299. #define ISA_ALL_QUIRKS \
  300. isa_bit_quirk_cm3_ldrd, \
  301. isa_bit_xscale, \
  302. isa_bit_quirk_no_asmcpu, \
  303. isa_bit_quirk_armv6kz, \
  304. isa_bit_quirk_no_volatile_ce
  305. #define ISA_ARMv8_5a \
  306. isa_bit_predres, \
  307. isa_bit_armv5te, \
  308. isa_bit_sec, \
  309. isa_bit_tdiv, \
  310. isa_bit_armv4, \
  311. isa_bit_armv6, \
  312. isa_bit_armv7, \
  313. isa_bit_armv8, \
  314. isa_bit_armv5t, \
  315. isa_bit_mp, \
  316. isa_bit_armv6k, \
  317. isa_bit_thumb2, \
  318. isa_bit_lpae, \
  319. isa_bit_notm, \
  320. isa_bit_crc32, \
  321. isa_bit_sb, \
  322. isa_bit_be8, \
  323. isa_bit_adiv, \
  324. isa_bit_thumb, \
  325. isa_bit_armv8_1, \
  326. isa_bit_armv8_2, \
  327. isa_bit_armv8_3, \
  328. isa_bit_armv8_4, \
  329. isa_bit_armv8_5
  330. #define ISA_ARMv8a \
  331. isa_bit_armv5t, \
  332. isa_bit_armv6k, \
  333. isa_bit_thumb2, \
  334. isa_bit_tdiv, \
  335. isa_bit_sec, \
  336. isa_bit_mp, \
  337. isa_bit_lpae, \
  338. isa_bit_notm, \
  339. isa_bit_armv4, \
  340. isa_bit_armv6, \
  341. isa_bit_armv7, \
  342. isa_bit_armv8, \
  343. isa_bit_adiv, \
  344. isa_bit_armv5te, \
  345. isa_bit_be8, \
  346. isa_bit_thumb
  347. #define ISA_ARMv6m \
  348. isa_bit_armv5te, \
  349. isa_bit_thumb, \
  350. isa_bit_armv5t, \
  351. isa_bit_armv4, \
  352. isa_bit_armv6, \
  353. isa_bit_be8
  354. #define ISA_ALL_FPU_INTERNAL \
  355. isa_bit_crypto, \
  356. isa_bit_neon, \
  357. isa_bit_fp_dbl, \
  358. isa_bit_fp_d32, \
  359. isa_bit_fp16conv, \
  360. isa_bit_fpv5, \
  361. isa_bit_vfpv2, \
  362. isa_bit_vfpv3, \
  363. isa_bit_vfpv4
  364. #define ISA_ARMv5tej \
  365. isa_bit_armv5t, \
  366. isa_bit_armv4, \
  367. isa_bit_notm, \
  368. isa_bit_armv5te, \
  369. isa_bit_thumb
  370. #define ISA_ALL_SIMD \
  371. isa_bit_i8mm, \
  372. isa_bit_fp_d32, \
  373. isa_bit_fp16fml, \
  374. isa_bit_neon, \
  375. isa_bit_dotprod, \
  376. isa_bit_crypto
  377. #define ISA_MVE \
  378. isa_bit_mve, \
  379. isa_bit_armv7em
  380. #define ISA_ARMv8_2a \
  381. isa_bit_mp, \
  382. isa_bit_thumb, \
  383. isa_bit_be8, \
  384. isa_bit_armv5t, \
  385. isa_bit_tdiv, \
  386. isa_bit_armv6k, \
  387. isa_bit_armv8_1, \
  388. isa_bit_armv8_2, \
  389. isa_bit_thumb2, \
  390. isa_bit_lpae, \
  391. isa_bit_notm, \
  392. isa_bit_armv4, \
  393. isa_bit_armv6, \
  394. isa_bit_armv7, \
  395. isa_bit_armv8, \
  396. isa_bit_armv5te, \
  397. isa_bit_sec, \
  398. isa_bit_crc32, \
  399. isa_bit_adiv
  400. #define ISA_NEON \
  401. isa_bit_fp_dbl, \
  402. isa_bit_fp_d32, \
  403. isa_bit_neon
  404. #define ISA_ARMv5te \
  405. isa_bit_thumb, \
  406. isa_bit_armv4, \
  407. isa_bit_notm, \
  408. isa_bit_armv5t, \
  409. isa_bit_armv5te
  410. #define ISA_ARMv4 \
  411. isa_bit_armv4, \
  412. isa_bit_notm
  413. #define ISA_ARMv8_1m_main \
  414. isa_bit_thumb2, \
  415. isa_bit_armv5te, \
  416. isa_bit_thumb, \
  417. isa_bit_tdiv, \
  418. isa_bit_cmse, \
  419. isa_bit_be8, \
  420. isa_bit_armv4, \
  421. isa_bit_armv8_1m_main, \
  422. isa_bit_armv6, \
  423. isa_bit_armv7, \
  424. isa_bit_armv8, \
  425. isa_bit_armv5t
  426. #define ISA_ARMv6 \
  427. isa_bit_armv5t, \
  428. isa_bit_armv4, \
  429. isa_bit_armv6, \
  430. isa_bit_be8, \
  431. isa_bit_thumb, \
  432. isa_bit_armv5te, \
  433. isa_bit_notm
  434. #define ISA_ARMv7 \
  435. isa_bit_thumb2, \
  436. isa_bit_be8, \
  437. isa_bit_thumb, \
  438. isa_bit_armv4, \
  439. isa_bit_armv6, \
  440. isa_bit_armv7, \
  441. isa_bit_armv5te, \
  442. isa_bit_armv5t
  443. #define ISA_ARMv6zk \
  444. isa_bit_armv4, \
  445. isa_bit_armv6, \
  446. isa_bit_armv5te, \
  447. isa_bit_notm, \
  448. isa_bit_thumb, \
  449. isa_bit_armv5t, \
  450. isa_bit_armv6k, \
  451. isa_bit_be8
  452. #define ISA_ARMv6kz \
  453. isa_bit_armv5t, \
  454. isa_bit_armv6k, \
  455. isa_bit_thumb, \
  456. isa_bit_notm, \
  457. isa_bit_quirk_armv6kz, \
  458. isa_bit_be8, \
  459. isa_bit_armv4, \
  460. isa_bit_armv6, \
  461. isa_bit_armv5te
  462. #define ISA_ARMv6z \
  463. isa_bit_notm, \
  464. isa_bit_armv4, \
  465. isa_bit_armv6, \
  466. isa_bit_armv5te, \
  467. isa_bit_thumb, \
  468. isa_bit_be8, \
  469. isa_bit_armv5t
  470. #define ISA_ARMv8r \
  471. isa_bit_adiv, \
  472. isa_bit_armv5te, \
  473. isa_bit_armv4, \
  474. isa_bit_armv6, \
  475. isa_bit_armv7, \
  476. isa_bit_armv8, \
  477. isa_bit_mp, \
  478. isa_bit_be8, \
  479. isa_bit_tdiv, \
  480. isa_bit_lpae, \
  481. isa_bit_notm, \
  482. isa_bit_thumb, \
  483. isa_bit_armv5t, \
  484. isa_bit_armv6k, \
  485. isa_bit_thumb2, \
  486. isa_bit_sec
  487. #define ISA_FP_ARMv8 \
  488. isa_bit_fpv5, \
  489. isa_bit_vfpv2, \
  490. isa_bit_vfpv3, \
  491. isa_bit_vfpv4, \
  492. isa_bit_fp16conv, \
  493. isa_bit_fp_dbl, \
  494. isa_bit_fp_d32
  495. #define ISA_ALL_SIMD_INTERNAL \
  496. isa_bit_neon, \
  497. isa_bit_crypto, \
  498. isa_bit_fp_d32
  499. #define ISA_ARMv8_4a \
  500. isa_bit_thumb, \
  501. isa_bit_mp, \
  502. isa_bit_armv5te, \
  503. isa_bit_adiv, \
  504. isa_bit_be8, \
  505. isa_bit_armv4, \
  506. isa_bit_armv6, \
  507. isa_bit_armv7, \
  508. isa_bit_armv8, \
  509. isa_bit_armv5t, \
  510. isa_bit_armv6k, \
  511. isa_bit_thumb2, \
  512. isa_bit_crc32, \
  513. isa_bit_tdiv, \
  514. isa_bit_sec, \
  515. isa_bit_armv8_1, \
  516. isa_bit_armv8_2, \
  517. isa_bit_armv8_3, \
  518. isa_bit_armv8_4, \
  519. isa_bit_lpae, \
  520. isa_bit_notm
  521. #define ISA_ARMv7a \
  522. isa_bit_armv5t, \
  523. isa_bit_thumb, \
  524. isa_bit_armv6k, \
  525. isa_bit_thumb2, \
  526. isa_bit_be8, \
  527. isa_bit_armv4, \
  528. isa_bit_armv6, \
  529. isa_bit_armv7, \
  530. isa_bit_armv5te, \
  531. isa_bit_notm
  532. #define ISA_ARMv6t2 \
  533. isa_bit_notm, \
  534. isa_bit_armv4, \
  535. isa_bit_armv6, \
  536. isa_bit_armv5te, \
  537. isa_bit_armv5t, \
  538. isa_bit_thumb2, \
  539. isa_bit_be8, \
  540. isa_bit_thumb
  541. #define ISA_ARMv7em \
  542. isa_bit_armv4, \
  543. isa_bit_armv6, \
  544. isa_bit_armv7, \
  545. isa_bit_be8, \
  546. isa_bit_armv5t, \
  547. isa_bit_armv7em, \
  548. isa_bit_thumb2, \
  549. isa_bit_armv5te, \
  550. isa_bit_thumb, \
  551. isa_bit_tdiv
  552. struct fbit_implication {
  553. /* Represents a feature implication, where:
  554. ante IMPLIES cons
  555. meaning that if ante is enabled then we should
  556. also implicitly enable cons. */
  557. enum isa_feature ante;
  558. enum isa_feature cons;
  559. };
  560. static const struct fbit_implication all_implied_fbits[] =
  561. {
  562. { isa_bit_vfpv2, isa_bit_vfp_base },
  563. { isa_bit_vfpv3, isa_bit_vfp_base },
  564. { isa_bit_vfpv4, isa_bit_vfp_base },
  565. { isa_bit_fp16, isa_bit_vfp_base },
  566. { isa_bit_fp16conv, isa_bit_vfp_base },
  567. { isa_bit_mve, isa_bit_vfp_base },
  568. { isa_bit_fp_d32, isa_bit_vfp_base },
  569. { isa_bit_fp16fml, isa_bit_vfp_base },
  570. { isa_bit_i8mm, isa_bit_vfp_base },
  571. { isa_bit_dotprod, isa_bit_vfp_base },
  572. { isa_bit_crypto, isa_bit_vfp_base },
  573. { isa_bit_bf16, isa_bit_vfp_base },
  574. { isa_bit_fp_dbl, isa_bit_vfp_base },
  575. { isa_bit_armv7em, isa_bit_vfp_base },
  576. { isa_bit_neon, isa_bit_vfp_base },
  577. { isa_bit_mve_float, isa_bit_vfp_base },
  578. { isa_bit_fpv5, isa_bit_vfp_base },
  579. { isa_nobit, isa_nobit }
  580. };