1 /* This file is automatically generated. DO NOT EDIT! */ 2 /* Generated from: NetBSD: mknative-gcc,v 1.108 2020/09/05 10:58:08 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-2019 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 static const cpu_alias cpu_aliastab_strongarm[] = { 28 { "strongarm110", true}, 29 { "strongarm1100", false}, 30 { "strongarm1110", false}, 31 { NULL, false} 32 }; 33 34 static const cpu_alias cpu_aliastab_arm7tdmi[] = { 35 { "arm7tdmi-s", true}, 36 { NULL, false} 37 }; 38 39 static const cpu_alias cpu_aliastab_arm710t[] = { 40 { "arm720t", true}, 41 { "arm740t", true}, 42 { NULL, false} 43 }; 44 45 static const cpu_alias cpu_aliastab_arm920t[] = { 46 { "arm920", true}, 47 { "arm922t", true}, 48 { "arm940t", true}, 49 { "ep9312", true}, 50 { NULL, false} 51 }; 52 53 static const cpu_alias cpu_aliastab_arm10tdmi[] = { 54 { "arm1020t", true}, 55 { NULL, false} 56 }; 57 58 static const cpu_arch_extension cpu_opttab_arm9e[] = { 59 { 60 "nofp", true, false, 61 { 62 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 63 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 64 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 65 } 66 }, 67 { NULL, false, false, {isa_nobit}} 68 }; 69 70 static const cpu_alias cpu_aliastab_arm9e[] = { 71 { "arm946e-s", true}, 72 { "arm966e-s", true}, 73 { "arm968e-s", true}, 74 { NULL, false} 75 }; 76 77 static const cpu_arch_extension cpu_opttab_arm10e[] = { 78 { 79 "nofp", true, false, 80 { 81 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 82 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 83 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 84 } 85 }, 86 { NULL, false, false, {isa_nobit}} 87 }; 88 89 static const cpu_alias cpu_aliastab_arm10e[] = { 90 { "arm1020e", true}, 91 { "arm1022e", true}, 92 { NULL, false} 93 }; 94 95 static const cpu_arch_extension cpu_opttab_arm926ejs[] = { 96 { 97 "nofp", true, false, 98 { 99 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 100 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 101 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 102 } 103 }, 104 { NULL, false, false, {isa_nobit}} 105 }; 106 107 static const cpu_arch_extension cpu_opttab_arm1026ejs[] = { 108 { 109 "nofp", true, false, 110 { 111 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 112 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 113 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 114 } 115 }, 116 { NULL, false, false, {isa_nobit}} 117 }; 118 119 static const cpu_arch_extension cpu_opttab_genericv7a[] = { 120 { 121 "mp", false, false, 122 { 123 isa_bit_mp, isa_nobit 124 } 125 }, 126 { 127 "sec", false, false, 128 { 129 isa_bit_sec, isa_nobit 130 } 131 }, 132 { 133 "vfpv3-d16", false, false, 134 { 135 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit 136 } 137 }, 138 { 139 "vfpv3", false, false, 140 { 141 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp_dbl, 142 isa_nobit 143 } 144 }, 145 { 146 "vfpv3-d16-fp16", false, false, 147 { 148 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_bit_fp_dbl, 149 isa_nobit 150 } 151 }, 152 { 153 "vfpv3-fp16", false, false, 154 { 155 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp16conv, 156 isa_bit_fp_dbl, isa_nobit 157 } 158 }, 159 { 160 "vfpv4-d16", false, false, 161 { 162 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv, 163 isa_bit_fp_dbl, isa_nobit 164 } 165 }, 166 { 167 "vfpv4", false, false, 168 { 169 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp_d32, 170 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 171 } 172 }, 173 { 174 "simd", false, false, 175 { 176 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 177 isa_bit_fp_dbl, isa_nobit 178 } 179 }, 180 { 181 "neon-fp16", false, false, 182 { 183 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 184 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 185 } 186 }, 187 { 188 "neon-vfpv4", false, false, 189 { 190 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 191 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 192 } 193 }, 194 { 195 "nosimd", true, false, 196 { 197 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32, 198 isa_bit_crypto, isa_nobit 199 } 200 }, 201 { 202 "nofp", true, false, 203 { 204 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 205 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 206 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 207 } 208 }, 209 { 210 "neon", false, true, 211 { 212 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 213 isa_bit_fp_dbl, isa_nobit 214 } 215 }, 216 { 217 "neon-vfpv3", false, true, 218 { 219 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 220 isa_bit_fp_dbl, isa_nobit 221 } 222 }, 223 { NULL, false, false, {isa_nobit}} 224 }; 225 226 static const cpu_arch_extension cpu_opttab_cortexa5[] = { 227 { 228 "nosimd", true, false, 229 { 230 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32, 231 isa_bit_crypto, isa_nobit 232 } 233 }, 234 { 235 "nofp", true, false, 236 { 237 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 238 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 239 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 240 } 241 }, 242 { NULL, false, false, {isa_nobit}} 243 }; 244 245 static const cpu_arch_extension cpu_opttab_cortexa7[] = { 246 { 247 "nosimd", true, false, 248 { 249 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32, 250 isa_bit_crypto, isa_nobit 251 } 252 }, 253 { 254 "nofp", true, false, 255 { 256 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 257 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 258 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 259 } 260 }, 261 { NULL, false, false, {isa_nobit}} 262 }; 263 264 static const cpu_arch_extension cpu_opttab_cortexa8[] = { 265 { 266 "nofp", true, false, 267 { 268 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 269 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 270 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 271 } 272 }, 273 { NULL, false, false, {isa_nobit}} 274 }; 275 276 static const cpu_arch_extension cpu_opttab_cortexa9[] = { 277 { 278 "nosimd", true, false, 279 { 280 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32, 281 isa_bit_crypto, isa_nobit 282 } 283 }, 284 { 285 "nofp", true, false, 286 { 287 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 288 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 289 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 290 } 291 }, 292 { NULL, false, false, {isa_nobit}} 293 }; 294 295 static const cpu_arch_extension cpu_opttab_cortexa12[] = { 296 { 297 "nofp", true, false, 298 { 299 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 300 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 301 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 302 } 303 }, 304 { NULL, false, false, {isa_nobit}} 305 }; 306 307 static const cpu_arch_extension cpu_opttab_cortexa15[] = { 308 { 309 "nofp", true, false, 310 { 311 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 312 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 313 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 314 } 315 }, 316 { NULL, false, false, {isa_nobit}} 317 }; 318 319 static const cpu_arch_extension cpu_opttab_cortexa17[] = { 320 { 321 "nofp", true, false, 322 { 323 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 324 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 325 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 326 } 327 }, 328 { NULL, false, false, {isa_nobit}} 329 }; 330 331 static const cpu_arch_extension cpu_opttab_cortexr5[] = { 332 { 333 "nofp.dp", true, false, 334 { 335 isa_bit_fp_dbl, isa_nobit 336 } 337 }, 338 { 339 "nofp", true, false, 340 { 341 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 342 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 343 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 344 } 345 }, 346 { NULL, false, false, {isa_nobit}} 347 }; 348 349 static const cpu_arch_extension cpu_opttab_cortexr7[] = { 350 { 351 "nofp.dp", true, false, 352 { 353 isa_bit_fp_dbl, isa_nobit 354 } 355 }, 356 { 357 "nofp", true, false, 358 { 359 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 360 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 361 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 362 } 363 }, 364 { NULL, false, false, {isa_nobit}} 365 }; 366 367 static const cpu_arch_extension cpu_opttab_cortexr8[] = { 368 { 369 "nofp.dp", true, false, 370 { 371 isa_bit_fp_dbl, isa_nobit 372 } 373 }, 374 { 375 "nofp", true, false, 376 { 377 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 378 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 379 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 380 } 381 }, 382 { NULL, false, false, {isa_nobit}} 383 }; 384 385 static const cpu_arch_extension cpu_opttab_cortexm7[] = { 386 { 387 "nofp.dp", true, false, 388 { 389 isa_bit_fp_dbl, isa_nobit 390 } 391 }, 392 { 393 "nofp", true, false, 394 { 395 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 396 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 397 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 398 } 399 }, 400 { NULL, false, false, {isa_nobit}} 401 }; 402 403 static const cpu_arch_extension cpu_opttab_cortexm4[] = { 404 { 405 "nofp", true, false, 406 { 407 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 408 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 409 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 410 } 411 }, 412 { NULL, false, false, {isa_nobit}} 413 }; 414 415 static const cpu_arch_extension cpu_opttab_cortexa15cortexa7[] = { 416 { 417 "nofp", true, false, 418 { 419 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 420 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 421 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 422 } 423 }, 424 { NULL, false, false, {isa_nobit}} 425 }; 426 427 static const cpu_arch_extension cpu_opttab_cortexa17cortexa7[] = { 428 { 429 "nofp", true, false, 430 { 431 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 432 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 433 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 434 } 435 }, 436 { NULL, false, false, {isa_nobit}} 437 }; 438 439 static const cpu_arch_extension cpu_opttab_cortexa32[] = { 440 { 441 "crypto", false, false, 442 { 443 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 444 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 445 isa_bit_fp_dbl, isa_nobit 446 } 447 }, 448 { 449 "nofp", true, false, 450 { 451 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 452 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 453 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 454 } 455 }, 456 { NULL, false, false, {isa_nobit}} 457 }; 458 459 static const cpu_arch_extension cpu_opttab_cortexa35[] = { 460 { 461 "crypto", false, false, 462 { 463 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 464 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 465 isa_bit_fp_dbl, isa_nobit 466 } 467 }, 468 { 469 "nofp", true, false, 470 { 471 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 472 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 473 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 474 } 475 }, 476 { NULL, false, false, {isa_nobit}} 477 }; 478 479 static const cpu_arch_extension cpu_opttab_cortexa53[] = { 480 { 481 "crypto", false, false, 482 { 483 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 484 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 485 isa_bit_fp_dbl, isa_nobit 486 } 487 }, 488 { 489 "nofp", true, false, 490 { 491 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 492 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 493 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 494 } 495 }, 496 { NULL, false, false, {isa_nobit}} 497 }; 498 499 static const cpu_arch_extension cpu_opttab_cortexa57[] = { 500 { 501 "crypto", false, false, 502 { 503 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 504 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 505 isa_bit_fp_dbl, isa_nobit 506 } 507 }, 508 { NULL, false, false, {isa_nobit}} 509 }; 510 511 static const cpu_arch_extension cpu_opttab_cortexa72[] = { 512 { 513 "crypto", false, false, 514 { 515 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 516 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 517 isa_bit_fp_dbl, isa_nobit 518 } 519 }, 520 { NULL, false, false, {isa_nobit}} 521 }; 522 523 static const cpu_arch_extension cpu_opttab_cortexa73[] = { 524 { 525 "crypto", false, false, 526 { 527 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 528 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 529 isa_bit_fp_dbl, isa_nobit 530 } 531 }, 532 { NULL, false, false, {isa_nobit}} 533 }; 534 535 static const cpu_arch_extension cpu_opttab_exynosm1[] = { 536 { 537 "crypto", false, false, 538 { 539 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 540 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 541 isa_bit_fp_dbl, isa_nobit 542 } 543 }, 544 { NULL, false, false, {isa_nobit}} 545 }; 546 547 static const cpu_arch_extension cpu_opttab_xgene1[] = { 548 { 549 "crypto", false, false, 550 { 551 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 552 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 553 isa_bit_fp_dbl, isa_nobit 554 } 555 }, 556 { NULL, false, false, {isa_nobit}} 557 }; 558 559 static const cpu_arch_extension cpu_opttab_cortexa57cortexa53[] = { 560 { 561 "crypto", false, false, 562 { 563 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 564 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 565 isa_bit_fp_dbl, isa_nobit 566 } 567 }, 568 { NULL, false, false, {isa_nobit}} 569 }; 570 571 static const cpu_arch_extension cpu_opttab_cortexa72cortexa53[] = { 572 { 573 "crypto", false, false, 574 { 575 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 576 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 577 isa_bit_fp_dbl, isa_nobit 578 } 579 }, 580 { NULL, false, false, {isa_nobit}} 581 }; 582 583 static const cpu_arch_extension cpu_opttab_cortexa73cortexa35[] = { 584 { 585 "crypto", false, false, 586 { 587 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 588 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 589 isa_bit_fp_dbl, isa_nobit 590 } 591 }, 592 { NULL, false, false, {isa_nobit}} 593 }; 594 595 static const cpu_arch_extension cpu_opttab_cortexa73cortexa53[] = { 596 { 597 "crypto", false, false, 598 { 599 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 600 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 601 isa_bit_fp_dbl, isa_nobit 602 } 603 }, 604 { NULL, false, false, {isa_nobit}} 605 }; 606 607 static const cpu_arch_extension cpu_opttab_cortexa55[] = { 608 { 609 "crypto", false, false, 610 { 611 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 612 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 613 isa_bit_fp_dbl, isa_nobit 614 } 615 }, 616 { 617 "nofp", true, false, 618 { 619 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 620 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 621 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 622 } 623 }, 624 { NULL, false, false, {isa_nobit}} 625 }; 626 627 static const cpu_arch_extension cpu_opttab_cortexa75[] = { 628 { 629 "crypto", false, false, 630 { 631 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 632 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 633 isa_bit_fp_dbl, isa_nobit 634 } 635 }, 636 { NULL, false, false, {isa_nobit}} 637 }; 638 639 static const cpu_arch_extension cpu_opttab_cortexa76[] = { 640 { 641 "crypto", false, false, 642 { 643 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 644 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 645 isa_bit_fp_dbl, isa_nobit 646 } 647 }, 648 { NULL, false, false, {isa_nobit}} 649 }; 650 651 static const cpu_arch_extension cpu_opttab_neoversen1[] = { 652 { 653 "crypto", false, false, 654 { 655 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 656 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 657 isa_bit_fp_dbl, isa_nobit 658 } 659 }, 660 { NULL, false, false, {isa_nobit}} 661 }; 662 663 static const cpu_alias cpu_aliastab_neoversen1[] = { 664 { "ares", false}, 665 { NULL, false} 666 }; 667 668 static const cpu_arch_extension cpu_opttab_cortexa75cortexa55[] = { 669 { 670 "crypto", false, false, 671 { 672 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 673 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 674 isa_bit_fp_dbl, isa_nobit 675 } 676 }, 677 { NULL, false, false, {isa_nobit}} 678 }; 679 680 static const cpu_arch_extension cpu_opttab_cortexa76cortexa55[] = { 681 { 682 "crypto", false, false, 683 { 684 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 685 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 686 isa_bit_fp_dbl, isa_nobit 687 } 688 }, 689 { NULL, false, false, {isa_nobit}} 690 }; 691 692 static const cpu_arch_extension cpu_opttab_cortexm33[] = { 693 { 694 "nofp", true, false, 695 { 696 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 697 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 698 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 699 } 700 }, 701 { 702 "nodsp", true, false, 703 { 704 isa_bit_armv7em, isa_nobit 705 } 706 }, 707 { NULL, false, false, {isa_nobit}} 708 }; 709 710 static const cpu_arch_extension cpu_opttab_cortexr52[] = { 711 { 712 "nofp.dp", true, false, 713 { 714 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32, 715 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 716 } 717 }, 718 { NULL, false, false, {isa_nobit}} 719 }; 720 721 const cpu_option all_cores[] = 722 { 723 { 724 { 725 "arm8", 726 NULL, 727 { 728 isa_bit_armv4, isa_bit_notm, isa_nobit 729 } 730 }, 731 NULL, 732 TARGET_ARCH_armv4 733 }, 734 { 735 { 736 "arm810", 737 NULL, 738 { 739 isa_bit_armv4, isa_bit_notm, isa_nobit 740 } 741 }, 742 NULL, 743 TARGET_ARCH_armv4 744 }, 745 { 746 { 747 "strongarm", 748 NULL, 749 { 750 isa_bit_armv4, isa_bit_notm, isa_nobit 751 } 752 }, 753 cpu_aliastab_strongarm, 754 TARGET_ARCH_armv4 755 }, 756 { 757 { 758 "fa526", 759 NULL, 760 { 761 isa_bit_armv4, isa_bit_notm, isa_nobit 762 } 763 }, 764 NULL, 765 TARGET_ARCH_armv4 766 }, 767 { 768 { 769 "fa626", 770 NULL, 771 { 772 isa_bit_armv4, isa_bit_notm, isa_nobit 773 } 774 }, 775 NULL, 776 TARGET_ARCH_armv4 777 }, 778 { 779 { 780 "arm7tdmi", 781 NULL, 782 { 783 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit 784 } 785 }, 786 cpu_aliastab_arm7tdmi, 787 TARGET_ARCH_armv4t 788 }, 789 { 790 { 791 "arm710t", 792 NULL, 793 { 794 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit 795 } 796 }, 797 cpu_aliastab_arm710t, 798 TARGET_ARCH_armv4t 799 }, 800 { 801 { 802 "arm9", 803 NULL, 804 { 805 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit 806 } 807 }, 808 NULL, 809 TARGET_ARCH_armv4t 810 }, 811 { 812 { 813 "arm9tdmi", 814 NULL, 815 { 816 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit 817 } 818 }, 819 NULL, 820 TARGET_ARCH_armv4t 821 }, 822 { 823 { 824 "arm920t", 825 NULL, 826 { 827 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit 828 } 829 }, 830 cpu_aliastab_arm920t, 831 TARGET_ARCH_armv4t 832 }, 833 { 834 { 835 "arm10tdmi", 836 NULL, 837 { 838 isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4, isa_bit_notm, 839 isa_nobit 840 } 841 }, 842 cpu_aliastab_arm10tdmi, 843 TARGET_ARCH_armv5t 844 }, 845 { 846 { 847 "arm9e", 848 cpu_opttab_arm9e, 849 { 850 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, 851 isa_bit_armv4, isa_bit_notm, isa_bit_fp_dbl, isa_nobit 852 } 853 }, 854 cpu_aliastab_arm9e, 855 TARGET_ARCH_armv5te 856 }, 857 { 858 { 859 "arm10e", 860 cpu_opttab_arm10e, 861 { 862 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, 863 isa_bit_armv4, isa_bit_notm, isa_bit_fp_dbl, isa_nobit 864 } 865 }, 866 cpu_aliastab_arm10e, 867 TARGET_ARCH_armv5te 868 }, 869 { 870 { 871 "xscale", 872 NULL, 873 { 874 isa_bit_armv5te, isa_bit_xscale, isa_bit_thumb, isa_bit_armv5t, 875 isa_bit_armv4, isa_bit_notm, isa_nobit 876 } 877 }, 878 NULL, 879 TARGET_ARCH_armv5te 880 }, 881 { 882 { 883 "iwmmxt", 884 NULL, 885 { 886 isa_bit_iwmmxt, isa_bit_armv5te, isa_bit_xscale, isa_bit_thumb, 887 isa_bit_armv5t, isa_bit_armv4, isa_bit_notm, isa_nobit 888 } 889 }, 890 NULL, 891 TARGET_ARCH_iwmmxt 892 }, 893 { 894 { 895 "iwmmxt2", 896 NULL, 897 { 898 isa_bit_iwmmxt, isa_bit_armv5te, isa_bit_xscale, isa_bit_thumb, 899 isa_bit_armv5t, isa_bit_armv4, isa_bit_iwmmxt2, isa_bit_notm, 900 isa_nobit 901 } 902 }, 903 NULL, 904 TARGET_ARCH_iwmmxt2 905 }, 906 { 907 { 908 "fa606te", 909 NULL, 910 { 911 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4, 912 isa_bit_notm, isa_nobit 913 } 914 }, 915 NULL, 916 TARGET_ARCH_armv5te 917 }, 918 { 919 { 920 "fa626te", 921 NULL, 922 { 923 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4, 924 isa_bit_notm, isa_nobit 925 } 926 }, 927 NULL, 928 TARGET_ARCH_armv5te 929 }, 930 { 931 { 932 "fmp626", 933 NULL, 934 { 935 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4, 936 isa_bit_notm, isa_nobit 937 } 938 }, 939 NULL, 940 TARGET_ARCH_armv5te 941 }, 942 { 943 { 944 "fa726te", 945 NULL, 946 { 947 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4, 948 isa_bit_notm, isa_nobit 949 } 950 }, 951 NULL, 952 TARGET_ARCH_armv5te 953 }, 954 { 955 { 956 "arm926ej-s", 957 cpu_opttab_arm926ejs, 958 { 959 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, 960 isa_bit_armv4, isa_bit_notm, isa_bit_fp_dbl, isa_nobit 961 } 962 }, 963 NULL, 964 TARGET_ARCH_armv5tej 965 }, 966 { 967 { 968 "arm1026ej-s", 969 cpu_opttab_arm1026ejs, 970 { 971 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, 972 isa_bit_armv4, isa_bit_notm, isa_bit_fp_dbl, isa_nobit 973 } 974 }, 975 NULL, 976 TARGET_ARCH_armv5tej 977 }, 978 { 979 { 980 "arm1136j-s", 981 NULL, 982 { 983 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 984 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_nobit 985 } 986 }, 987 NULL, 988 TARGET_ARCH_armv6j 989 }, 990 { 991 { 992 "arm1136jf-s", 993 NULL, 994 { 995 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 996 isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6, isa_bit_notm, 997 isa_bit_fp_dbl, isa_nobit 998 } 999 }, 1000 NULL, 1001 TARGET_ARCH_armv6j 1002 }, 1003 { 1004 { 1005 "arm1176jz-s", 1006 NULL, 1007 { 1008 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1009 isa_bit_armv4, isa_bit_quirk_armv6kz, isa_bit_armv6, isa_bit_notm, 1010 isa_bit_armv6k, isa_nobit 1011 } 1012 }, 1013 NULL, 1014 TARGET_ARCH_armv6kz 1015 }, 1016 { 1017 { 1018 "arm1176jzf-s", 1019 NULL, 1020 { 1021 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 1022 isa_bit_armv5t, isa_bit_armv4, isa_bit_quirk_armv6kz, isa_bit_armv6, 1023 isa_bit_notm, isa_bit_armv6k, isa_bit_fp_dbl, isa_nobit 1024 } 1025 }, 1026 NULL, 1027 TARGET_ARCH_armv6kz 1028 }, 1029 { 1030 { 1031 "mpcorenovfp", 1032 NULL, 1033 { 1034 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1035 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_bit_armv6k, 1036 isa_nobit 1037 } 1038 }, 1039 NULL, 1040 TARGET_ARCH_armv6k 1041 }, 1042 { 1043 { 1044 "mpcore", 1045 NULL, 1046 { 1047 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 1048 isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6, isa_bit_notm, 1049 isa_bit_armv6k, isa_bit_fp_dbl, isa_nobit 1050 } 1051 }, 1052 NULL, 1053 TARGET_ARCH_armv6k 1054 }, 1055 { 1056 { 1057 "arm1156t2-s", 1058 NULL, 1059 { 1060 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1061 isa_bit_armv4, isa_bit_armv6, isa_bit_thumb2, isa_bit_notm, 1062 isa_nobit 1063 } 1064 }, 1065 NULL, 1066 TARGET_ARCH_armv6t2 1067 }, 1068 { 1069 { 1070 "arm1156t2f-s", 1071 NULL, 1072 { 1073 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 1074 isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6, isa_bit_thumb2, 1075 isa_bit_notm, isa_bit_fp_dbl, isa_nobit 1076 } 1077 }, 1078 NULL, 1079 TARGET_ARCH_armv6t2 1080 }, 1081 { 1082 { 1083 "cortex-m1", 1084 NULL, 1085 { 1086 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1087 isa_bit_armv4, isa_bit_armv6, isa_nobit 1088 } 1089 }, 1090 NULL, 1091 TARGET_ARCH_armv6s_m 1092 }, 1093 { 1094 { 1095 "cortex-m0", 1096 NULL, 1097 { 1098 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1099 isa_bit_armv4, isa_bit_armv6, isa_nobit 1100 } 1101 }, 1102 NULL, 1103 TARGET_ARCH_armv6s_m 1104 }, 1105 { 1106 { 1107 "cortex-m0plus", 1108 NULL, 1109 { 1110 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1111 isa_bit_armv4, isa_bit_armv6, isa_nobit 1112 } 1113 }, 1114 NULL, 1115 TARGET_ARCH_armv6s_m 1116 }, 1117 { 1118 { 1119 "cortex-m1.small-multiply", 1120 NULL, 1121 { 1122 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1123 isa_bit_armv4, isa_bit_armv6, isa_nobit 1124 } 1125 }, 1126 NULL, 1127 TARGET_ARCH_armv6s_m 1128 }, 1129 { 1130 { 1131 "cortex-m0.small-multiply", 1132 NULL, 1133 { 1134 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1135 isa_bit_armv4, isa_bit_armv6, isa_nobit 1136 } 1137 }, 1138 NULL, 1139 TARGET_ARCH_armv6s_m 1140 }, 1141 { 1142 { 1143 "cortex-m0plus.small-multiply", 1144 NULL, 1145 { 1146 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1147 isa_bit_armv4, isa_bit_armv6, isa_nobit 1148 } 1149 }, 1150 NULL, 1151 TARGET_ARCH_armv6s_m 1152 }, 1153 { 1154 { 1155 "generic-armv7-a", 1156 cpu_opttab_genericv7a, 1157 { 1158 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_armv5te, isa_bit_thumb, 1159 isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6, 1160 isa_bit_armv7, isa_bit_thumb2, isa_bit_notm, isa_bit_armv6k, 1161 isa_bit_fp_dbl, isa_nobit 1162 } 1163 }, 1164 NULL, 1165 TARGET_ARCH_armv7_a 1166 }, 1167 { 1168 { 1169 "cortex-a5", 1170 cpu_opttab_cortexa5, 1171 { 1172 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_armv5te, isa_bit_thumb, 1173 isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, isa_bit_neon, 1174 isa_bit_armv6, isa_bit_armv7, isa_bit_fp_d32, isa_bit_thumb2, 1175 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, 1176 isa_bit_fp_dbl, isa_bit_sec, isa_nobit 1177 } 1178 }, 1179 NULL, 1180 TARGET_ARCH_armv7_a 1181 }, 1182 { 1183 { 1184 "cortex-a7", 1185 cpu_opttab_cortexa7, 1186 { 1187 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1188 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1189 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1190 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1191 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, 1192 isa_bit_fp_dbl, isa_bit_sec, isa_nobit 1193 } 1194 }, 1195 NULL, 1196 TARGET_ARCH_armv7ve 1197 }, 1198 { 1199 { 1200 "cortex-a8", 1201 cpu_opttab_cortexa8, 1202 { 1203 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_armv5te, isa_bit_thumb, 1204 isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, isa_bit_neon, 1205 isa_bit_armv6, isa_bit_armv7, isa_bit_fp_d32, isa_bit_thumb2, 1206 isa_bit_notm, isa_bit_armv6k, isa_bit_fp_dbl, isa_bit_sec, 1207 isa_nobit 1208 } 1209 }, 1210 NULL, 1211 TARGET_ARCH_armv7_a 1212 }, 1213 { 1214 { 1215 "cortex-a9", 1216 cpu_opttab_cortexa9, 1217 { 1218 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_armv5te, isa_bit_thumb, 1219 isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, isa_bit_neon, 1220 isa_bit_armv6, isa_bit_armv7, isa_bit_fp_d32, isa_bit_thumb2, 1221 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, 1222 isa_bit_fp_dbl, isa_bit_sec, isa_nobit 1223 } 1224 }, 1225 NULL, 1226 TARGET_ARCH_armv7_a 1227 }, 1228 { 1229 { 1230 "cortex-a12", 1231 cpu_opttab_cortexa12, 1232 { 1233 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1234 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1235 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1236 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1237 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, 1238 isa_bit_fp_dbl, isa_bit_sec, isa_nobit 1239 } 1240 }, 1241 NULL, 1242 TARGET_ARCH_armv7ve 1243 }, 1244 { 1245 { 1246 "cortex-a15", 1247 cpu_opttab_cortexa15, 1248 { 1249 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1250 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1251 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1252 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1253 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, 1254 isa_bit_fp_dbl, isa_bit_sec, isa_nobit 1255 } 1256 }, 1257 NULL, 1258 TARGET_ARCH_armv7ve 1259 }, 1260 { 1261 { 1262 "cortex-a17", 1263 cpu_opttab_cortexa17, 1264 { 1265 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1266 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1267 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1268 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1269 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, 1270 isa_bit_fp_dbl, isa_bit_sec, isa_nobit 1271 } 1272 }, 1273 NULL, 1274 TARGET_ARCH_armv7ve 1275 }, 1276 { 1277 { 1278 "cortex-r4", 1279 NULL, 1280 { 1281 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1282 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv, 1283 isa_bit_thumb2, isa_bit_notm, isa_bit_armv6k, isa_nobit 1284 } 1285 }, 1286 NULL, 1287 TARGET_ARCH_armv7_r 1288 }, 1289 { 1290 { 1291 "cortex-r4f", 1292 NULL, 1293 { 1294 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_armv5te, isa_bit_thumb, 1295 isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6, 1296 isa_bit_armv7, isa_bit_tdiv, isa_bit_thumb2, isa_bit_notm, 1297 isa_bit_armv6k, isa_bit_fp_dbl, isa_nobit 1298 } 1299 }, 1300 NULL, 1301 TARGET_ARCH_armv7_r 1302 }, 1303 { 1304 { 1305 "cortex-r5", 1306 cpu_opttab_cortexr5, 1307 { 1308 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_armv5te, 1309 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, 1310 isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv, isa_bit_thumb2, 1311 isa_bit_notm, isa_bit_armv6k, isa_bit_fp_dbl, isa_nobit 1312 } 1313 }, 1314 NULL, 1315 TARGET_ARCH_armv7_r 1316 }, 1317 { 1318 { 1319 "cortex-r7", 1320 cpu_opttab_cortexr7, 1321 { 1322 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_armv5te, 1323 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, 1324 isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv, isa_bit_thumb2, 1325 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_fp_dbl, 1326 isa_nobit 1327 } 1328 }, 1329 NULL, 1330 TARGET_ARCH_armv7_r 1331 }, 1332 { 1333 { 1334 "cortex-r8", 1335 cpu_opttab_cortexr8, 1336 { 1337 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_armv5te, 1338 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, 1339 isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv, isa_bit_thumb2, 1340 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_fp_dbl, 1341 isa_nobit 1342 } 1343 }, 1344 NULL, 1345 TARGET_ARCH_armv7_r 1346 }, 1347 { 1348 { 1349 "cortex-m7", 1350 cpu_opttab_cortexm7, 1351 { 1352 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_armv5te, 1353 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, 1354 isa_bit_armv6, isa_bit_armv7em, isa_bit_armv7, isa_bit_fpv5, 1355 isa_bit_tdiv, isa_bit_quirk_no_volatile_ce, isa_bit_thumb2, isa_bit_fp16conv, 1356 isa_bit_fp_dbl, isa_nobit 1357 } 1358 }, 1359 NULL, 1360 TARGET_ARCH_armv7e_m 1361 }, 1362 { 1363 { 1364 "cortex-m4", 1365 cpu_opttab_cortexm4, 1366 { 1367 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_armv5te, 1368 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, 1369 isa_bit_armv6, isa_bit_armv7em, isa_bit_armv7, isa_bit_tdiv, 1370 isa_bit_thumb2, isa_bit_fp16conv, isa_nobit 1371 } 1372 }, 1373 NULL, 1374 TARGET_ARCH_armv7e_m 1375 }, 1376 { 1377 { 1378 "cortex-m3", 1379 NULL, 1380 { 1381 isa_bit_armv5te, isa_bit_thumb, isa_bit_quirk_cm3_ldrd, isa_bit_be8, 1382 isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, 1383 isa_bit_tdiv, isa_bit_thumb2, isa_nobit 1384 } 1385 }, 1386 NULL, 1387 TARGET_ARCH_armv7_m 1388 }, 1389 { 1390 { 1391 "marvell-pj4", 1392 NULL, 1393 { 1394 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1395 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_thumb2, 1396 isa_bit_notm, isa_bit_armv6k, isa_bit_mp, isa_bit_sec, 1397 isa_nobit 1398 } 1399 }, 1400 NULL, 1401 TARGET_ARCH_armv7_a 1402 }, 1403 { 1404 { 1405 "cortex-a15.cortex-a7", 1406 cpu_opttab_cortexa15cortexa7, 1407 { 1408 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1409 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1410 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1411 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1412 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, 1413 isa_bit_fp_dbl, isa_bit_sec, isa_nobit 1414 } 1415 }, 1416 NULL, 1417 TARGET_ARCH_armv7ve 1418 }, 1419 { 1420 { 1421 "cortex-a17.cortex-a7", 1422 cpu_opttab_cortexa17cortexa7, 1423 { 1424 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1425 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1426 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1427 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1428 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, 1429 isa_bit_fp_dbl, isa_bit_sec, isa_nobit 1430 } 1431 }, 1432 NULL, 1433 TARGET_ARCH_armv7ve 1434 }, 1435 { 1436 { 1437 "cortex-a32", 1438 cpu_opttab_cortexa32, 1439 { 1440 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1441 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1442 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1443 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1444 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1445 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1446 isa_bit_sec, isa_nobit 1447 } 1448 }, 1449 NULL, 1450 TARGET_ARCH_armv8_a 1451 }, 1452 { 1453 { 1454 "cortex-a35", 1455 cpu_opttab_cortexa35, 1456 { 1457 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1458 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1459 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1460 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1461 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1462 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1463 isa_bit_sec, isa_nobit 1464 } 1465 }, 1466 NULL, 1467 TARGET_ARCH_armv8_a 1468 }, 1469 { 1470 { 1471 "cortex-a53", 1472 cpu_opttab_cortexa53, 1473 { 1474 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1475 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1476 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1477 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1478 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1479 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1480 isa_bit_sec, isa_nobit 1481 } 1482 }, 1483 NULL, 1484 TARGET_ARCH_armv8_a 1485 }, 1486 { 1487 { 1488 "cortex-a57", 1489 cpu_opttab_cortexa57, 1490 { 1491 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1492 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1493 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1494 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1495 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1496 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1497 isa_bit_sec, isa_nobit 1498 } 1499 }, 1500 NULL, 1501 TARGET_ARCH_armv8_a 1502 }, 1503 { 1504 { 1505 "cortex-a72", 1506 cpu_opttab_cortexa72, 1507 { 1508 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1509 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1510 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1511 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1512 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1513 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1514 isa_bit_sec, isa_nobit 1515 } 1516 }, 1517 NULL, 1518 TARGET_ARCH_armv8_a 1519 }, 1520 { 1521 { 1522 "cortex-a73", 1523 cpu_opttab_cortexa73, 1524 { 1525 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1526 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1527 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1528 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1529 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1530 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1531 isa_bit_sec, isa_nobit 1532 } 1533 }, 1534 NULL, 1535 TARGET_ARCH_armv8_a 1536 }, 1537 { 1538 { 1539 "exynos-m1", 1540 cpu_opttab_exynosm1, 1541 { 1542 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1543 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1544 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1545 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1546 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1547 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1548 isa_bit_sec, isa_nobit 1549 } 1550 }, 1551 NULL, 1552 TARGET_ARCH_armv8_a 1553 }, 1554 { 1555 { 1556 "xgene1", 1557 cpu_opttab_xgene1, 1558 { 1559 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1560 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1561 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1562 isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, isa_bit_tdiv, 1563 isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, isa_bit_fp16conv, 1564 isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, isa_bit_sec, 1565 isa_nobit 1566 } 1567 }, 1568 NULL, 1569 TARGET_ARCH_armv8_a 1570 }, 1571 { 1572 { 1573 "cortex-a57.cortex-a53", 1574 cpu_opttab_cortexa57cortexa53, 1575 { 1576 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1577 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1578 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1579 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1580 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1581 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1582 isa_bit_sec, isa_nobit 1583 } 1584 }, 1585 NULL, 1586 TARGET_ARCH_armv8_a 1587 }, 1588 { 1589 { 1590 "cortex-a72.cortex-a53", 1591 cpu_opttab_cortexa72cortexa53, 1592 { 1593 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1594 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1595 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1596 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1597 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1598 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1599 isa_bit_sec, isa_nobit 1600 } 1601 }, 1602 NULL, 1603 TARGET_ARCH_armv8_a 1604 }, 1605 { 1606 { 1607 "cortex-a73.cortex-a35", 1608 cpu_opttab_cortexa73cortexa35, 1609 { 1610 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1611 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1612 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1613 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1614 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1615 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1616 isa_bit_sec, isa_nobit 1617 } 1618 }, 1619 NULL, 1620 TARGET_ARCH_armv8_a 1621 }, 1622 { 1623 { 1624 "cortex-a73.cortex-a53", 1625 cpu_opttab_cortexa73cortexa53, 1626 { 1627 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1628 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1629 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1630 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1631 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1632 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1633 isa_bit_sec, isa_nobit 1634 } 1635 }, 1636 NULL, 1637 TARGET_ARCH_armv8_a 1638 }, 1639 { 1640 { 1641 "cortex-a55", 1642 cpu_opttab_cortexa55, 1643 { 1644 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1645 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1646 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon, 1647 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, 1648 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1649 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv, 1650 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1651 isa_bit_sec, isa_nobit 1652 } 1653 }, 1654 NULL, 1655 TARGET_ARCH_armv8_2_a 1656 }, 1657 { 1658 { 1659 "cortex-a75", 1660 cpu_opttab_cortexa75, 1661 { 1662 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1663 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1664 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon, 1665 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, 1666 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1667 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv, 1668 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1669 isa_bit_sec, isa_nobit 1670 } 1671 }, 1672 NULL, 1673 TARGET_ARCH_armv8_2_a 1674 }, 1675 { 1676 { 1677 "cortex-a76", 1678 cpu_opttab_cortexa76, 1679 { 1680 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1681 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1682 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon, 1683 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, 1684 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1685 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv, 1686 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1687 isa_bit_sec, isa_nobit 1688 } 1689 }, 1690 NULL, 1691 TARGET_ARCH_armv8_2_a 1692 }, 1693 { 1694 { 1695 "neoverse-n1", 1696 cpu_opttab_neoversen1, 1697 { 1698 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1699 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1700 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon, 1701 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, 1702 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1703 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv, 1704 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1705 isa_bit_sec, isa_nobit 1706 } 1707 }, 1708 cpu_aliastab_neoversen1, 1709 TARGET_ARCH_armv8_2_a 1710 }, 1711 { 1712 { 1713 "cortex-a75.cortex-a55", 1714 cpu_opttab_cortexa75cortexa55, 1715 { 1716 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1717 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1718 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon, 1719 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, 1720 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1721 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv, 1722 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1723 isa_bit_sec, isa_nobit 1724 } 1725 }, 1726 NULL, 1727 TARGET_ARCH_armv8_2_a 1728 }, 1729 { 1730 { 1731 "cortex-a76.cortex-a55", 1732 cpu_opttab_cortexa76cortexa55, 1733 { 1734 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1735 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1736 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon, 1737 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, 1738 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, 1739 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv, 1740 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1741 isa_bit_sec, isa_nobit 1742 } 1743 }, 1744 NULL, 1745 TARGET_ARCH_armv8_2_a 1746 }, 1747 { 1748 { 1749 "cortex-m23", 1750 NULL, 1751 { 1752 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1753 isa_bit_armv4, isa_bit_armv6, isa_bit_cmse, isa_bit_armv8, 1754 isa_bit_tdiv, isa_nobit 1755 } 1756 }, 1757 NULL, 1758 TARGET_ARCH_armv8_m_base 1759 }, 1760 { 1761 { 1762 "cortex-m33", 1763 cpu_opttab_cortexm33, 1764 { 1765 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_armv5te, 1766 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, 1767 isa_bit_armv6, isa_bit_armv7em, isa_bit_armv7, isa_bit_cmse, 1768 isa_bit_armv8, isa_bit_fpv5, isa_bit_tdiv, isa_bit_thumb2, 1769 isa_bit_fp16conv, isa_nobit 1770 } 1771 }, 1772 NULL, 1773 TARGET_ARCH_armv8_m_main 1774 }, 1775 { 1776 { 1777 "cortex-r52", 1778 cpu_opttab_cortexr52, 1779 { 1780 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4, 1781 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 1782 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6, 1783 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, 1784 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, 1785 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, 1786 isa_bit_sec, isa_nobit 1787 } 1788 }, 1789 NULL, 1790 TARGET_ARCH_armv8_r 1791 }, 1792 {{NULL, NULL, {isa_nobit}}, NULL, TARGET_ARCH_arm_none} 1793 }; 1794 static const struct cpu_arch_extension arch_opttab_armv5te[] = { 1795 { 1796 "fp", false, false, 1797 { 1798 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1799 } 1800 }, 1801 { 1802 "nofp", true, false, 1803 { 1804 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 1805 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 1806 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 1807 } 1808 }, 1809 { 1810 "vfpv2", false, true, 1811 { 1812 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1813 } 1814 }, 1815 { NULL, false, false, {isa_nobit}} 1816 }; 1817 1818 static const struct cpu_arch_extension arch_opttab_armv5tej[] = { 1819 { 1820 "fp", false, false, 1821 { 1822 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1823 } 1824 }, 1825 { 1826 "nofp", true, false, 1827 { 1828 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 1829 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 1830 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 1831 } 1832 }, 1833 { 1834 "vfpv2", false, true, 1835 { 1836 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1837 } 1838 }, 1839 { NULL, false, false, {isa_nobit}} 1840 }; 1841 1842 static const struct cpu_arch_extension arch_opttab_armv6[] = { 1843 { 1844 "fp", false, false, 1845 { 1846 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1847 } 1848 }, 1849 { 1850 "nofp", true, false, 1851 { 1852 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 1853 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 1854 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 1855 } 1856 }, 1857 { 1858 "vfpv2", false, true, 1859 { 1860 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1861 } 1862 }, 1863 { NULL, false, false, {isa_nobit}} 1864 }; 1865 1866 static const struct cpu_arch_extension arch_opttab_armv6j[] = { 1867 { 1868 "fp", false, false, 1869 { 1870 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1871 } 1872 }, 1873 { 1874 "nofp", true, false, 1875 { 1876 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 1877 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 1878 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 1879 } 1880 }, 1881 { 1882 "vfpv2", false, true, 1883 { 1884 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1885 } 1886 }, 1887 { NULL, false, false, {isa_nobit}} 1888 }; 1889 1890 static const struct cpu_arch_extension arch_opttab_armv6k[] = { 1891 { 1892 "fp", false, false, 1893 { 1894 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1895 } 1896 }, 1897 { 1898 "nofp", true, false, 1899 { 1900 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 1901 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 1902 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 1903 } 1904 }, 1905 { 1906 "vfpv2", false, true, 1907 { 1908 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1909 } 1910 }, 1911 { NULL, false, false, {isa_nobit}} 1912 }; 1913 1914 static const struct cpu_arch_extension arch_opttab_armv6z[] = { 1915 { 1916 "fp", false, false, 1917 { 1918 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1919 } 1920 }, 1921 { 1922 "nofp", true, false, 1923 { 1924 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 1925 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 1926 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 1927 } 1928 }, 1929 { 1930 "vfpv2", false, true, 1931 { 1932 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1933 } 1934 }, 1935 { NULL, false, false, {isa_nobit}} 1936 }; 1937 1938 static const struct cpu_arch_extension arch_opttab_armv6kz[] = { 1939 { 1940 "fp", false, false, 1941 { 1942 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1943 } 1944 }, 1945 { 1946 "nofp", true, false, 1947 { 1948 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 1949 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 1950 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 1951 } 1952 }, 1953 { 1954 "vfpv2", false, true, 1955 { 1956 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1957 } 1958 }, 1959 { NULL, false, false, {isa_nobit}} 1960 }; 1961 1962 static const struct cpu_arch_extension arch_opttab_armv6zk[] = { 1963 { 1964 "fp", false, false, 1965 { 1966 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1967 } 1968 }, 1969 { 1970 "nofp", true, false, 1971 { 1972 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 1973 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 1974 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 1975 } 1976 }, 1977 { 1978 "vfpv2", false, true, 1979 { 1980 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1981 } 1982 }, 1983 { NULL, false, false, {isa_nobit}} 1984 }; 1985 1986 static const struct cpu_arch_extension arch_opttab_armv6t2[] = { 1987 { 1988 "fp", false, false, 1989 { 1990 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 1991 } 1992 }, 1993 { 1994 "nofp", true, false, 1995 { 1996 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 1997 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 1998 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 1999 } 2000 }, 2001 { 2002 "vfpv2", false, true, 2003 { 2004 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 2005 } 2006 }, 2007 { NULL, false, false, {isa_nobit}} 2008 }; 2009 2010 static const struct cpu_arch_extension arch_opttab_armv7[] = { 2011 { 2012 "fp", false, false, 2013 { 2014 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit 2015 } 2016 }, 2017 { 2018 "nofp", true, false, 2019 { 2020 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2021 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2022 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2023 } 2024 }, 2025 { 2026 "vfpv3-d16", false, true, 2027 { 2028 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit 2029 } 2030 }, 2031 { NULL, false, false, {isa_nobit}} 2032 }; 2033 2034 static const struct cpu_arch_extension arch_opttab_armv7_a[] = { 2035 { 2036 "mp", false, false, 2037 { 2038 isa_bit_mp, isa_nobit 2039 } 2040 }, 2041 { 2042 "sec", false, false, 2043 { 2044 isa_bit_sec, isa_nobit 2045 } 2046 }, 2047 { 2048 "fp", false, false, 2049 { 2050 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit 2051 } 2052 }, 2053 { 2054 "vfpv3", false, false, 2055 { 2056 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp_dbl, 2057 isa_nobit 2058 } 2059 }, 2060 { 2061 "vfpv3-d16-fp16", false, false, 2062 { 2063 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_bit_fp_dbl, 2064 isa_nobit 2065 } 2066 }, 2067 { 2068 "vfpv3-fp16", false, false, 2069 { 2070 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp16conv, 2071 isa_bit_fp_dbl, isa_nobit 2072 } 2073 }, 2074 { 2075 "vfpv4-d16", false, false, 2076 { 2077 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv, 2078 isa_bit_fp_dbl, isa_nobit 2079 } 2080 }, 2081 { 2082 "vfpv4", false, false, 2083 { 2084 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp_d32, 2085 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2086 } 2087 }, 2088 { 2089 "simd", false, false, 2090 { 2091 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 2092 isa_bit_fp_dbl, isa_nobit 2093 } 2094 }, 2095 { 2096 "neon-fp16", false, false, 2097 { 2098 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 2099 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2100 } 2101 }, 2102 { 2103 "neon-vfpv4", false, false, 2104 { 2105 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2106 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2107 } 2108 }, 2109 { 2110 "nosimd", true, false, 2111 { 2112 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32, 2113 isa_bit_crypto, isa_nobit 2114 } 2115 }, 2116 { 2117 "nofp", true, false, 2118 { 2119 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2120 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2121 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2122 } 2123 }, 2124 { 2125 "vfpv3-d16", false, true, 2126 { 2127 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit 2128 } 2129 }, 2130 { 2131 "neon", false, true, 2132 { 2133 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 2134 isa_bit_fp_dbl, isa_nobit 2135 } 2136 }, 2137 { 2138 "neon-vfpv3", false, true, 2139 { 2140 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 2141 isa_bit_fp_dbl, isa_nobit 2142 } 2143 }, 2144 { NULL, false, false, {isa_nobit}} 2145 }; 2146 2147 static const struct cpu_arch_extension arch_opttab_armv7ve[] = { 2148 { 2149 "vfpv3-d16", false, false, 2150 { 2151 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit 2152 } 2153 }, 2154 { 2155 "vfpv3", false, false, 2156 { 2157 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp_dbl, 2158 isa_nobit 2159 } 2160 }, 2161 { 2162 "vfpv3-d16-fp16", false, false, 2163 { 2164 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_bit_fp_dbl, 2165 isa_nobit 2166 } 2167 }, 2168 { 2169 "vfpv3-fp16", false, false, 2170 { 2171 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp16conv, 2172 isa_bit_fp_dbl, isa_nobit 2173 } 2174 }, 2175 { 2176 "fp", false, false, 2177 { 2178 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv, 2179 isa_bit_fp_dbl, isa_nobit 2180 } 2181 }, 2182 { 2183 "vfpv4", false, false, 2184 { 2185 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp_d32, 2186 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2187 } 2188 }, 2189 { 2190 "neon", false, false, 2191 { 2192 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 2193 isa_bit_fp_dbl, isa_nobit 2194 } 2195 }, 2196 { 2197 "neon-fp16", false, false, 2198 { 2199 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 2200 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2201 } 2202 }, 2203 { 2204 "simd", false, false, 2205 { 2206 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2207 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2208 } 2209 }, 2210 { 2211 "nosimd", true, false, 2212 { 2213 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32, 2214 isa_bit_crypto, isa_nobit 2215 } 2216 }, 2217 { 2218 "nofp", true, false, 2219 { 2220 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2221 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2222 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2223 } 2224 }, 2225 { 2226 "vfpv4-d16", false, true, 2227 { 2228 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv, 2229 isa_bit_fp_dbl, isa_nobit 2230 } 2231 }, 2232 { 2233 "neon-vfpv3", false, true, 2234 { 2235 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 2236 isa_bit_fp_dbl, isa_nobit 2237 } 2238 }, 2239 { 2240 "neon-vfpv4", false, true, 2241 { 2242 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2243 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2244 } 2245 }, 2246 { NULL, false, false, {isa_nobit}} 2247 }; 2248 2249 static const struct cpu_arch_extension arch_opttab_armv7_r[] = { 2250 { 2251 "fp.sp", false, false, 2252 { 2253 isa_bit_vfpv2, isa_bit_vfpv3, isa_nobit 2254 } 2255 }, 2256 { 2257 "fp", false, false, 2258 { 2259 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit 2260 } 2261 }, 2262 { 2263 "vfpv3xd-fp16", false, false, 2264 { 2265 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_nobit 2266 } 2267 }, 2268 { 2269 "vfpv3-d16-fp16", false, false, 2270 { 2271 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_bit_fp_dbl, 2272 isa_nobit 2273 } 2274 }, 2275 { 2276 "idiv", false, false, 2277 { 2278 isa_bit_adiv, isa_nobit 2279 } 2280 }, 2281 { 2282 "nofp", true, false, 2283 { 2284 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2285 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2286 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2287 } 2288 }, 2289 { 2290 "noidiv", true, false, 2291 { 2292 isa_bit_adiv, isa_nobit 2293 } 2294 }, 2295 { 2296 "vfpv3xd", false, true, 2297 { 2298 isa_bit_vfpv2, isa_bit_vfpv3, isa_nobit 2299 } 2300 }, 2301 { 2302 "vfpv3-d16", false, true, 2303 { 2304 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit 2305 } 2306 }, 2307 { NULL, false, false, {isa_nobit}} 2308 }; 2309 2310 static const struct cpu_arch_extension arch_opttab_armv7e_m[] = { 2311 { 2312 "fp", false, false, 2313 { 2314 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv, 2315 isa_nobit 2316 } 2317 }, 2318 { 2319 "fpv5", false, false, 2320 { 2321 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5, 2322 isa_bit_fp16conv, isa_nobit 2323 } 2324 }, 2325 { 2326 "fp.dp", false, false, 2327 { 2328 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5, 2329 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2330 } 2331 }, 2332 { 2333 "nofp", true, false, 2334 { 2335 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2336 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2337 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2338 } 2339 }, 2340 { 2341 "vfpv4-sp-d16", false, true, 2342 { 2343 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv, 2344 isa_nobit 2345 } 2346 }, 2347 { 2348 "fpv5-d16", false, true, 2349 { 2350 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5, 2351 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2352 } 2353 }, 2354 { NULL, false, false, {isa_nobit}} 2355 }; 2356 2357 static const struct cpu_arch_extension arch_opttab_armv8_a[] = { 2358 { 2359 "crc", false, false, 2360 { 2361 isa_bit_crc32, isa_nobit 2362 } 2363 }, 2364 { 2365 "simd", false, false, 2366 { 2367 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2368 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, 2369 isa_nobit 2370 } 2371 }, 2372 { 2373 "crypto", false, false, 2374 { 2375 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2376 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 2377 isa_bit_fp_dbl, isa_nobit 2378 } 2379 }, 2380 { 2381 "nocrypto", true, false, 2382 { 2383 isa_bit_crypto, isa_nobit 2384 } 2385 }, 2386 { 2387 "nofp", true, false, 2388 { 2389 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2390 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2391 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2392 } 2393 }, 2394 { 2395 "sb", false, false, 2396 { 2397 isa_bit_sb, isa_nobit 2398 } 2399 }, 2400 { 2401 "predres", false, false, 2402 { 2403 isa_bit_predres, isa_nobit 2404 } 2405 }, 2406 { NULL, false, false, {isa_nobit}} 2407 }; 2408 2409 static const struct cpu_arch_extension arch_opttab_armv8_1_a[] = { 2410 { 2411 "simd", false, false, 2412 { 2413 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2414 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, 2415 isa_nobit 2416 } 2417 }, 2418 { 2419 "crypto", false, false, 2420 { 2421 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2422 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 2423 isa_bit_fp_dbl, isa_nobit 2424 } 2425 }, 2426 { 2427 "nocrypto", true, false, 2428 { 2429 isa_bit_crypto, isa_nobit 2430 } 2431 }, 2432 { 2433 "nofp", true, false, 2434 { 2435 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2436 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2437 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2438 } 2439 }, 2440 { 2441 "sb", false, false, 2442 { 2443 isa_bit_sb, isa_nobit 2444 } 2445 }, 2446 { 2447 "predres", false, false, 2448 { 2449 isa_bit_predres, isa_nobit 2450 } 2451 }, 2452 { NULL, false, false, {isa_nobit}} 2453 }; 2454 2455 static const struct cpu_arch_extension arch_opttab_armv8_2_a[] = { 2456 { 2457 "simd", false, false, 2458 { 2459 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2460 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, 2461 isa_nobit 2462 } 2463 }, 2464 { 2465 "fp16", false, false, 2466 { 2467 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2468 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2469 isa_bit_fp_dbl, isa_nobit 2470 } 2471 }, 2472 { 2473 "fp16fml", false, false, 2474 { 2475 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16fml, 2476 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, 2477 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2478 } 2479 }, 2480 { 2481 "crypto", false, false, 2482 { 2483 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2484 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 2485 isa_bit_fp_dbl, isa_nobit 2486 } 2487 }, 2488 { 2489 "nocrypto", true, false, 2490 { 2491 isa_bit_crypto, isa_nobit 2492 } 2493 }, 2494 { 2495 "nofp", true, false, 2496 { 2497 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2498 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2499 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2500 } 2501 }, 2502 { 2503 "dotprod", false, false, 2504 { 2505 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod, 2506 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, 2507 isa_bit_fp_dbl, isa_nobit 2508 } 2509 }, 2510 { 2511 "sb", false, false, 2512 { 2513 isa_bit_sb, isa_nobit 2514 } 2515 }, 2516 { 2517 "predres", false, false, 2518 { 2519 isa_bit_predres, isa_nobit 2520 } 2521 }, 2522 { NULL, false, false, {isa_nobit}} 2523 }; 2524 2525 static const struct cpu_arch_extension arch_opttab_armv8_3_a[] = { 2526 { 2527 "simd", false, false, 2528 { 2529 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2530 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, 2531 isa_nobit 2532 } 2533 }, 2534 { 2535 "fp16", false, false, 2536 { 2537 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2538 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2539 isa_bit_fp_dbl, isa_nobit 2540 } 2541 }, 2542 { 2543 "fp16fml", false, false, 2544 { 2545 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16fml, 2546 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, 2547 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2548 } 2549 }, 2550 { 2551 "crypto", false, false, 2552 { 2553 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2554 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 2555 isa_bit_fp_dbl, isa_nobit 2556 } 2557 }, 2558 { 2559 "nocrypto", true, false, 2560 { 2561 isa_bit_crypto, isa_nobit 2562 } 2563 }, 2564 { 2565 "nofp", true, false, 2566 { 2567 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2568 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2569 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2570 } 2571 }, 2572 { 2573 "dotprod", false, false, 2574 { 2575 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod, 2576 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, 2577 isa_bit_fp_dbl, isa_nobit 2578 } 2579 }, 2580 { 2581 "sb", false, false, 2582 { 2583 isa_bit_sb, isa_nobit 2584 } 2585 }, 2586 { 2587 "predres", false, false, 2588 { 2589 isa_bit_predres, isa_nobit 2590 } 2591 }, 2592 { NULL, false, false, {isa_nobit}} 2593 }; 2594 2595 static const struct cpu_arch_extension arch_opttab_armv8_4_a[] = { 2596 { 2597 "simd", false, false, 2598 { 2599 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod, 2600 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, 2601 isa_bit_fp_dbl, isa_nobit 2602 } 2603 }, 2604 { 2605 "fp16", false, false, 2606 { 2607 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16fml, 2608 isa_bit_dotprod, isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, 2609 isa_bit_fp16, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2610 } 2611 }, 2612 { 2613 "crypto", false, false, 2614 { 2615 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod, 2616 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, 2617 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2618 } 2619 }, 2620 { 2621 "nocrypto", true, false, 2622 { 2623 isa_bit_crypto, isa_nobit 2624 } 2625 }, 2626 { 2627 "nofp", true, false, 2628 { 2629 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2630 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2631 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2632 } 2633 }, 2634 { 2635 "sb", false, false, 2636 { 2637 isa_bit_sb, isa_nobit 2638 } 2639 }, 2640 { 2641 "predres", false, false, 2642 { 2643 isa_bit_predres, isa_nobit 2644 } 2645 }, 2646 { NULL, false, false, {isa_nobit}} 2647 }; 2648 2649 static const struct cpu_arch_extension arch_opttab_armv8_5_a[] = { 2650 { 2651 "simd", false, false, 2652 { 2653 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod, 2654 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, 2655 isa_bit_fp_dbl, isa_nobit 2656 } 2657 }, 2658 { 2659 "fp16", false, false, 2660 { 2661 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16fml, 2662 isa_bit_dotprod, isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, 2663 isa_bit_fp16, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2664 } 2665 }, 2666 { 2667 "crypto", false, false, 2668 { 2669 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod, 2670 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, 2671 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2672 } 2673 }, 2674 { 2675 "nocrypto", true, false, 2676 { 2677 isa_bit_crypto, isa_nobit 2678 } 2679 }, 2680 { 2681 "nofp", true, false, 2682 { 2683 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2684 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2685 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2686 } 2687 }, 2688 { NULL, false, false, {isa_nobit}} 2689 }; 2690 2691 static const struct cpu_arch_extension arch_opttab_armv8_m_main[] = { 2692 { 2693 "dsp", false, false, 2694 { 2695 isa_bit_armv7em, isa_nobit 2696 } 2697 }, 2698 { 2699 "fp", false, false, 2700 { 2701 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5, 2702 isa_bit_fp16conv, isa_nobit 2703 } 2704 }, 2705 { 2706 "fp.dp", false, false, 2707 { 2708 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5, 2709 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 2710 } 2711 }, 2712 { 2713 "nofp", true, false, 2714 { 2715 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2716 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2717 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2718 } 2719 }, 2720 { 2721 "nodsp", true, false, 2722 { 2723 isa_bit_armv7em, isa_nobit 2724 } 2725 }, 2726 { NULL, false, false, {isa_nobit}} 2727 }; 2728 2729 static const struct cpu_arch_extension arch_opttab_armv8_r[] = { 2730 { 2731 "crc", false, false, 2732 { 2733 isa_bit_crc32, isa_nobit 2734 } 2735 }, 2736 { 2737 "fp.sp", false, false, 2738 { 2739 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5, 2740 isa_bit_fp16conv, isa_nobit 2741 } 2742 }, 2743 { 2744 "simd", false, false, 2745 { 2746 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2747 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, 2748 isa_nobit 2749 } 2750 }, 2751 { 2752 "crypto", false, false, 2753 { 2754 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2755 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 2756 isa_bit_fp_dbl, isa_nobit 2757 } 2758 }, 2759 { 2760 "nocrypto", true, false, 2761 { 2762 isa_bit_crypto, isa_nobit 2763 } 2764 }, 2765 { 2766 "nofp", true, false, 2767 { 2768 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 2769 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv, 2770 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit 2771 } 2772 }, 2773 { NULL, false, false, {isa_nobit}} 2774 }; 2775 2776 const arch_option all_architectures[] = 2777 { 2778 { 2779 "armv4", 2780 NULL, 2781 { 2782 isa_bit_armv4, isa_bit_notm, isa_nobit 2783 }, 2784 "4", BASE_ARCH_4, 2785 0, 2786 TARGET_CPU_arm7tdmi, 2787 }, 2788 { 2789 "armv4t", 2790 NULL, 2791 { 2792 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit 2793 }, 2794 "4T", BASE_ARCH_4T, 2795 0, 2796 TARGET_CPU_arm7tdmi, 2797 }, 2798 { 2799 "armv5t", 2800 NULL, 2801 { 2802 isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4, isa_bit_notm, 2803 isa_nobit 2804 }, 2805 "5T", BASE_ARCH_5T, 2806 0, 2807 TARGET_CPU_arm10tdmi, 2808 }, 2809 { 2810 "armv5te", 2811 arch_opttab_armv5te, 2812 { 2813 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4, 2814 isa_bit_notm, isa_nobit 2815 }, 2816 "5TE", BASE_ARCH_5TE, 2817 0, 2818 TARGET_CPU_arm1026ejs, 2819 }, 2820 { 2821 "armv5tej", 2822 arch_opttab_armv5tej, 2823 { 2824 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4, 2825 isa_bit_notm, isa_nobit 2826 }, 2827 "5TEJ", BASE_ARCH_5TEJ, 2828 0, 2829 TARGET_CPU_arm1026ejs, 2830 }, 2831 { 2832 "armv6", 2833 arch_opttab_armv6, 2834 { 2835 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2836 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_nobit 2837 }, 2838 "6", BASE_ARCH_6, 2839 0, 2840 TARGET_CPU_arm1136js, 2841 }, 2842 { 2843 "armv6j", 2844 arch_opttab_armv6j, 2845 { 2846 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2847 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_nobit 2848 }, 2849 "6J", BASE_ARCH_6J, 2850 0, 2851 TARGET_CPU_arm1136js, 2852 }, 2853 { 2854 "armv6k", 2855 arch_opttab_armv6k, 2856 { 2857 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2858 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_bit_armv6k, 2859 isa_nobit 2860 }, 2861 "6K", BASE_ARCH_6K, 2862 0, 2863 TARGET_CPU_mpcore, 2864 }, 2865 { 2866 "armv6z", 2867 arch_opttab_armv6z, 2868 { 2869 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2870 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_nobit 2871 }, 2872 "6Z", BASE_ARCH_6Z, 2873 0, 2874 TARGET_CPU_arm1176jzs, 2875 }, 2876 { 2877 "armv6kz", 2878 arch_opttab_armv6kz, 2879 { 2880 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2881 isa_bit_armv4, isa_bit_quirk_armv6kz, isa_bit_armv6, isa_bit_notm, 2882 isa_bit_armv6k, isa_nobit 2883 }, 2884 "6KZ", BASE_ARCH_6KZ, 2885 0, 2886 TARGET_CPU_arm1176jzs, 2887 }, 2888 { 2889 "armv6zk", 2890 arch_opttab_armv6zk, 2891 { 2892 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2893 isa_bit_armv4, isa_bit_quirk_armv6kz, isa_bit_armv6, isa_bit_notm, 2894 isa_bit_armv6k, isa_nobit 2895 }, 2896 "6KZ", BASE_ARCH_6KZ, 2897 0, 2898 TARGET_CPU_arm1176jzs, 2899 }, 2900 { 2901 "armv6t2", 2902 arch_opttab_armv6t2, 2903 { 2904 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2905 isa_bit_armv4, isa_bit_armv6, isa_bit_thumb2, isa_bit_notm, 2906 isa_nobit 2907 }, 2908 "6T2", BASE_ARCH_6T2, 2909 0, 2910 TARGET_CPU_arm1156t2s, 2911 }, 2912 { 2913 "armv6-m", 2914 NULL, 2915 { 2916 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2917 isa_bit_armv4, isa_bit_armv6, isa_nobit 2918 }, 2919 "6M", BASE_ARCH_6M, 2920 'M', 2921 TARGET_CPU_cortexm1, 2922 }, 2923 { 2924 "armv6s-m", 2925 NULL, 2926 { 2927 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2928 isa_bit_armv4, isa_bit_armv6, isa_nobit 2929 }, 2930 "6M", BASE_ARCH_6M, 2931 'M', 2932 TARGET_CPU_cortexm1, 2933 }, 2934 { 2935 "armv7", 2936 arch_opttab_armv7, 2937 { 2938 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2939 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_thumb2, 2940 isa_nobit 2941 }, 2942 "7", BASE_ARCH_7, 2943 0, 2944 TARGET_CPU_cortexa8, 2945 }, 2946 { 2947 "armv7-a", 2948 arch_opttab_armv7_a, 2949 { 2950 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2951 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_thumb2, 2952 isa_bit_notm, isa_bit_armv6k, isa_nobit 2953 }, 2954 "7A", BASE_ARCH_7A, 2955 'A', 2956 TARGET_CPU_cortexa8, 2957 }, 2958 { 2959 "armv7ve", 2960 arch_opttab_armv7ve, 2961 { 2962 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 2963 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6, 2964 isa_bit_armv7, isa_bit_tdiv, isa_bit_thumb2, isa_bit_notm, 2965 isa_bit_armv6k, isa_bit_mp, isa_bit_sec, isa_nobit 2966 }, 2967 "7A", BASE_ARCH_7A, 2968 'A', 2969 TARGET_CPU_cortexa8, 2970 }, 2971 { 2972 "armv7-r", 2973 arch_opttab_armv7_r, 2974 { 2975 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2976 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv, 2977 isa_bit_thumb2, isa_bit_notm, isa_bit_armv6k, isa_nobit 2978 }, 2979 "7R", BASE_ARCH_7R, 2980 'R', 2981 TARGET_CPU_cortexr4, 2982 }, 2983 { 2984 "armv7-m", 2985 NULL, 2986 { 2987 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 2988 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv, 2989 isa_bit_thumb2, isa_nobit 2990 }, 2991 "7M", BASE_ARCH_7M, 2992 'M', 2993 TARGET_CPU_cortexm3, 2994 }, 2995 { 2996 "armv7e-m", 2997 arch_opttab_armv7e_m, 2998 { 2999 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 3000 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7em, isa_bit_armv7, 3001 isa_bit_tdiv, isa_bit_thumb2, isa_nobit 3002 }, 3003 "7EM", BASE_ARCH_7EM, 3004 'M', 3005 TARGET_CPU_cortexm4, 3006 }, 3007 { 3008 "armv8-a", 3009 arch_opttab_armv8_a, 3010 { 3011 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 3012 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6, 3013 isa_bit_armv7, isa_bit_armv8, isa_bit_tdiv, isa_bit_thumb2, 3014 isa_bit_notm, isa_bit_armv6k, isa_bit_mp, isa_bit_sec, 3015 isa_nobit 3016 }, 3017 "8A", BASE_ARCH_8A, 3018 'A', 3019 TARGET_CPU_cortexa53, 3020 }, 3021 { 3022 "armv8.1-a", 3023 arch_opttab_armv8_1_a, 3024 { 3025 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 3026 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6, 3027 isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, isa_bit_tdiv, 3028 isa_bit_thumb2, isa_bit_notm, isa_bit_armv8_1, isa_bit_armv6k, 3029 isa_bit_mp, isa_bit_sec, isa_nobit 3030 }, 3031 "8A", BASE_ARCH_8A, 3032 'A', 3033 TARGET_CPU_cortexa53, 3034 }, 3035 { 3036 "armv8.2-a", 3037 arch_opttab_armv8_2_a, 3038 { 3039 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 3040 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6, 3041 isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, isa_bit_tdiv, 3042 isa_bit_thumb2, isa_bit_notm, isa_bit_armv8_1, isa_bit_armv8_2, 3043 isa_bit_armv6k, isa_bit_mp, isa_bit_sec, isa_nobit 3044 }, 3045 "8A", BASE_ARCH_8A, 3046 'A', 3047 TARGET_CPU_cortexa53, 3048 }, 3049 { 3050 "armv8.3-a", 3051 arch_opttab_armv8_3_a, 3052 { 3053 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 3054 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6, 3055 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_tdiv, 3056 isa_bit_thumb2, isa_bit_notm, isa_bit_armv8_1, isa_bit_armv6k, 3057 isa_bit_armv8_2, isa_bit_armv8_3, isa_bit_mp, isa_bit_sec, 3058 isa_nobit 3059 }, 3060 "8A", BASE_ARCH_8A, 3061 'A', 3062 TARGET_CPU_cortexa53, 3063 }, 3064 { 3065 "armv8.4-a", 3066 arch_opttab_armv8_4_a, 3067 { 3068 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 3069 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6, 3070 isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, isa_bit_tdiv, 3071 isa_bit_thumb2, isa_bit_notm, isa_bit_armv8_1, isa_bit_armv8_2, 3072 isa_bit_armv6k, isa_bit_armv8_3, isa_bit_armv8_4, isa_bit_mp, 3073 isa_bit_sec, isa_nobit 3074 }, 3075 "8A", BASE_ARCH_8A, 3076 'A', 3077 TARGET_CPU_cortexa53, 3078 }, 3079 { 3080 "armv8.5-a", 3081 arch_opttab_armv8_5_a, 3082 { 3083 isa_bit_adiv, isa_bit_armv5te, isa_bit_sb, isa_bit_thumb, 3084 isa_bit_be8, isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, 3085 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, 3086 isa_bit_tdiv, isa_bit_thumb2, isa_bit_notm, isa_bit_armv8_1, 3087 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_armv8_3, isa_bit_armv8_4, 3088 isa_bit_mp, isa_bit_armv8_5, isa_bit_sec, isa_bit_predres, 3089 isa_nobit 3090 }, 3091 "8A", BASE_ARCH_8A, 3092 'A', 3093 TARGET_CPU_cortexa53, 3094 }, 3095 { 3096 "armv8-m.base", 3097 NULL, 3098 { 3099 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 3100 isa_bit_armv4, isa_bit_armv6, isa_bit_cmse, isa_bit_armv8, 3101 isa_bit_tdiv, isa_nobit 3102 }, 3103 "8M_BASE", BASE_ARCH_8M_BASE, 3104 'M', 3105 TARGET_CPU_cortexm23, 3106 }, 3107 { 3108 "armv8-m.main", 3109 arch_opttab_armv8_m_main, 3110 { 3111 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, 3112 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_cmse, 3113 isa_bit_armv8, isa_bit_tdiv, isa_bit_thumb2, isa_nobit 3114 }, 3115 "8M_MAIN", BASE_ARCH_8M_MAIN, 3116 'M', 3117 TARGET_CPU_cortexm7, 3118 }, 3119 { 3120 "armv8-r", 3121 arch_opttab_armv8_r, 3122 { 3123 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, 3124 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6, 3125 isa_bit_armv7, isa_bit_armv8, isa_bit_tdiv, isa_bit_thumb2, 3126 isa_bit_notm, isa_bit_armv6k, isa_bit_mp, isa_bit_sec, 3127 isa_nobit 3128 }, 3129 "8R", BASE_ARCH_8R, 3130 'R', 3131 TARGET_CPU_cortexr52, 3132 }, 3133 { 3134 "iwmmxt", 3135 NULL, 3136 { 3137 isa_bit_iwmmxt, isa_bit_armv5te, isa_bit_xscale, isa_bit_thumb, 3138 isa_bit_armv5t, isa_bit_armv4, isa_bit_notm, isa_nobit 3139 }, 3140 "5TE", BASE_ARCH_5TE, 3141 0, 3142 TARGET_CPU_iwmmxt, 3143 }, 3144 { 3145 "iwmmxt2", 3146 NULL, 3147 { 3148 isa_bit_iwmmxt, isa_bit_armv5te, isa_bit_xscale, isa_bit_thumb, 3149 isa_bit_armv5t, isa_bit_armv4, isa_bit_iwmmxt2, isa_bit_notm, 3150 isa_nobit 3151 }, 3152 "5TE", BASE_ARCH_5TE, 3153 0, 3154 TARGET_CPU_iwmmxt2, 3155 }, 3156 {{NULL, NULL, {isa_nobit}}, 3157 NULL, BASE_ARCH_0, 0, TARGET_CPU_arm_none} 3158 }; 3159 3160 const arm_fpu_desc all_fpus[] = 3161 { 3162 { 3163 "vfp", 3164 { 3165 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 3166 } 3167 }, 3168 { 3169 "vfpv2", 3170 { 3171 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit 3172 } 3173 }, 3174 { 3175 "vfpv3", 3176 { 3177 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp_dbl, 3178 isa_nobit 3179 } 3180 }, 3181 { 3182 "vfpv3-fp16", 3183 { 3184 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp16conv, 3185 isa_bit_fp_dbl, isa_nobit 3186 } 3187 }, 3188 { 3189 "vfpv3-d16", 3190 { 3191 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit 3192 } 3193 }, 3194 { 3195 "vfpv3-d16-fp16", 3196 { 3197 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_bit_fp_dbl, 3198 isa_nobit 3199 } 3200 }, 3201 { 3202 "vfpv3xd", 3203 { 3204 isa_bit_vfpv2, isa_bit_vfpv3, isa_nobit 3205 } 3206 }, 3207 { 3208 "vfpv3xd-fp16", 3209 { 3210 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_nobit 3211 } 3212 }, 3213 { 3214 "neon", 3215 { 3216 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 3217 isa_bit_fp_dbl, isa_nobit 3218 } 3219 }, 3220 { 3221 "neon-vfpv3", 3222 { 3223 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 3224 isa_bit_fp_dbl, isa_nobit 3225 } 3226 }, 3227 { 3228 "neon-fp16", 3229 { 3230 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32, 3231 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 3232 } 3233 }, 3234 { 3235 "vfpv4", 3236 { 3237 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp_d32, 3238 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 3239 } 3240 }, 3241 { 3242 "neon-vfpv4", 3243 { 3244 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 3245 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 3246 } 3247 }, 3248 { 3249 "vfpv4-d16", 3250 { 3251 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv, 3252 isa_bit_fp_dbl, isa_nobit 3253 } 3254 }, 3255 { 3256 "fpv4-sp-d16", 3257 { 3258 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv, 3259 isa_nobit 3260 } 3261 }, 3262 { 3263 "fpv5-sp-d16", 3264 { 3265 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5, 3266 isa_bit_fp16conv, isa_nobit 3267 } 3268 }, 3269 { 3270 "fpv5-d16", 3271 { 3272 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5, 3273 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 3274 } 3275 }, 3276 { 3277 "fp-armv8", 3278 { 3279 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5, 3280 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit 3281 } 3282 }, 3283 { 3284 "neon-fp-armv8", 3285 { 3286 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 3287 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, 3288 isa_nobit 3289 } 3290 }, 3291 { 3292 "crypto-neon-fp-armv8", 3293 { 3294 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon, 3295 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto, 3296 isa_bit_fp_dbl, isa_nobit 3297 } 3298 }, 3299 { 3300 "vfp3", 3301 { 3302 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp_dbl, 3303 isa_nobit 3304 } 3305 }, 3306 }; 3307