1 /* This file is automatically generated. DO NOT EDIT! */ 2 /* Generated from: NetBSD: mknative-gcc,v 1.117 2023/07/31 01:48:37 mrg Exp */ 3 /* Generated from: NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp */ 4 5 /* -*- buffer-read-only: t -*- 6 Generated automatically by parsecpu.awk from arm-cpus.in. 7 Do not edit. 8 9 Copyright (C) 2011-2022 Free Software Foundation, Inc. 10 11 This file is part of GCC. 12 13 GCC is free software; you can redistribute it and/or modify 14 it under the terms of the GNU General Public License as 15 published by the Free Software Foundation; either version 3, 16 or (at your option) any later version. 17 18 GCC is distributed in the hope that it will be useful, 19 but WITHOUT ANY WARRANTY; without even the implied warranty of 20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 GNU General Public License for more details. 22 23 You should have received a copy of the GNU General Public 24 License along with GCC; see the file COPYING3. If not see 25 <http://www.gnu.org/licenses/>. */ 26 27 enum isa_feature { 28 isa_nobit = 0, 29 isa_bit_cdecp1, 30 isa_bit_vfpv2, 31 isa_bit_adiv, 32 isa_bit_cdecp2, 33 isa_bit_vfpv3, 34 isa_bit_cdecp3, 35 isa_bit_vfpv4, 36 isa_bit_cdecp4, 37 isa_bit_cdecp5, 38 isa_bit_cdecp6, 39 isa_bit_cdecp7, 40 isa_bit_quirk_aes_1742098, 41 isa_bit_smallmul, 42 isa_bit_mve, 43 isa_bit_iwmmxt, 44 isa_bit_armv5te, 45 isa_bit_i8mm, 46 isa_bit_fp16fml, 47 isa_bit_xscale, 48 isa_bit_quirk_no_asmcpu, 49 isa_bit_bf16, 50 isa_bit_sb, 51 isa_bit_thumb, 52 isa_bit_quirk_cm3_ldrd, 53 isa_bit_be8, 54 isa_bit_armv5t, 55 isa_bit_dotprod, 56 isa_bit_lpae, 57 isa_bit_armv4, 58 isa_bit_armv8_1m_main, 59 isa_bit_quirk_armv6kz, 60 isa_bit_neon, 61 isa_bit_armv6, 62 isa_bit_crc32, 63 isa_bit_armv7, 64 isa_bit_armv7em, 65 isa_bit_cmse, 66 isa_bit_armv8, 67 isa_bit_fpv5, 68 isa_bit_armv9, 69 isa_bit_vfp_base, 70 isa_bit_quirk_vlldm, 71 isa_bit_tdiv, 72 isa_bit_quirk_no_volatile_ce, 73 isa_bit_fp_d32, 74 isa_bit_thumb2, 75 isa_bit_iwmmxt2, 76 isa_bit_notm, 77 isa_bit_fp16, 78 isa_bit_armv8_1, 79 isa_bit_fp16conv, 80 isa_bit_armv8_2, 81 isa_bit_armv6k, 82 isa_bit_armv8_3, 83 isa_bit_armv8_4, 84 isa_bit_mp, 85 isa_bit_armv8_5, 86 isa_bit_crypto, 87 isa_bit_armv8_6, 88 isa_bit_mve_float, 89 isa_bit_fp_dbl, 90 isa_bit_sec, 91 isa_bit_cdecp0, 92 isa_bit_predres, 93 isa_num_bits 94 }; 95 96 #define ISA_CRYPTO \ 97 isa_bit_crypto, \ 98 isa_bit_neon, \ 99 isa_bit_fp_dbl, \ 100 isa_bit_fp_d32 101 102 #define ISA_ARMv8_1a \ 103 isa_bit_crc32, \ 104 isa_bit_be8, \ 105 isa_bit_lpae, \ 106 isa_bit_notm, \ 107 isa_bit_thumb, \ 108 isa_bit_adiv, \ 109 isa_bit_armv8_1, \ 110 isa_bit_sec, \ 111 isa_bit_armv5t, \ 112 isa_bit_armv6k, \ 113 isa_bit_thumb2, \ 114 isa_bit_armv5te, \ 115 isa_bit_mp, \ 116 isa_bit_armv4, \ 117 isa_bit_armv6, \ 118 isa_bit_armv7, \ 119 isa_bit_armv8, \ 120 isa_bit_tdiv 121 122 #define ISA_ARMv5t \ 123 isa_bit_thumb, \ 124 isa_bit_armv5t, \ 125 isa_bit_armv4, \ 126 isa_bit_notm 127 128 #define ISA_ALL_FPU_EXTERNAL \ 129 isa_bit_fp16, \ 130 isa_bit_bf16 131 132 #define ISA_ALL_CRYPTO \ 133 isa_bit_crypto 134 135 #define ISA_DOTPROD \ 136 isa_bit_neon, \ 137 isa_bit_dotprod, \ 138 isa_bit_fp_dbl, \ 139 isa_bit_fp_d32 140 141 #define ISA_ARMv9a \ 142 isa_bit_armv6k, \ 143 isa_bit_thumb2, \ 144 isa_bit_be8, \ 145 isa_bit_adiv, \ 146 isa_bit_armv4, \ 147 isa_bit_armv6, \ 148 isa_bit_armv7, \ 149 isa_bit_armv8, \ 150 isa_bit_armv9, \ 151 isa_bit_armv8_1, \ 152 isa_bit_armv8_2, \ 153 isa_bit_armv8_3, \ 154 isa_bit_crc32, \ 155 isa_bit_armv8_4, \ 156 isa_bit_armv8_5, \ 157 isa_bit_sec, \ 158 isa_bit_predres, \ 159 isa_bit_mp, \ 160 isa_bit_tdiv, \ 161 isa_bit_armv5te, \ 162 isa_bit_thumb, \ 163 isa_bit_sb, \ 164 isa_bit_lpae, \ 165 isa_bit_notm, \ 166 isa_bit_armv5t 167 168 #define ISA_ARMv8_6a \ 169 isa_bit_notm, \ 170 isa_bit_sb, \ 171 isa_bit_armv8_1, \ 172 isa_bit_armv8_2, \ 173 isa_bit_armv8_3, \ 174 isa_bit_armv8_4, \ 175 isa_bit_armv8_5, \ 176 isa_bit_armv8_6, \ 177 isa_bit_armv4, \ 178 isa_bit_armv6, \ 179 isa_bit_armv7, \ 180 isa_bit_armv8, \ 181 isa_bit_be8, \ 182 isa_bit_predres, \ 183 isa_bit_adiv, \ 184 isa_bit_armv5te, \ 185 isa_bit_crc32, \ 186 isa_bit_armv5t, \ 187 isa_bit_armv6k, \ 188 isa_bit_thumb2, \ 189 isa_bit_sec, \ 190 isa_bit_thumb, \ 191 isa_bit_tdiv, \ 192 isa_bit_mp, \ 193 isa_bit_lpae 194 195 #define ISA_ARMv7m \ 196 isa_bit_thumb, \ 197 isa_bit_be8, \ 198 isa_bit_armv5te, \ 199 isa_bit_armv4, \ 200 isa_bit_armv6, \ 201 isa_bit_armv7, \ 202 isa_bit_thumb2, \ 203 isa_bit_armv5t, \ 204 isa_bit_tdiv 205 206 #define ISA_MVE_FP \ 207 isa_bit_mve, \ 208 isa_bit_fpv5, \ 209 isa_bit_mve_float, \ 210 isa_bit_fp16, \ 211 isa_bit_vfpv2, \ 212 isa_bit_vfpv3, \ 213 isa_bit_vfpv4, \ 214 isa_bit_fp16conv, \ 215 isa_bit_armv7em 216 217 #define ISA_ARMv8m_main \ 218 isa_bit_armv5te, \ 219 isa_bit_cmse, \ 220 isa_bit_armv5t, \ 221 isa_bit_thumb2, \ 222 isa_bit_thumb, \ 223 isa_bit_be8, \ 224 isa_bit_armv4, \ 225 isa_bit_armv6, \ 226 isa_bit_armv7, \ 227 isa_bit_armv8, \ 228 isa_bit_tdiv 229 230 #define ISA_ARMv8m_base \ 231 isa_bit_tdiv, \ 232 isa_bit_armv5te, \ 233 isa_bit_cmse, \ 234 isa_bit_thumb, \ 235 isa_bit_armv5t, \ 236 isa_bit_be8, \ 237 isa_bit_armv4, \ 238 isa_bit_armv6, \ 239 isa_bit_armv8 240 241 #define ISA_FPv5 \ 242 isa_bit_fp16conv, \ 243 isa_bit_fpv5, \ 244 isa_bit_vfpv2, \ 245 isa_bit_vfpv3, \ 246 isa_bit_vfpv4 247 248 #define ISA_ARMv7r \ 249 isa_bit_tdiv, \ 250 isa_bit_armv5te, \ 251 isa_bit_be8, \ 252 isa_bit_notm, \ 253 isa_bit_armv4, \ 254 isa_bit_armv6, \ 255 isa_bit_armv7, \ 256 isa_bit_thumb2, \ 257 isa_bit_thumb, \ 258 isa_bit_armv5t, \ 259 isa_bit_armv6k 260 261 #define ISA_ARMv8_3a \ 262 isa_bit_thumb, \ 263 isa_bit_tdiv, \ 264 isa_bit_lpae, \ 265 isa_bit_notm, \ 266 isa_bit_sec, \ 267 isa_bit_armv5t, \ 268 isa_bit_armv6k, \ 269 isa_bit_thumb2, \ 270 isa_bit_armv4, \ 271 isa_bit_armv6, \ 272 isa_bit_armv7, \ 273 isa_bit_armv8, \ 274 isa_bit_adiv, \ 275 isa_bit_mp, \ 276 isa_bit_armv8_1, \ 277 isa_bit_armv8_2, \ 278 isa_bit_armv8_3, \ 279 isa_bit_crc32, \ 280 isa_bit_be8, \ 281 isa_bit_armv5te 282 283 #define ISA_ALL_SIMD_EXTERNAL \ 284 isa_bit_fp16fml, \ 285 isa_bit_dotprod, \ 286 isa_bit_i8mm 287 288 #define ISA_VFPv2 \ 289 isa_bit_vfpv2 290 291 #define ISA_FP_DBL \ 292 isa_bit_fp_dbl 293 294 #define ISA_VFPv3 \ 295 isa_bit_vfpv2, \ 296 isa_bit_vfpv3 297 298 #define ISA_VFPv4 \ 299 isa_bit_fp16conv, \ 300 isa_bit_vfpv2, \ 301 isa_bit_vfpv3, \ 302 isa_bit_vfpv4 303 304 #define ISA_ARMv7ve \ 305 isa_bit_armv4, \ 306 isa_bit_armv6, \ 307 isa_bit_armv7, \ 308 isa_bit_tdiv, \ 309 isa_bit_mp, \ 310 isa_bit_lpae, \ 311 isa_bit_be8, \ 312 isa_bit_notm, \ 313 isa_bit_adiv, \ 314 isa_bit_thumb, \ 315 isa_bit_thumb2, \ 316 isa_bit_armv5te, \ 317 isa_bit_armv5t, \ 318 isa_bit_armv6k, \ 319 isa_bit_sec 320 321 #define ISA_ARMv4t \ 322 isa_bit_notm, \ 323 isa_bit_thumb, \ 324 isa_bit_armv4 325 326 #define ISA_ARMv6j \ 327 isa_bit_notm, \ 328 isa_bit_armv5te, \ 329 isa_bit_be8, \ 330 isa_bit_thumb, \ 331 isa_bit_armv4, \ 332 isa_bit_armv6, \ 333 isa_bit_armv5t 334 335 #define ISA_ALL_FP \ 336 isa_bit_fp_d32, \ 337 isa_bit_neon, \ 338 isa_bit_dotprod, \ 339 isa_bit_vfpv2, \ 340 isa_bit_vfpv3, \ 341 isa_bit_vfpv4, \ 342 isa_bit_fpv5, \ 343 isa_bit_fp16conv, \ 344 isa_bit_fp16fml, \ 345 isa_bit_crypto, \ 346 isa_bit_i8mm, \ 347 isa_bit_fp16, \ 348 isa_bit_fp_dbl, \ 349 isa_bit_bf16 350 351 #define ISA_ARMv6k \ 352 isa_bit_thumb, \ 353 isa_bit_armv5te, \ 354 isa_bit_armv4, \ 355 isa_bit_armv6, \ 356 isa_bit_notm, \ 357 isa_bit_armv5t, \ 358 isa_bit_be8, \ 359 isa_bit_armv6k 360 361 #define ISA_FP_D32 \ 362 isa_bit_fp_d32, \ 363 isa_bit_fp_dbl 364 365 #define ISA_ALL_QUIRKS \ 366 isa_bit_quirk_aes_1742098, \ 367 isa_bit_quirk_cm3_ldrd, \ 368 isa_bit_quirk_vlldm, \ 369 isa_bit_xscale, \ 370 isa_bit_quirk_no_asmcpu, \ 371 isa_bit_quirk_armv6kz, \ 372 isa_bit_quirk_no_volatile_ce 373 374 #define ISA_ARMv8_5a \ 375 isa_bit_predres, \ 376 isa_bit_armv5te, \ 377 isa_bit_sec, \ 378 isa_bit_tdiv, \ 379 isa_bit_armv4, \ 380 isa_bit_armv6, \ 381 isa_bit_armv7, \ 382 isa_bit_armv8, \ 383 isa_bit_armv5t, \ 384 isa_bit_mp, \ 385 isa_bit_armv6k, \ 386 isa_bit_thumb2, \ 387 isa_bit_lpae, \ 388 isa_bit_notm, \ 389 isa_bit_crc32, \ 390 isa_bit_sb, \ 391 isa_bit_be8, \ 392 isa_bit_adiv, \ 393 isa_bit_thumb, \ 394 isa_bit_armv8_1, \ 395 isa_bit_armv8_2, \ 396 isa_bit_armv8_3, \ 397 isa_bit_armv8_4, \ 398 isa_bit_armv8_5 399 400 #define ISA_ARMv8a \ 401 isa_bit_armv5t, \ 402 isa_bit_armv6k, \ 403 isa_bit_thumb2, \ 404 isa_bit_tdiv, \ 405 isa_bit_sec, \ 406 isa_bit_mp, \ 407 isa_bit_lpae, \ 408 isa_bit_notm, \ 409 isa_bit_armv4, \ 410 isa_bit_armv6, \ 411 isa_bit_armv7, \ 412 isa_bit_armv8, \ 413 isa_bit_adiv, \ 414 isa_bit_armv5te, \ 415 isa_bit_be8, \ 416 isa_bit_thumb 417 418 #define ISA_ARMv6m \ 419 isa_bit_armv5te, \ 420 isa_bit_thumb, \ 421 isa_bit_armv5t, \ 422 isa_bit_armv4, \ 423 isa_bit_armv6, \ 424 isa_bit_be8 425 426 #define ISA_ALL_FPU_INTERNAL \ 427 isa_bit_crypto, \ 428 isa_bit_neon, \ 429 isa_bit_fp_dbl, \ 430 isa_bit_fp_d32, \ 431 isa_bit_fp16conv, \ 432 isa_bit_fpv5, \ 433 isa_bit_vfpv2, \ 434 isa_bit_vfpv3, \ 435 isa_bit_vfpv4 436 437 #define ISA_IGNORE_FOR_MULTILIB \ 438 isa_bit_cdecp0, \ 439 isa_bit_cdecp1, \ 440 isa_bit_cdecp2, \ 441 isa_bit_cdecp3, \ 442 isa_bit_cdecp4, \ 443 isa_bit_cdecp5, \ 444 isa_bit_cdecp6, \ 445 isa_bit_cdecp7 446 447 #define ISA_ARMv5tej \ 448 isa_bit_armv5t, \ 449 isa_bit_armv4, \ 450 isa_bit_notm, \ 451 isa_bit_armv5te, \ 452 isa_bit_thumb 453 454 #define ISA_ALL_SIMD \ 455 isa_bit_i8mm, \ 456 isa_bit_fp_d32, \ 457 isa_bit_fp16fml, \ 458 isa_bit_neon, \ 459 isa_bit_dotprod, \ 460 isa_bit_crypto 461 462 #define ISA_MVE \ 463 isa_bit_mve, \ 464 isa_bit_armv7em 465 466 #define ISA_ARMv8_2a \ 467 isa_bit_mp, \ 468 isa_bit_thumb, \ 469 isa_bit_be8, \ 470 isa_bit_armv5t, \ 471 isa_bit_tdiv, \ 472 isa_bit_armv6k, \ 473 isa_bit_armv8_1, \ 474 isa_bit_armv8_2, \ 475 isa_bit_thumb2, \ 476 isa_bit_lpae, \ 477 isa_bit_notm, \ 478 isa_bit_armv4, \ 479 isa_bit_armv6, \ 480 isa_bit_armv7, \ 481 isa_bit_armv8, \ 482 isa_bit_armv5te, \ 483 isa_bit_sec, \ 484 isa_bit_crc32, \ 485 isa_bit_adiv 486 487 #define ISA_NEON \ 488 isa_bit_fp_dbl, \ 489 isa_bit_fp_d32, \ 490 isa_bit_neon 491 492 #define ISA_ARMv5te \ 493 isa_bit_thumb, \ 494 isa_bit_armv4, \ 495 isa_bit_notm, \ 496 isa_bit_armv5t, \ 497 isa_bit_armv5te 498 499 #define ISA_ARMv4 \ 500 isa_bit_armv4, \ 501 isa_bit_notm 502 503 #define ISA_ARMv8_1m_main \ 504 isa_bit_thumb2, \ 505 isa_bit_armv5te, \ 506 isa_bit_thumb, \ 507 isa_bit_tdiv, \ 508 isa_bit_cmse, \ 509 isa_bit_be8, \ 510 isa_bit_armv4, \ 511 isa_bit_armv8_1m_main, \ 512 isa_bit_armv6, \ 513 isa_bit_armv7, \ 514 isa_bit_armv8, \ 515 isa_bit_armv5t 516 517 #define ISA_ARMv6 \ 518 isa_bit_armv5t, \ 519 isa_bit_armv4, \ 520 isa_bit_armv6, \ 521 isa_bit_be8, \ 522 isa_bit_thumb, \ 523 isa_bit_armv5te, \ 524 isa_bit_notm 525 526 #define ISA_ARMv7 \ 527 isa_bit_thumb2, \ 528 isa_bit_be8, \ 529 isa_bit_thumb, \ 530 isa_bit_armv4, \ 531 isa_bit_armv6, \ 532 isa_bit_armv7, \ 533 isa_bit_armv5te, \ 534 isa_bit_armv5t 535 536 #define ISA_ARMv6zk \ 537 isa_bit_armv4, \ 538 isa_bit_armv6, \ 539 isa_bit_armv5te, \ 540 isa_bit_notm, \ 541 isa_bit_thumb, \ 542 isa_bit_armv5t, \ 543 isa_bit_armv6k, \ 544 isa_bit_be8 545 546 #define ISA_ARMv6kz \ 547 isa_bit_armv5t, \ 548 isa_bit_armv6k, \ 549 isa_bit_thumb, \ 550 isa_bit_notm, \ 551 isa_bit_quirk_armv6kz, \ 552 isa_bit_be8, \ 553 isa_bit_armv4, \ 554 isa_bit_armv6, \ 555 isa_bit_armv5te 556 557 #define ISA_ARMv6z \ 558 isa_bit_notm, \ 559 isa_bit_armv4, \ 560 isa_bit_armv6, \ 561 isa_bit_armv5te, \ 562 isa_bit_thumb, \ 563 isa_bit_be8, \ 564 isa_bit_armv5t 565 566 #define ISA_ARMv8r \ 567 isa_bit_adiv, \ 568 isa_bit_armv5te, \ 569 isa_bit_armv4, \ 570 isa_bit_armv6, \ 571 isa_bit_armv7, \ 572 isa_bit_armv8, \ 573 isa_bit_mp, \ 574 isa_bit_be8, \ 575 isa_bit_tdiv, \ 576 isa_bit_lpae, \ 577 isa_bit_notm, \ 578 isa_bit_thumb, \ 579 isa_bit_armv5t, \ 580 isa_bit_armv6k, \ 581 isa_bit_thumb2, \ 582 isa_bit_sec 583 584 #define ISA_FP_ARMv8 \ 585 isa_bit_fpv5, \ 586 isa_bit_vfpv2, \ 587 isa_bit_vfpv3, \ 588 isa_bit_vfpv4, \ 589 isa_bit_fp16conv, \ 590 isa_bit_fp_dbl, \ 591 isa_bit_fp_d32 592 593 #define ISA_ALL_SIMD_INTERNAL \ 594 isa_bit_neon, \ 595 isa_bit_crypto, \ 596 isa_bit_fp_d32 597 598 #define ISA_ARMv8_4a \ 599 isa_bit_thumb, \ 600 isa_bit_mp, \ 601 isa_bit_armv5te, \ 602 isa_bit_adiv, \ 603 isa_bit_be8, \ 604 isa_bit_armv4, \ 605 isa_bit_armv6, \ 606 isa_bit_armv7, \ 607 isa_bit_armv8, \ 608 isa_bit_armv5t, \ 609 isa_bit_armv6k, \ 610 isa_bit_thumb2, \ 611 isa_bit_crc32, \ 612 isa_bit_tdiv, \ 613 isa_bit_sec, \ 614 isa_bit_armv8_1, \ 615 isa_bit_armv8_2, \ 616 isa_bit_armv8_3, \ 617 isa_bit_armv8_4, \ 618 isa_bit_lpae, \ 619 isa_bit_notm 620 621 #define ISA_ARMv7a \ 622 isa_bit_armv5t, \ 623 isa_bit_thumb, \ 624 isa_bit_armv6k, \ 625 isa_bit_thumb2, \ 626 isa_bit_be8, \ 627 isa_bit_armv4, \ 628 isa_bit_armv6, \ 629 isa_bit_armv7, \ 630 isa_bit_armv5te, \ 631 isa_bit_notm 632 633 #define ISA_ARMv6t2 \ 634 isa_bit_notm, \ 635 isa_bit_armv4, \ 636 isa_bit_armv6, \ 637 isa_bit_armv5te, \ 638 isa_bit_armv5t, \ 639 isa_bit_thumb2, \ 640 isa_bit_be8, \ 641 isa_bit_thumb 642 643 #define ISA_ARMv7em \ 644 isa_bit_armv4, \ 645 isa_bit_armv6, \ 646 isa_bit_armv7, \ 647 isa_bit_be8, \ 648 isa_bit_armv5t, \ 649 isa_bit_armv7em, \ 650 isa_bit_thumb2, \ 651 isa_bit_armv5te, \ 652 isa_bit_thumb, \ 653 isa_bit_tdiv 654 655 struct fbit_implication { 656 /* Represents a feature implication, where: 657 ante IMPLIES cons 658 meaning that if ante is enabled then we should 659 also implicitly enable cons. */ 660 enum isa_feature ante; 661 enum isa_feature cons; 662 }; 663 664 static const struct fbit_implication all_implied_fbits[] = 665 { 666 { isa_bit_vfpv2, isa_bit_vfp_base }, 667 { isa_bit_vfpv3, isa_bit_vfp_base }, 668 { isa_bit_vfpv4, isa_bit_vfp_base }, 669 { isa_bit_fp16, isa_bit_vfp_base }, 670 { isa_bit_fp16conv, isa_bit_vfp_base }, 671 { isa_bit_mve, isa_bit_vfp_base }, 672 { isa_bit_fp_d32, isa_bit_vfp_base }, 673 { isa_bit_fp16fml, isa_bit_vfp_base }, 674 { isa_bit_i8mm, isa_bit_vfp_base }, 675 { isa_bit_dotprod, isa_bit_vfp_base }, 676 { isa_bit_crypto, isa_bit_vfp_base }, 677 { isa_bit_bf16, isa_bit_vfp_base }, 678 { isa_bit_fp_dbl, isa_bit_vfp_base }, 679 { isa_bit_armv7em, isa_bit_vfp_base }, 680 { isa_bit_neon, isa_bit_vfp_base }, 681 { isa_bit_mve_float, isa_bit_vfp_base }, 682 { isa_bit_fpv5, isa_bit_vfp_base }, 683 { isa_nobit, isa_nobit } 684 }; 685 686