1415 lines · plain
1//=- AArch64Processors.td - Describe AArch64 Processors ------*- tablegen -*-=//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9//10//===----------------------------------------------------------------------===//11 12//===----------------------------------------------------------------------===//13// AArch64 Processor subtarget features.14//===----------------------------------------------------------------------===//15 16 17def TuneA35 : SubtargetFeature<"a35", "ARMProcFamily", "CortexA35",18 "Cortex-A35 ARM processors">;19 20def TuneA320 : SubtargetFeature<"a320", "ARMProcFamily", "CortexA320",21 "Cortex-A320 ARM processors", [22 FeatureFuseAES,23 FeatureFuseAdrpAdd,24 FeaturePostRAScheduler,25 FeatureUseWzrToVecMove,26 FeatureUseFixedOverScalableIfEqualCost]>;27 28def TuneA53 : SubtargetFeature<"a53", "ARMProcFamily", "CortexA53",29 "Cortex-A53 ARM processors", [30 FeatureFuseAES,31 FeatureFuseAdrpAdd,32 FeatureBalanceFPOps,33 FeaturePostRAScheduler,34 FeatureUseWzrToVecMove]>;35 36def TuneA55 : SubtargetFeature<"a55", "ARMProcFamily", "CortexA55",37 "Cortex-A55 ARM processors", [38 FeatureFuseAES,39 FeatureFuseAdrpAdd,40 FeaturePostRAScheduler,41 FeatureFuseAddress,42 FeatureUseWzrToVecMove]>;43 44def TuneA510 : SubtargetFeature<"a510", "ARMProcFamily", "CortexA510",45 "Cortex-A510 ARM processors", [46 FeatureFuseAES,47 FeatureFuseAdrpAdd,48 FeaturePostRAScheduler,49 FeatureUseWzrToVecMove,50 FeatureUseFixedOverScalableIfEqualCost51 ]>;52 53def TuneA520 : SubtargetFeature<"a520", "ARMProcFamily", "CortexA520",54 "Cortex-A520 ARM processors", [55 FeatureFuseAES,56 FeatureFuseAdrpAdd,57 FeaturePostRAScheduler,58 FeatureUseWzrToVecMove,59 FeatureUseFixedOverScalableIfEqualCost]>;60 61def TuneA520AE : SubtargetFeature<"a520ae", "ARMProcFamily", "CortexA520",62 "Cortex-A520AE ARM processors", [63 FeatureFuseAES,64 FeatureFuseAdrpAdd,65 FeaturePostRAScheduler,66 FeatureUseWzrToVecMove]>;67 68def TuneA57 : SubtargetFeature<"a57", "ARMProcFamily", "CortexA57",69 "Cortex-A57 ARM processors", [70 FeatureFuseAES,71 FeatureBalanceFPOps,72 FeatureFuseAdrpAdd,73 FeatureFuseLiterals,74 FeatureAddrLSLSlow14,75 FeaturePostRAScheduler,76 FeatureEnableSelectOptimize,77 FeaturePredictableSelectIsExpensive]>;78 79def TuneA65 : SubtargetFeature<"a65", "ARMProcFamily", "CortexA65",80 "Cortex-A65 ARM processors", [81 FeatureFuseAES,82 FeatureFuseAddress,83 FeatureFuseAdrpAdd,84 FeatureFuseLiterals,85 FeatureEnableSelectOptimize,86 FeaturePredictableSelectIsExpensive]>;87 88def TuneA72 : SubtargetFeature<"a72", "ARMProcFamily", "CortexA72",89 "Cortex-A72 ARM processors", [90 FeatureFuseAES,91 FeatureFuseAdrpAdd,92 FeatureFuseLiterals,93 FeatureAddrLSLSlow14,94 FeatureEnableSelectOptimize,95 FeaturePredictableSelectIsExpensive]>;96 97def TuneA73 : SubtargetFeature<"a73", "ARMProcFamily", "CortexA73",98 "Cortex-A73 ARM processors", [99 FeatureFuseAES,100 FeatureFuseAdrpAdd,101 FeatureAddrLSLSlow14,102 FeatureEnableSelectOptimize,103 FeaturePredictableSelectIsExpensive]>;104 105def TuneA75 : SubtargetFeature<"a75", "ARMProcFamily", "CortexA75",106 "Cortex-A75 ARM processors", [107 FeatureFuseAES,108 FeatureFuseAdrpAdd,109 FeatureAddrLSLSlow14,110 FeatureEnableSelectOptimize,111 FeaturePredictableSelectIsExpensive]>;112 113def TuneA76 : SubtargetFeature<"a76", "ARMProcFamily", "CortexA76",114 "Cortex-A76 ARM processors", [115 FeatureFuseAES,116 FeatureFuseAdrpAdd,117 FeatureAddrLSLSlow14,118 FeatureALULSLFast,119 FeatureEnableSelectOptimize,120 FeaturePredictableSelectIsExpensive]>;121 122def TuneA77 : SubtargetFeature<"a77", "ARMProcFamily", "CortexA77",123 "Cortex-A77 ARM processors", [124 FeatureCmpBccFusion,125 FeatureFuseAES,126 FeatureFuseAdrpAdd,127 FeatureAddrLSLSlow14,128 FeatureALULSLFast,129 FeatureEnableSelectOptimize,130 FeaturePredictableSelectIsExpensive]>;131 132def TuneA78 : SubtargetFeature<"a78", "ARMProcFamily", "CortexA78",133 "Cortex-A78 ARM processors", [134 FeatureCmpBccFusion,135 FeatureFuseAES,136 FeatureFuseAdrpAdd,137 FeatureFuseCmpCSel,138 FeatureFuseCmpCSet,139 FeatureAddrLSLSlow14,140 FeatureALULSLFast,141 FeaturePostRAScheduler,142 FeatureEnableSelectOptimize,143 FeaturePredictableSelectIsExpensive]>;144 145def TuneA78AE : SubtargetFeature<"a78ae", "ARMProcFamily",146 "CortexA78AE",147 "Cortex-A78AE ARM processors", [148 FeatureCmpBccFusion,149 FeatureFuseAES,150 FeatureFuseAdrpAdd,151 FeatureFuseCmpCSel,152 FeatureFuseCmpCSet,153 FeatureAddrLSLSlow14,154 FeatureALULSLFast,155 FeaturePostRAScheduler,156 FeatureEnableSelectOptimize,157 FeaturePredictableSelectIsExpensive]>;158 159def TuneA78C : SubtargetFeature<"a78c", "ARMProcFamily",160 "CortexA78C",161 "Cortex-A78C ARM processors", [162 FeatureCmpBccFusion,163 FeatureFuseAES,164 FeatureFuseAdrpAdd,165 FeatureFuseCmpCSel,166 FeatureFuseCmpCSet,167 FeatureAddrLSLSlow14,168 FeatureALULSLFast,169 FeaturePostRAScheduler,170 FeatureEnableSelectOptimize,171 FeaturePredictableSelectIsExpensive]>;172 173def TuneA710 : SubtargetFeature<"a710", "ARMProcFamily", "CortexA710",174 "Cortex-A710 ARM processors", [175 FeatureCmpBccFusion,176 FeatureFuseAES,177 FeatureFuseAdrpAdd,178 FeatureFuseCmpCSel,179 FeatureFuseCmpCSet,180 FeatureALULSLFast,181 FeaturePostRAScheduler,182 FeatureEnableSelectOptimize,183 FeaturePredictableSelectIsExpensive]>;184 185def TuneA715 : SubtargetFeature<"a715", "ARMProcFamily", "CortexA715",186 "Cortex-A715 ARM processors", [187 FeatureFuseAES,188 FeaturePostRAScheduler,189 FeatureCmpBccFusion,190 FeatureALULSLFast,191 FeatureFuseAdrpAdd,192 FeatureFuseCmpCSel,193 FeatureFuseCmpCSet,194 FeatureEnableSelectOptimize,195 FeaturePredictableSelectIsExpensive]>;196 197def TuneA720 : SubtargetFeature<"a720", "ARMProcFamily", "CortexA720",198 "Cortex-A720 ARM processors", [199 FeatureFuseAES,200 FeaturePostRAScheduler,201 FeatureCmpBccFusion,202 FeatureALULSLFast,203 FeatureFuseAdrpAdd,204 FeatureFuseCmpCSel,205 FeatureFuseCmpCSet,206 FeatureEnableSelectOptimize,207 FeaturePredictableSelectIsExpensive]>;208 209def TuneA720AE : SubtargetFeature<"a720ae", "ARMProcFamily", "CortexA720",210 "Cortex-A720AE ARM processors", [211 FeatureFuseAES,212 FeaturePostRAScheduler,213 FeatureCmpBccFusion,214 FeatureALULSLFast,215 FeatureFuseAdrpAdd,216 FeatureFuseCmpCSel,217 FeatureFuseCmpCSet,218 FeatureEnableSelectOptimize,219 FeaturePredictableSelectIsExpensive]>;220 221def TuneA725 : SubtargetFeature<"cortex-a725", "ARMProcFamily",222 "CortexA725",223 "Cortex-A725 ARM processors", [224 FeatureFuseAES,225 FeaturePostRAScheduler,226 FeatureCmpBccFusion,227 FeatureALULSLFast,228 FeatureFuseAdrpAdd,229 FeatureFuseCmpCSel,230 FeatureFuseCmpCSet,231 FeatureEnableSelectOptimize,232 FeaturePredictableSelectIsExpensive]>;233 234def TuneR82 : SubtargetFeature<"cortex-r82", "ARMProcFamily",235 "CortexR82",236 "Cortex-R82 ARM processors", [237 FeaturePostRAScheduler]>;238 239def TuneR82AE : SubtargetFeature<"cortex-r82ae", "ARMProcFamily",240 "CortexR82AE",241 "Cortex-R82-AE ARM processors",242 [FeaturePostRAScheduler]>;243 244def TuneX1 : SubtargetFeature<"cortex-x1", "ARMProcFamily", "CortexX1",245 "Cortex-X1 ARM processors", [246 FeatureCmpBccFusion,247 FeatureFuseAES,248 FeatureFuseAdrpAdd,249 FeatureAddrLSLSlow14,250 FeatureALULSLFast,251 FeaturePostRAScheduler,252 FeatureEnableSelectOptimize,253 FeaturePredictableSelectIsExpensive]>;254 255def TuneX2 : SubtargetFeature<"cortex-x2", "ARMProcFamily", "CortexX2",256 "Cortex-X2 ARM processors", [257 FeatureCmpBccFusion,258 FeatureFuseAES,259 FeatureFuseAdrpAdd,260 FeatureALULSLFast,261 FeaturePostRAScheduler,262 FeatureEnableSelectOptimize,263 FeatureUseFixedOverScalableIfEqualCost,264 FeaturePredictableSelectIsExpensive]>;265 266def TuneX3 : SubtargetFeature<"cortex-x3", "ARMProcFamily", "CortexX3",267 "Cortex-X3 ARM processors", [268 FeatureALULSLFast,269 FeatureFuseAdrpAdd,270 FeatureFuseAES,271 FeaturePostRAScheduler,272 FeatureEnableSelectOptimize,273 FeatureUseFixedOverScalableIfEqualCost,274 FeatureAvoidLDAPUR,275 FeaturePredictableSelectIsExpensive]>;276 277def TuneX4 : SubtargetFeature<"cortex-x4", "ARMProcFamily", "CortexX4",278 "Cortex-X4 ARM processors", [279 FeatureALULSLFast,280 FeatureFuseAdrpAdd,281 FeatureFuseCmpCSel,282 FeatureFuseCmpCSet,283 FeatureFuseAES,284 FeaturePostRAScheduler,285 FeatureEnableSelectOptimize,286 FeatureUseFixedOverScalableIfEqualCost,287 FeatureAvoidLDAPUR,288 FeaturePredictableSelectIsExpensive]>;289 290def TuneX925 : SubtargetFeature<"cortex-x925", "ARMProcFamily",291 "CortexX925", "Cortex-X925 ARM processors",[292 FeatureALULSLFast,293 FeatureFuseAdrpAdd,294 FeatureFuseCmpCSel,295 FeatureFuseCmpCSet,296 FeatureFuseAES,297 FeaturePostRAScheduler,298 FeatureEnableSelectOptimize,299 FeatureUseFixedOverScalableIfEqualCost,300 FeatureAvoidLDAPUR,301 FeaturePredictableSelectIsExpensive]>;302 303def TuneA64FX : SubtargetFeature<"a64fx", "ARMProcFamily", "A64FX",304 "Fujitsu A64FX processors", [305 FeaturePostRAScheduler,306 FeatureAggressiveFMA,307 FeatureArithmeticBccFusion,308 FeatureStorePairSuppress,309 FeaturePredictableSelectIsExpensive]>;310 311def TuneMONAKA : SubtargetFeature<"fujitsu-monaka", "ARMProcFamily", "MONAKA",312 "Fujitsu FUJITSU-MONAKA processors", [313 FeaturePredictableSelectIsExpensive,314 FeatureEnableSelectOptimize,315 FeaturePostRAScheduler,316 FeatureArithmeticBccFusion,317 ]>;318 319def TuneCarmel : SubtargetFeature<"carmel", "ARMProcFamily", "Carmel",320 "Nvidia Carmel processors">;321 322def TuneOlympus : SubtargetFeature<"olympus", "ARMProcFamily", "Olympus",323 "NVIDIA Olympus processors", [324 FeatureALULSLFast,325 FeatureCmpBccFusion,326 FeatureEnableSelectOptimize,327 FeatureFuseAES,328 FeatureFuseAdrpAdd,329 FeaturePostRAScheduler,330 FeaturePredictableSelectIsExpensive,331 FeatureUseFixedOverScalableIfEqualCost]>;332 333// Note that cyclone does not fuse AES instructions, but newer apple chips do334// perform the fusion and cyclone is used by default when targeting apple OSes.335def TuneAppleA7 : SubtargetFeature<"apple-a7", "ARMProcFamily", "AppleA7",336 "Apple A7 (the CPU formerly known as Cyclone)", [337 FeatureAlternateSExtLoadCVTF32Pattern,338 FeatureArithmeticBccFusion,339 FeatureArithmeticCbzFusion,340 FeatureDisableLatencySchedHeuristic,341 FeatureFuseAES, FeatureFuseCryptoEOR,342 FeatureStorePairSuppress,343 FeatureZCRegMoveGPR64,344 FeatureZCRegMoveFPR128,345 FeatureZCZeroingGPR32,346 FeatureZCZeroingGPR64,347 FeatureNoZCZeroingFPR64,348 FeatureZCZeroingFPR128,349 FeatureZCZeroingFPWorkaround]>;350 351def TuneAppleA10 : SubtargetFeature<"apple-a10", "ARMProcFamily", "AppleA10",352 "Apple A10", [353 FeatureAlternateSExtLoadCVTF32Pattern,354 FeatureArithmeticBccFusion,355 FeatureArithmeticCbzFusion,356 FeatureDisableLatencySchedHeuristic,357 FeatureFuseAES,358 FeatureFuseCryptoEOR,359 FeatureStorePairSuppress,360 FeatureZCRegMoveGPR64,361 FeatureZCRegMoveFPR128,362 FeatureZCZeroingGPR32,363 FeatureZCZeroingGPR64,364 FeatureNoZCZeroingFPR64,365 FeatureZCZeroingFPR128]>;366 367def TuneAppleA11 : SubtargetFeature<"apple-a11", "ARMProcFamily", "AppleA11",368 "Apple A11", [369 FeatureAlternateSExtLoadCVTF32Pattern,370 FeatureArithmeticBccFusion,371 FeatureArithmeticCbzFusion,372 FeatureDisableLatencySchedHeuristic,373 FeatureFuseAES,374 FeatureFuseCryptoEOR,375 FeatureStorePairSuppress,376 FeatureZCRegMoveGPR64,377 FeatureZCRegMoveFPR128,378 FeatureZCZeroingGPR32,379 FeatureZCZeroingGPR64,380 FeatureNoZCZeroingFPR64,381 FeatureZCZeroingFPR128]>;382 383def TuneAppleA12 : SubtargetFeature<"apple-a12", "ARMProcFamily", "AppleA12",384 "Apple A12", [385 FeatureAlternateSExtLoadCVTF32Pattern,386 FeatureArithmeticBccFusion,387 FeatureArithmeticCbzFusion,388 FeatureDisableLatencySchedHeuristic,389 FeatureFuseAES,390 FeatureFuseCryptoEOR,391 FeatureStorePairSuppress,392 FeatureZCRegMoveGPR64,393 FeatureZCRegMoveFPR128,394 FeatureZCZeroingGPR32,395 FeatureZCZeroingGPR64,396 FeatureNoZCZeroingFPR64,397 FeatureZCZeroingFPR128]>;398 399def TuneAppleA13 : SubtargetFeature<"apple-a13", "ARMProcFamily", "AppleA13",400 "Apple A13", [401 FeatureAlternateSExtLoadCVTF32Pattern,402 FeatureArithmeticBccFusion,403 FeatureArithmeticCbzFusion,404 FeatureDisableLatencySchedHeuristic,405 FeatureFuseAES,406 FeatureFuseCryptoEOR,407 FeatureStorePairSuppress,408 FeatureZCRegMoveGPR64,409 FeatureZCRegMoveFPR128,410 FeatureZCZeroingGPR32,411 FeatureZCZeroingGPR64,412 FeatureNoZCZeroingFPR64,413 FeatureZCZeroingFPR128]>;414 415def TuneAppleA14 : SubtargetFeature<"apple-a14", "ARMProcFamily", "AppleA14",416 "Apple A14", [417 FeatureAggressiveFMA,418 FeatureAlternateSExtLoadCVTF32Pattern,419 FeatureArithmeticBccFusion,420 FeatureArithmeticCbzFusion,421 FeatureDisableLatencySchedHeuristic,422 FeatureFuseAddress,423 FeatureFuseAES,424 FeatureFuseArithmeticLogic,425 FeatureFuseCmpCSel,426 FeatureFuseCryptoEOR,427 FeatureFuseLiterals,428 FeatureStorePairSuppress,429 FeatureZCRegMoveGPR64,430 FeatureZCRegMoveFPR128,431 FeatureZCZeroingGPR32,432 FeatureZCZeroingGPR64,433 FeatureNoZCZeroingFPR64,434 FeatureZCZeroingFPR128]>;435 436def TuneAppleA15 : SubtargetFeature<"apple-a15", "ARMProcFamily", "AppleA15",437 "Apple A15", [438 FeatureAlternateSExtLoadCVTF32Pattern,439 FeatureArithmeticBccFusion,440 FeatureArithmeticCbzFusion,441 FeatureDisableLatencySchedHeuristic,442 FeatureFuseAddress,443 FeatureFuseAdrpAdd,444 FeatureFuseAES,445 FeatureFuseArithmeticLogic,446 FeatureFuseCmpCSel,447 FeatureFuseCryptoEOR,448 FeatureFuseLiterals,449 FeatureStorePairSuppress,450 FeatureZCRegMoveGPR64,451 FeatureZCRegMoveFPR128,452 FeatureZCZeroingGPR32,453 FeatureZCZeroingGPR64,454 FeatureNoZCZeroingFPR64,455 FeatureZCZeroingFPR128]>;456 457def TuneAppleA16 : SubtargetFeature<"apple-a16", "ARMProcFamily", "AppleA16",458 "Apple A16", [459 FeatureAlternateSExtLoadCVTF32Pattern,460 FeatureArithmeticBccFusion,461 FeatureArithmeticCbzFusion,462 FeatureDisableLatencySchedHeuristic,463 FeatureFuseAddress,464 FeatureFuseAdrpAdd,465 FeatureFuseAES,466 FeatureFuseArithmeticLogic,467 FeatureFuseCmpCSel,468 FeatureFuseCryptoEOR,469 FeatureFuseLiterals,470 FeatureStorePairSuppress,471 FeatureZCRegMoveGPR64,472 FeatureZCRegMoveFPR128,473 FeatureZCZeroingGPR32,474 FeatureZCZeroingGPR64,475 FeatureNoZCZeroingFPR64,476 FeatureZCZeroingFPR128]>;477 478def TuneAppleA17 : SubtargetFeature<"apple-a17", "ARMProcFamily", "AppleA17",479 "Apple A17", [480 FeatureAlternateSExtLoadCVTF32Pattern,481 FeatureArithmeticBccFusion,482 FeatureArithmeticCbzFusion,483 FeatureDisableLatencySchedHeuristic,484 FeatureFuseAddress,485 FeatureFuseAdrpAdd,486 FeatureFuseAES,487 FeatureFuseArithmeticLogic,488 FeatureFuseCmpCSel,489 FeatureFuseCryptoEOR,490 FeatureFuseLiterals,491 FeatureStorePairSuppress,492 FeatureZCRegMoveGPR64,493 FeatureZCRegMoveFPR128,494 FeatureZCZeroingGPR32,495 FeatureZCZeroingGPR64,496 FeatureNoZCZeroingFPR64,497 FeatureZCZeroingFPR128]>;498 499def TuneAppleM4 : SubtargetFeature<"apple-m4", "ARMProcFamily", "AppleM4",500 "Apple M4", [501 FeatureAlternateSExtLoadCVTF32Pattern,502 FeatureArithmeticBccFusion,503 FeatureArithmeticCbzFusion,504 FeatureDisableLatencySchedHeuristic,505 FeatureFuseAddress,506 FeatureFuseAdrpAdd,507 FeatureFuseAES,508 FeatureFuseArithmeticLogic,509 FeatureFuseCmpCSel,510 FeatureFuseCryptoEOR,511 FeatureFuseLiterals,512 FeatureZCRegMoveGPR64,513 FeatureZCRegMoveFPR128,514 FeatureZCZeroingGPR32,515 FeatureZCZeroingGPR64,516 FeatureNoZCZeroingFPR64,517 FeatureZCZeroingFPR128]>;518 519def TuneExynosM3 : SubtargetFeature<"exynosm3", "ARMProcFamily", "ExynosM3",520 "Samsung Exynos-M3 processors",521 [FeatureExynosCheapAsMoveHandling,522 FeatureForce32BitJumpTables,523 FeatureFuseAddress,524 FeatureFuseAES,525 FeatureFuseCmpCSel,526 FeatureFuseAdrpAdd,527 FeatureFuseLiterals,528 FeatureStorePairSuppress,529 FeatureALULSLFast,530 FeaturePostRAScheduler,531 FeaturePredictableSelectIsExpensive]>;532 533// Re-uses some scheduling and tunings from the ExynosM3 proc family.534def TuneExynosM4 : SubtargetFeature<"exynosm4", "ARMProcFamily", "ExynosM3",535 "Samsung Exynos-M4 processors",536 [FeatureArithmeticBccFusion,537 FeatureArithmeticCbzFusion,538 FeatureExynosCheapAsMoveHandling,539 FeatureForce32BitJumpTables,540 FeatureFuseAddress,541 FeatureFuseAES,542 FeatureFuseArithmeticLogic,543 FeatureFuseCmpCSel,544 FeatureFuseAdrpAdd,545 FeatureFuseLiterals,546 FeatureStorePairSuppress,547 FeatureALULSLFast,548 FeaturePostRAScheduler,549 FeatureZCZeroingGPR32,550 FeatureZCZeroingGPR64]>;551 552def TuneKryo : SubtargetFeature<"kryo", "ARMProcFamily", "Kryo",553 "Qualcomm Kryo processors", [554 FeaturePostRAScheduler,555 FeaturePredictableSelectIsExpensive,556 FeatureZCZeroingGPR32,557 FeatureZCZeroingGPR64,558 FeatureALULSLFast,559 FeatureStorePairSuppress]>;560 561def TuneFalkor : SubtargetFeature<"falkor", "ARMProcFamily", "Falkor",562 "Qualcomm Falkor processors", [563 FeaturePostRAScheduler,564 FeaturePredictableSelectIsExpensive,565 FeatureZCZeroingGPR32,566 FeatureZCZeroingGPR64,567 FeatureStorePairSuppress,568 FeatureALULSLFast,569 FeatureSlowSTRQro]>;570 571def TuneNeoverseE1 : SubtargetFeature<"neoversee1", "ARMProcFamily", "NeoverseE1",572 "Neoverse E1 ARM processors", [573 FeatureFuseAES,574 FeatureFuseAdrpAdd,575 FeaturePostRAScheduler]>;576 577def TuneNeoverseN1 : SubtargetFeature<"neoversen1", "ARMProcFamily", "NeoverseN1",578 "Neoverse N1 ARM processors", [579 FeatureFuseAES,580 FeatureFuseAdrpAdd,581 FeatureAddrLSLSlow14,582 FeatureALULSLFast,583 FeaturePostRAScheduler,584 FeatureEnableSelectOptimize,585 FeaturePredictableSelectIsExpensive]>;586 587def TuneNeoverseN2 : SubtargetFeature<"neoversen2", "ARMProcFamily", "NeoverseN2",588 "Neoverse N2 ARM processors", [589 FeatureFuseAES,590 FeatureFuseAdrpAdd,591 FeatureFuseCmpCSel,592 FeatureFuseCmpCSet,593 FeatureALULSLFast,594 FeaturePostRAScheduler,595 FeatureEnableSelectOptimize,596 FeatureDisableMaximizeScalableBandwidth,597 FeaturePredictableSelectIsExpensive]>;598 599def TuneNeoverseN3 : SubtargetFeature<"neoversen3", "ARMProcFamily", "NeoverseN3",600 "Neoverse N3 ARM processors", [601 FeatureFuseAES,602 FeaturePostRAScheduler,603 FeatureALULSLFast,604 FeatureFuseAdrpAdd,605 FeatureFuseCmpCSel,606 FeatureFuseCmpCSet,607 FeatureEnableSelectOptimize,608 FeaturePredictableSelectIsExpensive]>;609 610def TuneNeoverse512TVB : SubtargetFeature<"neoverse512tvb", "ARMProcFamily", "Neoverse512TVB",611 "Neoverse 512-TVB ARM processors", [612 FeatureFuseAES,613 FeatureFuseAdrpAdd,614 FeatureALULSLFast,615 FeaturePostRAScheduler,616 FeatureEnableSelectOptimize,617 FeaturePredictableSelectIsExpensive]>;618 619def TuneNeoverseV1 : SubtargetFeature<"neoversev1", "ARMProcFamily", "NeoverseV1",620 "Neoverse V1 ARM processors", [621 FeatureFuseAES,622 FeatureFuseAdrpAdd,623 FeatureFuseCmpCSel,624 FeatureFuseCmpCSet,625 FeatureAddrLSLSlow14,626 FeatureALULSLFast,627 FeaturePostRAScheduler,628 FeatureEnableSelectOptimize,629 FeaturePredictableSelectIsExpensive,630 FeatureDisableMaximizeScalableBandwidth,631 FeatureNoSVEFPLD1R]>;632 633def TuneNeoverseV2 : SubtargetFeature<"neoversev2", "ARMProcFamily", "NeoverseV2",634 "Neoverse V2 ARM processors", [635 FeatureFuseAES,636 FeatureCmpBccFusion,637 FeatureFuseAdrpAdd,638 FeatureFuseCmpCSel,639 FeatureFuseCmpCSet,640 FeatureALULSLFast,641 FeaturePostRAScheduler,642 FeatureEnableSelectOptimize,643 FeatureUseFixedOverScalableIfEqualCost,644 FeatureAvoidLDAPUR,645 FeaturePredictableSelectIsExpensive,646 FeatureDisableLatencySchedHeuristic]>;647 648def TuneNeoverseV3 : SubtargetFeature<"neoversev3", "ARMProcFamily", "NeoverseV3",649 "Neoverse V3 ARM processors", [650 FeatureFuseAES,651 FeatureALULSLFast,652 FeatureFuseAdrpAdd,653 FeatureFuseCmpCSel,654 FeatureFuseCmpCSet,655 FeaturePostRAScheduler,656 FeatureEnableSelectOptimize,657 FeatureAvoidLDAPUR,658 FeaturePredictableSelectIsExpensive]>;659 660def TuneNeoverseV3AE : SubtargetFeature<"neoversev3AE", "ARMProcFamily", "NeoverseV3",661 "Neoverse V3AE ARM processors", [662 FeatureFuseAES,663 FeatureALULSLFast,664 FeatureFuseAdrpAdd,665 FeatureFuseCmpCSel,666 FeatureFuseCmpCSet,667 FeaturePostRAScheduler,668 FeatureEnableSelectOptimize,669 FeatureAvoidLDAPUR,670 FeaturePredictableSelectIsExpensive]>;671 672def TuneSaphira : SubtargetFeature<"saphira", "ARMProcFamily", "Saphira",673 "Qualcomm Saphira processors", [674 FeaturePostRAScheduler,675 FeaturePredictableSelectIsExpensive,676 FeatureZCZeroingGPR32,677 FeatureZCZeroingGPR64,678 FeatureStorePairSuppress,679 FeatureALULSLFast]>;680 681def TuneThunderX2T99 : SubtargetFeature<"thunderx2t99", "ARMProcFamily", "ThunderX2T99",682 "Cavium ThunderX2 processors", [683 FeatureAggressiveFMA,684 FeatureArithmeticBccFusion,685 FeaturePostRAScheduler,686 FeatureStorePairSuppress,687 FeaturePredictableSelectIsExpensive]>;688 689def TuneThunderX3T110 : SubtargetFeature<"thunderx3t110", "ARMProcFamily",690 "ThunderX3T110",691 "Marvell ThunderX3 processors", [692 FeatureAggressiveFMA,693 FeatureArithmeticBccFusion,694 FeaturePostRAScheduler,695 FeaturePredictableSelectIsExpensive,696 FeatureBalanceFPOps,697 FeatureStorePairSuppress,698 FeatureStrictAlign]>;699 700def TuneThunderX : SubtargetFeature<"thunderx", "ARMProcFamily", "ThunderX",701 "Cavium ThunderX processors", [702 FeaturePostRAScheduler,703 FeatureStorePairSuppress,704 FeaturePredictableSelectIsExpensive]>;705 706def TuneThunderXT88 : SubtargetFeature<"thunderxt88", "ARMProcFamily",707 "ThunderXT88",708 "Cavium ThunderX processors", [709 FeaturePostRAScheduler,710 FeatureStorePairSuppress,711 FeaturePredictableSelectIsExpensive]>;712 713def TuneThunderXT81 : SubtargetFeature<"thunderxt81", "ARMProcFamily",714 "ThunderXT81",715 "Cavium ThunderX processors", [716 FeaturePostRAScheduler,717 FeatureStorePairSuppress,718 FeaturePredictableSelectIsExpensive]>;719 720def TuneThunderXT83 : SubtargetFeature<"thunderxt83", "ARMProcFamily",721 "ThunderXT83",722 "Cavium ThunderX processors", [723 FeaturePostRAScheduler,724 FeatureStorePairSuppress,725 FeaturePredictableSelectIsExpensive]>;726 727def TuneTSV110 : SubtargetFeature<"tsv110", "ARMProcFamily", "TSV110",728 "HiSilicon TS-V110 processors", [729 FeatureFuseAES,730 FeatureStorePairSuppress,731 FeaturePostRAScheduler]>;732 733def TuneAmpere1 : SubtargetFeature<"ampere1", "ARMProcFamily", "Ampere1",734 "Ampere Computing Ampere-1 processors", [735 FeaturePostRAScheduler,736 FeatureFuseAES,737 FeatureFuseAdrpAdd,738 FeatureALULSLFast,739 FeatureAggressiveFMA,740 FeatureArithmeticBccFusion,741 FeatureCmpBccFusion,742 FeatureFuseAddress,743 FeatureFuseLiterals,744 FeatureStorePairSuppress,745 FeatureLdpAlignedOnly,746 FeatureStpAlignedOnly]>;747 748def TuneAmpere1A : SubtargetFeature<"ampere1a", "ARMProcFamily", "Ampere1A",749 "Ampere Computing Ampere-1A processors", [750 FeaturePostRAScheduler,751 FeatureFuseAES,752 FeatureFuseAdrpAdd,753 FeatureALULSLFast,754 FeatureAggressiveFMA,755 FeatureArithmeticBccFusion,756 FeatureCmpBccFusion,757 FeatureFuseAddress,758 FeatureFuseLiterals,759 FeatureFuseAddSub2RegAndConstOne,760 FeatureStorePairSuppress,761 FeatureLdpAlignedOnly,762 FeatureStpAlignedOnly]>;763 764def TuneAmpere1B : SubtargetFeature<"ampere1b", "ARMProcFamily", "Ampere1B",765 "Ampere Computing Ampere-1B processors", [766 FeaturePostRAScheduler,767 FeatureFuseAES,768 FeatureFuseAdrpAdd,769 FeatureALULSLFast,770 FeatureAggressiveFMA,771 FeatureArithmeticBccFusion,772 FeatureCmpBccFusion,773 FeatureFuseAddress,774 FeatureFuseLiterals,775 FeatureStorePairSuppress,776 FeatureEnableSelectOptimize,777 FeaturePredictableSelectIsExpensive,778 FeatureLdpAlignedOnly,779 FeatureStpAlignedOnly]>;780 781def TuneOryon : SubtargetFeature<"oryon-1", "ARMProcFamily",782 "Oryon",783 "Nuvia Inc Oryon processors", [784 FeatureSHA2,785 FeatureAES,786 FeatureFPARMv8,787 FeatureNEON,788 FeatureFuseAES,789 FeatureFuseAdrpAdd,790 FeatureEnableSelectOptimize,791 FeatureFuseCryptoEOR,792 FeatureFuseAddress,793 FeatureSM4,794 FeatureSHA2,795 FeatureSHA3,796 FeatureAES,797 FeatureFullFP16,798 FeatureFP16FML,799 FeaturePerfMon,800 FeatureSPE,801 FeaturePostRAScheduler,802 HasV8_6aOps]>;803 804def ProcessorFeatures {805 list<SubtargetFeature> A320 = [HasV9_2aOps, FeatureNEON, FeatureMTE,806 FeatureSVEBitPerm, FeatureFP16FML, FeatureFullFP16,807 FeatureETE, FeaturePerfMon, FeatureCCIDX,808 FeatureCCPP, FeatureComplxNum, FeatureCRC,809 FeatureDotProd, FeatureJS, FeatureLOR,810 FeatureLSE, FeaturePAN, FeaturePAN_RWV,811 FeaturePAuth, FeaturePsUAO, FeatureRAS,812 FeatureRDM, FeatureTRBE, FeatureVH,813 FeatureFlagM, FeaturePredRes, FeatureSB, FeatureSSBS,814 FeatureSVE, FeatureSVE2];815 list<SubtargetFeature> A53 = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES,816 FeatureFPARMv8, FeatureNEON, FeaturePerfMon];817 list<SubtargetFeature> A55 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,818 FeatureNEON, FeatureFullFP16, FeatureDotProd,819 FeatureRCPC, FeaturePerfMon, FeatureCRC,820 FeatureLSE, FeatureRAS, FeatureRDM];821 list<SubtargetFeature> A510 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon,822 FeatureMatMulInt8, FeatureBF16, FeatureAM,823 FeatureMTE, FeatureETE, FeatureSVEBitPerm,824 FeatureFP16FML,825 FeatureCCIDX,826 FeatureSB, FeaturePAuth, FeatureSSBS, FeatureSVE, FeatureSVE2,827 FeatureComplxNum, FeatureCRC, FeatureDotProd,828 FeatureFPARMv8,FeatureFullFP16, FeatureJS, FeatureLSE,829 FeatureRAS, FeatureRCPC, FeatureRDM, FeatureFPAC];830 list<SubtargetFeature> A520 = [HasV9_2aOps, FeaturePerfMon, FeatureAM,831 FeatureMTE, FeatureETE, FeatureSVEBitPerm,832 FeatureFP16FML,833 FeatureCCIDX,834 FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes,835 FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,836 FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS,837 FeatureNEON, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM,838 FeatureDotProd, FeatureFPAC];839 list<SubtargetFeature> A520AE = [HasV9_2aOps, FeaturePerfMon, FeatureAM,840 FeatureMTE, FeatureETE, FeatureSVEBitPerm,841 FeatureFP16FML,842 FeatureCCIDX,843 FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes,844 FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,845 FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS,846 FeatureNEON, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM,847 FeatureDotProd, FeatureFPAC];848 list<SubtargetFeature> A65 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,849 FeatureNEON, FeatureFullFP16, FeatureDotProd,850 FeatureRCPC, FeatureSSBS, FeatureRAS,851 FeaturePerfMon, FeatureCRC, FeatureLSE, FeatureRDM];852 list<SubtargetFeature> A76 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,853 FeatureNEON, FeatureFullFP16, FeatureDotProd,854 FeatureRCPC, FeatureSSBS, FeaturePerfMon,855 FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];856 list<SubtargetFeature> A77 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,857 FeatureNEON, FeatureFullFP16, FeatureDotProd,858 FeatureRCPC, FeaturePerfMon, FeatureSSBS,859 FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];860 list<SubtargetFeature> A78 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,861 FeatureNEON, FeatureFullFP16, FeatureDotProd,862 FeatureRCPC, FeaturePerfMon, FeatureSPE,863 FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];864 list<SubtargetFeature> A78AE = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,865 FeatureNEON, FeatureFullFP16, FeatureDotProd,866 FeatureRCPC, FeaturePerfMon, FeatureSPE,867 FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];868 list<SubtargetFeature> A78C = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,869 FeatureNEON, FeatureFullFP16, FeatureDotProd,870 FeatureFlagM, FeaturePAuth,871 FeaturePerfMon, FeatureRCPC, FeatureSPE,872 FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];873 list<SubtargetFeature> A710 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon,874 FeatureCCIDX, FeatureSSBS,875 FeatureETE, FeatureMTE, FeatureFP16FML,876 FeatureSVEBitPerm, FeatureBF16, FeatureMatMulInt8,877 FeaturePAuth, FeatureFlagM, FeatureSB, FeatureSVE, FeatureSVE2, FeatureFPAC,878 FeatureComplxNum, FeatureCRC, FeatureDotProd, FeatureFPARMv8,879 FeatureFullFP16, FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM];880 list<SubtargetFeature> A715 = [HasV9_0aOps, FeatureNEON, FeatureMTE,881 FeatureCCIDX,882 FeatureFP16FML, FeatureSVE, FeatureTRBE,883 FeatureSVEBitPerm, FeatureBF16, FeatureETE,884 FeaturePerfMon, FeatureMatMulInt8, FeatureSPE,885 FeatureSB, FeatureSSBS, FeatureFullFP16, FeaturePAuth, FeaturePredRes, FeatureFlagM,886 FeatureSVE2, FeatureComplxNum, FeatureCRC,887 FeatureDotProd, FeatureFPARMv8,888 FeatureJS, FeatureLSE, FeatureRAS,889 FeatureRCPC, FeatureRDM, FeatureFPAC];890 list<SubtargetFeature> A720 = [HasV9_2aOps, FeatureMTE, FeatureFP16FML,891 FeatureCCIDX,892 FeatureTRBE, FeatureSVEBitPerm, FeatureETE,893 FeaturePerfMon, FeatureSPE, FeatureSPE_EEF,894 FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes,895 FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,896 FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,897 FeatureJS, FeatureLSE, FeatureNEON, FeatureRAS,898 FeatureRCPC, FeatureRDM, FeatureFPAC];899 list<SubtargetFeature> A720AE = [HasV9_2aOps, FeatureMTE, FeatureFP16FML,900 FeatureCCIDX,901 FeatureTRBE, FeatureSVEBitPerm, FeatureETE,902 FeaturePerfMon, FeatureSPE, FeatureSPE_EEF,903 FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes,904 FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,905 FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,906 FeatureJS, FeatureLSE, FeatureNEON, FeatureRAS,907 FeatureRCPC, FeatureRDM, FeatureFPAC];908 list<SubtargetFeature> A725 = [HasV9_2aOps, FeatureMTE, FeatureFP16FML,909 FeatureCCIDX,910 FeatureETE, FeaturePerfMon, FeatureSPE,911 FeatureSVEBitPerm, FeatureSPE_EEF, FeatureTRBE,912 FeatureFlagM, FeaturePredRes, FeatureSB, FeatureSSBS,913 FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,914 FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,915 FeatureJS, FeatureLSE, FeatureNEON, FeaturePAuth, FeatureRAS,916 FeatureRCPC, FeatureRDM, FeatureFPAC];917 list<SubtargetFeature> R82 = [HasV8_0rOps, FeaturePerfMon, FeatureFullFP16,918 FeatureFP16FML, FeatureSSBS, FeaturePredRes,919 FeatureSB, FeatureRDM, FeatureDotProd,920 FeatureComplxNum, FeatureJS,921 FeatureCacheDeepPersist,922 FeatureFlagM, FeatureCRC, FeatureLSE, FeatureRAS, FeatureFPARMv8,923 FeatureNEON, FeaturePAuth, FeatureRCPC, FeatureFPAC];924 list<SubtargetFeature> R82AE = [HasV8_0rOps, FeaturePerfMon, FeatureFullFP16,925 FeatureFP16FML, FeatureSSBS, FeaturePredRes,926 FeatureSB, FeatureRDM, FeatureDotProd,927 FeatureComplxNum, FeatureJS,928 FeatureCacheDeepPersist,929 FeatureLSE, FeatureFlagM, FeatureCRC, FeatureFPARMv8, FeatureNEON,930 FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureFPAC];931 list<SubtargetFeature> X1 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,932 FeatureNEON, FeatureRCPC, FeaturePerfMon,933 FeatureSPE, FeatureFullFP16, FeatureDotProd,934 FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];935 list<SubtargetFeature> X1C = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,936 FeatureNEON, FeatureRCPC_IMMO, FeaturePerfMon,937 FeatureSPE, FeatureFullFP16, FeatureDotProd,938 FeaturePAuth, FeatureSSBS, FeatureFlagM,939 FeatureLSE2,940 FeatureRCPC, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];941 list<SubtargetFeature> X2 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon,942 FeatureMatMulInt8, FeatureBF16, FeatureAM,943 FeatureMTE, FeatureETE, FeatureSVEBitPerm,944 FeatureFP16FML,945 FeatureCCIDX,946 FeaturePAuth, FeatureSSBS, FeatureSB, FeatureSVE, FeatureSVE2, FeatureFlagM,947 FeatureComplxNum, FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureFullFP16,948 FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureFPAC];949 list<SubtargetFeature> X3 = [HasV9_0aOps, FeatureSVE, FeatureNEON,950 FeaturePerfMon, FeatureETE, FeatureTRBE,951 FeatureSPE, FeatureBF16, FeatureMatMulInt8,952 FeatureMTE, FeatureSVEBitPerm, FeatureFullFP16,953 FeatureFP16FML,954 FeatureCCIDX,955 FeatureSB, FeaturePAuth, FeaturePredRes, FeatureFlagM, FeatureSSBS,956 FeatureSVE2, FeatureComplxNum, FeatureCRC, FeatureFPARMv8, FeatureJS,957 FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureDotProd, FeatureFPAC];958 list<SubtargetFeature> X4 = [HasV9_2aOps,959 FeaturePerfMon, FeatureETE, FeatureTRBE,960 FeatureSPE, FeatureMTE, FeatureSVEBitPerm,961 FeatureFP16FML, FeatureSPE_EEF,962 FeatureCCIDX,963 FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes,964 FeatureSVE, FeatureSVE2, FeatureComplxNum, FeatureCRC, FeatureDotProd,965 FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS, FeatureLSE,966 FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureBF16, FeatureFPAC];967 list<SubtargetFeature> X925 = [HasV9_2aOps, FeatureMTE, FeatureFP16FML,968 FeatureCCIDX,969 FeatureETE, FeaturePerfMon, FeatureSPE,970 FeatureSVEBitPerm, FeatureSPE_EEF, FeatureTRBE,971 FeatureFlagM, FeaturePredRes, FeatureSB, FeatureSSBS,972 FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,973 FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,974 FeatureJS, FeatureLSE, FeatureNEON, FeaturePAuth, FeatureRAS,975 FeatureRCPC, FeatureRDM, FeatureFPAC];976 list<SubtargetFeature> A64FX = [HasV8_2aOps, FeatureFPARMv8, FeatureNEON,977 FeatureSHA2, FeaturePerfMon, FeatureFullFP16,978 FeatureSVE, FeatureComplxNum,979 FeatureAES, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];980 list<SubtargetFeature> MONAKA = [HasV9_3aOps, FeaturePerfMon, FeatureCCIDX,981 FeatureFPAC, FeatureFP16FML, FeatureRandGen,982 FeatureSSBS, FeatureLS64, FeatureCLRBHB,983 FeatureSPECRES2, FeatureSVEAES, FeatureSVESM4,984 FeatureSVESHA3, FeatureSVE2, FeatureSVEBitPerm, FeatureETE,985 FeatureMEC, FeatureFAMINMAX, FeatureFP8DOT2, FeatureFP8DOT4,986 FeatureFP8FMA, FeatureLUT];987 list<SubtargetFeature> Carmel = [HasV8_2aOps, FeatureNEON, FeatureSHA2, FeatureAES,988 FeatureFullFP16, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM,989 FeatureFPARMv8];990 list<SubtargetFeature> Olympus = [HasV9_2aOps, FeatureBRBE, FeatureCCIDX,991 FeatureCHK, FeatureETE, FeatureFAMINMAX,992 FeatureFP16FML, FeatureFP8DOT2,993 FeatureFP8DOT4, FeatureFP8FMA, FeatureFPAC,994 FeatureLS64, FeatureLUT, FeatureMEC,995 FeatureMTE, FeaturePerfMon, FeatureRandGen,996 FeatureSPE, FeatureSPE_EEF, FeatureSSBS,997 FeatureSVEBitPerm, FeatureSVESHA3,998 FeatureSVESM4, FeatureSVEAES, FeatureSVE2];999 list<SubtargetFeature> AppleA7 = [HasV8_0aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1000 FeatureNEON,FeaturePerfMon];1001 list<SubtargetFeature> AppleA10 = [HasV8_0aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1002 FeatureNEON, FeaturePerfMon, FeatureCRC,1003 FeatureRDM, FeaturePAN, FeatureLOR, FeatureVH];1004 list<SubtargetFeature> AppleA11 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1005 FeatureNEON, FeaturePerfMon, FeatureFullFP16, FeatureCRC,1006 FeatureLSE, FeatureRAS, FeatureRDM];1007 list<SubtargetFeature> AppleA12 = [HasV8_3aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1008 FeatureNEON, FeaturePerfMon, FeatureFullFP16,1009 FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE,1010 FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM];1011 list<SubtargetFeature> AppleA13 = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1012 FeatureNEON, FeaturePerfMon, FeatureFullFP16,1013 FeatureFP16FML, FeatureSHA3, FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE,1014 FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureDotProd];1015 list<SubtargetFeature> AppleA14 = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1016 FeatureNEON, FeaturePerfMon,1017 FeatureFullFP16, FeatureFP16FML, FeatureSHA3,1018 // ArmV8.5-a extensions, excluding BTI:1019 FeatureAltFPCmp, FeatureFRInt3264,1020 FeatureSpecRestrict, FeatureSSBS, FeatureSB,1021 FeaturePredRes, FeatureCacheDeepPersist,1022 FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE,1023 FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM,1024 FeatureDotProd];1025 list<SubtargetFeature> AppleA15 = [HasV8_6aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1026 FeatureNEON, FeaturePerfMon, FeatureSHA3,1027 FeatureFullFP16, FeatureFP16FML,1028 FeatureComplxNum, FeatureCRC, FeatureJS,1029 FeatureLSE, FeaturePAuth, FeatureFPAC,1030 FeatureRAS, FeatureRCPC, FeatureRDM,1031 FeatureBF16, FeatureDotProd, FeatureMatMulInt8, FeatureSSBS];1032 list<SubtargetFeature> AppleA16 = [HasV8_6aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1033 FeatureNEON, FeaturePerfMon, FeatureSHA3,1034 FeatureFullFP16, FeatureFP16FML,1035 FeatureHCX,1036 FeatureComplxNum, FeatureCRC, FeatureJS,1037 FeatureLSE, FeaturePAuth, FeatureFPAC,1038 FeatureRAS, FeatureRCPC, FeatureRDM,1039 FeatureBF16, FeatureDotProd, FeatureMatMulInt8, FeatureSSBS];1040 list<SubtargetFeature> AppleA17 = [HasV8_6aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1041 FeatureNEON, FeaturePerfMon, FeatureSHA3,1042 FeatureFullFP16, FeatureFP16FML,1043 FeatureHCX,1044 FeatureComplxNum, FeatureCRC, FeatureJS,1045 FeatureLSE, FeaturePAuth, FeatureFPAC,1046 FeatureRAS, FeatureRCPC, FeatureRDM,1047 FeatureBF16, FeatureDotProd, FeatureMatMulInt8, FeatureSSBS];1048 // Technically apple-m4 is v9.2a, but we can't use that here.1049 // Historically, llvm defined v9.0a as requiring SVE, but it's optional1050 // according to the Arm ARM, and not supported by the core. We decoupled the1051 // two in the clang driver and in the backend subtarget features, but it's1052 // still an issue in the clang frontend. v8.7a is the next closest choice.1053 list<SubtargetFeature> AppleM4 = [HasV8_7aOps, FeatureSHA2, FeatureFPARMv8,1054 FeatureNEON, FeaturePerfMon, FeatureSHA3,1055 FeatureFullFP16, FeatureFP16FML,1056 FeatureAES, FeatureBF16,1057 FeatureSME, FeatureSME2,1058 FeatureSMEF64F64, FeatureSMEI16I64,1059 FeatureComplxNum, FeatureCRC, FeatureJS,1060 FeatureLSE, FeaturePAuth, FeatureFPAC,1061 FeatureRAS, FeatureRCPC, FeatureRDM,1062 FeatureDotProd, FeatureMatMulInt8];1063 list<SubtargetFeature> ExynosM3 = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES,1064 FeaturePerfMon, FeatureNEON, FeatureFPARMv8];1065 list<SubtargetFeature> ExynosM4 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureDotProd,1066 FeatureFullFP16, FeaturePerfMon, FeatureCRC, FeatureFPARMv8,1067 FeatureLSE, FeatureNEON, FeatureRAS, FeatureRDM];1068 list<SubtargetFeature> Falkor = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES,1069 FeatureFPARMv8, FeatureNEON, FeaturePerfMon,1070 FeatureRDM];1071 list<SubtargetFeature> NeoverseE1 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureDotProd,1072 FeatureFPARMv8, FeatureFullFP16, FeatureNEON,1073 FeatureRCPC, FeatureSSBS, FeaturePerfMon, FeatureCRC,1074 FeatureLSE, FeatureRAS, FeatureRDM];1075 list<SubtargetFeature> NeoverseN1 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureDotProd,1076 FeatureFPARMv8, FeatureFullFP16, FeatureNEON,1077 FeatureRCPC, FeatureSPE, FeatureSSBS,1078 FeaturePerfMon, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];1079 list<SubtargetFeature> NeoverseN2 = [HasV9_0aOps, FeatureBF16, FeatureETE, FeatureFP16FML,1080 FeatureMatMulInt8, FeatureMTE, FeatureSVE2,1081 FeatureSVEBitPerm, FeatureTRBE,1082 FeaturePerfMon,1083 FeatureCCIDX,1084 FeatureDotProd, FeatureFullFP16, FeatureSB, FeatureSSBS, FeatureSVE,1085 FeatureComplxNum, FeatureCRC, FeatureFPARMv8, FeatureJS, FeatureLSE,1086 FeatureNEON, FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureFPAC];1087 list<SubtargetFeature> NeoverseN3 = [HasV9_2aOps, FeatureETE, FeatureFP16FML,1088 FeatureFullFP16, FeatureMTE, FeaturePerfMon,1089 FeatureRandGen, FeatureSPE, FeatureSPE_EEF,1090 FeatureSVEBitPerm,1091 FeatureCCIDX,1092 FeatureSSBS, FeatureSB, FeaturePredRes, FeaturePAuth, FeatureFlagM,1093 FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum,1094 FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8,1095 FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM,1096 FeatureNEON, FeatureFPAC];1097 list<SubtargetFeature> Neoverse512TVB = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist,1098 FeatureSHA2, FeatureAES, FeatureFPARMv8, FeatureFP16FML,1099 FeatureFullFP16, FeatureMatMulInt8, FeatureNEON,1100 FeaturePerfMon, FeatureRandGen, FeatureSPE,1101 FeatureSSBS, FeatureSVE,1102 FeatureCCIDX,1103 FeatureSHA3, FeatureSM4, FeatureDotProd, FeatureComplxNum,1104 FeatureCRC, FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS,1105 FeatureRCPC, FeatureRDM, FeatureFPAC];1106 list<SubtargetFeature> NeoverseV1 = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist,1107 FeatureSHA2, FeatureAES, FeatureFPARMv8, FeatureFP16FML,1108 FeatureFullFP16, FeatureMatMulInt8, FeatureNEON,1109 FeaturePerfMon, FeatureRandGen, FeatureSPE,1110 FeatureSSBS, FeatureSVE,1111 FeatureCCIDX,1112 FeatureSHA3, FeatureSM4, FeatureDotProd, FeatureComplxNum,1113 FeatureCRC, FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS,1114 FeatureRCPC, FeatureRDM];1115 list<SubtargetFeature> NeoverseV2 = [HasV9_0aOps, FeatureBF16, FeatureSPE,1116 FeaturePerfMon, FeatureETE, FeatureMatMulInt8,1117 FeatureNEON, FeatureSVEBitPerm, FeatureFP16FML,1118 FeatureMTE, FeatureRandGen,1119 FeatureCCIDX,1120 FeatureSVE, FeatureSVE2, FeatureSSBS, FeatureFullFP16, FeatureDotProd,1121 FeatureComplxNum, FeatureCRC, FeatureFPARMv8, FeatureJS, FeatureLSE,1122 FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureFPAC];1123 list<SubtargetFeature> NeoverseV3 = [HasV9_2aOps, FeatureETE, FeatureFP16FML,1124 FeatureFullFP16, FeatureLS64, FeatureMTE,1125 FeaturePerfMon, FeatureRandGen, FeatureSPE,1126 FeatureCCIDX,1127 FeatureSPE_EEF, FeatureSVEBitPerm, FeatureBRBE,1128 FeatureSSBS, FeatureSB, FeaturePredRes, FeaturePAuth, FeatureFlagM,1129 FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,1130 FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS, FeatureLSE,1131 FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureRME, FeatureFPAC];1132 list<SubtargetFeature> NeoverseV3AE = [HasV9_2aOps, FeatureETE, FeatureFP16FML,1133 FeatureFullFP16, FeatureLS64, FeatureMTE,1134 FeaturePerfMon, FeatureRandGen, FeatureSPE,1135 FeatureSPE_EEF, FeatureSVEBitPerm, FeatureBRBE,1136 FeatureSSBS, FeatureSB, FeaturePredRes, FeaturePAuth, FeatureFlagM,1137 FeatureCCIDX,1138 FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,1139 FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS,1140 FeatureLSE, FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM,1141 FeatureRME, FeatureFPAC];1142 list<SubtargetFeature> Saphira = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1143 FeatureNEON, FeatureSPE, FeaturePerfMon, FeatureCRC,1144 FeatureCCIDX,1145 FeatureLSE, FeatureRDM, FeatureRAS, FeatureRCPC];1146 list<SubtargetFeature> ThunderX = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES,1147 FeatureFPARMv8, FeaturePerfMon, FeatureNEON];1148 list<SubtargetFeature> ThunderX2T99 = [HasV8_1aOps, FeatureCRC, FeatureSHA2, FeatureAES,1149 FeatureFPARMv8, FeatureNEON, FeatureLSE,1150 FeatureRDM];1151 list<SubtargetFeature> ThunderX3T110 = [HasV8_3aOps, FeatureCRC, FeatureSHA2, FeatureAES,1152 FeatureFPARMv8, FeatureNEON, FeatureLSE,1153 FeatureCCIDX,1154 FeaturePAuth, FeaturePerfMon, FeatureComplxNum,1155 FeatureJS, FeatureRAS, FeatureRCPC, FeatureRDM];1156 list<SubtargetFeature> TSV110 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,1157 FeatureNEON, FeaturePerfMon, FeatureSPE,1158 FeatureFullFP16, FeatureFP16FML, FeatureDotProd,1159 FeatureJS, FeatureComplxNum, FeatureCRC, FeatureLSE,1160 FeatureRAS, FeatureRDM];1161 list<SubtargetFeature> Ampere1 = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,1162 FeatureSSBS, FeatureRandGen, FeatureSB,1163 FeatureSHA2, FeatureSHA3, FeatureAES,1164 FeatureFullFP16, FeatureBF16, FeatureComplxNum, FeatureCRC,1165 FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS,1166 FeatureCCIDX,1167 FeatureLSE, FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM];1168 list<SubtargetFeature> Ampere1A = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,1169 FeatureMTE, FeatureSSBS, FeatureRandGen,1170 FeatureSB, FeatureSM4, FeatureSHA2,1171 FeatureSHA3, FeatureAES,1172 FeatureFullFP16, FeatureBF16, FeatureComplxNum,1173 FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8,1174 FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS, FeatureRCPC,1175 FeatureCCIDX,1176 FeatureRDM];1177 list<SubtargetFeature> Ampere1B = [HasV8_7aOps, FeatureNEON, FeaturePerfMon,1178 FeatureMTE, FeatureSSBS, FeatureRandGen,1179 FeatureSB, FeatureSM4, FeatureSHA2,1180 FeatureSHA3, FeatureAES, FeatureCSSC,1181 FeatureWFxT, FeatureFullFP16, FeatureBF16, FeatureComplxNum,1182 FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8,1183 FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS, FeatureRCPC,1184 FeatureCCIDX,1185 FeatureRDM];1186 list<SubtargetFeature> Oryon = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,1187 FeatureRandGen,1188 FeaturePAuth, FeatureSM4, FeatureSHA2,1189 FeatureSHA3, FeatureAES,1190 FeatureSPE, FeatureBF16, FeatureComplxNum, FeatureCRC,1191 FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8,1192 FeatureSSBS, FeatureCCIDX,1193 FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM];1194 list<SubtargetFeature> GB10 = !listconcat(X925, [FeatureSVEAES, FeatureSVESHA3, FeatureSVESM4]);1195 list<SubtargetFeature> Grace = !listconcat(NeoverseV2, [FeatureSVESM4, FeatureSVEAES, FeatureSVESHA3]);1196 1197 // ETE and TRBE are future architecture extensions. We temporarily enable them1198 // by default for users targeting generic AArch64. The extensions do not1199 // affect code generated by the compiler and can be used only by explicitly1200 // mentioning the new system register names in assembly.1201 list<SubtargetFeature> Generic = [FeatureFPARMv8, FeatureNEON, FeatureETE];1202}1203 1204// Define an alternative name for a given Processor.1205class ProcessorAlias<string n, string alias> {1206 string Name = n;1207 string Alias = alias;1208}1209 1210// FeatureFuseAdrpAdd is enabled under Generic to allow linker merging1211// optimizations.1212def : ProcessorModel<"generic", CortexA510Model, ProcessorFeatures.Generic,1213 [FeatureFuseAES, FeatureFuseAdrpAdd, FeaturePostRAScheduler,1214 FeatureEnableSelectOptimize]>;1215def : ProcessorModel<"cortex-a34", CortexA53Model, ProcessorFeatures.A53,1216 [TuneA35]>;1217def : ProcessorModel<"cortex-a35", CortexA53Model, ProcessorFeatures.A53,1218 [TuneA35]>;1219def : ProcessorModel<"cortex-a320", CortexA320Model, ProcessorFeatures.A320,1220 [TuneA320]>;1221def : ProcessorModel<"cortex-a53", CortexA53Model, ProcessorFeatures.A53,1222 [TuneA53]>;1223def : ProcessorModel<"cortex-a55", CortexA55Model, ProcessorFeatures.A55,1224 [TuneA55]>;1225def : ProcessorModel<"cortex-a510", CortexA510Model, ProcessorFeatures.A510,1226 [TuneA510]>;1227def : ProcessorModel<"cortex-a520", CortexA510Model, ProcessorFeatures.A520,1228 [TuneA520]>;1229def : ProcessorModel<"cortex-a520ae", CortexA510Model, ProcessorFeatures.A520AE,1230 [TuneA520AE]>;1231def : ProcessorModel<"cortex-a57", CortexA57Model, ProcessorFeatures.A53,1232 [TuneA57]>;1233def : ProcessorModel<"cortex-a65", CortexA53Model, ProcessorFeatures.A65,1234 [TuneA65]>;1235def : ProcessorModel<"cortex-a65ae", CortexA53Model, ProcessorFeatures.A65,1236 [TuneA65]>;1237def : ProcessorModel<"cortex-a72", CortexA57Model, ProcessorFeatures.A53,1238 [TuneA72]>;1239def : ProcessorModel<"cortex-a73", CortexA57Model, ProcessorFeatures.A53,1240 [TuneA73]>;1241def : ProcessorModel<"cortex-a75", CortexA57Model, ProcessorFeatures.A55,1242 [TuneA75]>;1243def : ProcessorModel<"cortex-a76", CortexA57Model, ProcessorFeatures.A76,1244 [TuneA76]>;1245def : ProcessorModel<"cortex-a76ae", CortexA57Model, ProcessorFeatures.A76,1246 [TuneA76]>;1247def : ProcessorModel<"cortex-a77", CortexA57Model, ProcessorFeatures.A77,1248 [TuneA77]>;1249def : ProcessorModel<"cortex-a78", CortexA57Model, ProcessorFeatures.A78,1250 [TuneA78]>;1251def : ProcessorModel<"cortex-a78ae", CortexA57Model, ProcessorFeatures.A78AE,1252 [TuneA78AE]>;1253def : ProcessorModel<"cortex-a78c", CortexA57Model, ProcessorFeatures.A78C,1254 [TuneA78C]>;1255def : ProcessorModel<"cortex-a710", NeoverseN2Model, ProcessorFeatures.A710,1256 [TuneA710]>;1257def : ProcessorModel<"cortex-a715", NeoverseN2Model, ProcessorFeatures.A715,1258 [TuneA715]>;1259def : ProcessorModel<"cortex-a720", NeoverseN2Model, ProcessorFeatures.A720,1260 [TuneA720]>;1261def : ProcessorModel<"cortex-a720ae", NeoverseN2Model, ProcessorFeatures.A720AE,1262 [TuneA720AE]>;1263def : ProcessorModel<"cortex-a725", NeoverseN3Model, ProcessorFeatures.A725,1264 [TuneA725]>;1265def : ProcessorModel<"cortex-r82", CortexA55Model, ProcessorFeatures.R82,1266 [TuneR82]>;1267def : ProcessorModel<"cortex-r82ae", CortexA55Model, ProcessorFeatures.R82AE,1268 [TuneR82AE]>;1269def : ProcessorModel<"cortex-x1", NeoverseV1Model, ProcessorFeatures.X1,1270 [TuneX1]>;1271def : ProcessorModel<"cortex-x1c", NeoverseV1Model, ProcessorFeatures.X1C,1272 [TuneX1]>;1273def : ProcessorModel<"cortex-x2", NeoverseV2Model, ProcessorFeatures.X2,1274 [TuneX2]>;1275def : ProcessorModel<"cortex-x3", NeoverseV2Model, ProcessorFeatures.X3,1276 [TuneX3]>;1277def : ProcessorModel<"cortex-x4", NeoverseV3Model, ProcessorFeatures.X4,1278 [TuneX4]>;1279def : ProcessorModel<"cortex-x925", NeoverseV3Model, ProcessorFeatures.X925,1280 [TuneX925]>;1281def : ProcessorModel<"gb10", NeoverseV3Model, ProcessorFeatures.GB10,1282 [TuneX925]>;1283def : ProcessorModel<"grace", NeoverseV2Model, ProcessorFeatures.Grace,1284 [TuneNeoverseV2]>;1285def : ProcessorModel<"neoverse-e1", CortexA53Model,1286 ProcessorFeatures.NeoverseE1, [TuneNeoverseE1]>;1287def : ProcessorModel<"neoverse-n1", NeoverseN1Model,1288 ProcessorFeatures.NeoverseN1, [TuneNeoverseN1]>;1289def : ProcessorModel<"neoverse-n2", NeoverseN2Model,1290 ProcessorFeatures.NeoverseN2, [TuneNeoverseN2]>;1291def : ProcessorAlias<"cobalt-100", "neoverse-n2">;1292def : ProcessorModel<"neoverse-n3", NeoverseN3Model,1293 ProcessorFeatures.NeoverseN3, [TuneNeoverseN3]>;1294def : ProcessorModel<"neoverse-512tvb", NeoverseV1Model,1295 ProcessorFeatures.Neoverse512TVB, [TuneNeoverse512TVB]>;1296def : ProcessorModel<"neoverse-v1", NeoverseV1Model,1297 ProcessorFeatures.NeoverseV1, [TuneNeoverseV1]>;1298def : ProcessorModel<"neoverse-v2", NeoverseV2Model,1299 ProcessorFeatures.NeoverseV2, [TuneNeoverseV2]>;1300def : ProcessorModel<"neoverse-v3", NeoverseV3Model,1301 ProcessorFeatures.NeoverseV3, [TuneNeoverseV3]>;1302def : ProcessorModel<"neoverse-v3ae", NeoverseV3AEModel,1303 ProcessorFeatures.NeoverseV3AE, [TuneNeoverseV3AE]>;1304def : ProcessorModel<"exynos-m3", ExynosM3Model, ProcessorFeatures.ExynosM3,1305 [TuneExynosM3]>;1306def : ProcessorModel<"exynos-m4", ExynosM4Model, ProcessorFeatures.ExynosM4,1307 [TuneExynosM4]>;1308def : ProcessorModel<"exynos-m5", ExynosM5Model, ProcessorFeatures.ExynosM4,1309 [TuneExynosM4]>;1310def : ProcessorModel<"falkor", FalkorModel, ProcessorFeatures.Falkor,1311 [TuneFalkor]>;1312def : ProcessorModel<"saphira", FalkorModel, ProcessorFeatures.Saphira,1313 [TuneSaphira]>;1314def : ProcessorModel<"kryo", KryoModel, ProcessorFeatures.A53, [TuneKryo]>;1315 1316// Cavium ThunderX/ThunderX T8X Processors1317def : ProcessorModel<"thunderx", ThunderXT8XModel, ProcessorFeatures.ThunderX,1318 [TuneThunderX]>;1319def : ProcessorModel<"thunderxt88", ThunderXT8XModel,1320 ProcessorFeatures.ThunderX, [TuneThunderXT88]>;1321def : ProcessorModel<"thunderxt81", ThunderXT8XModel,1322 ProcessorFeatures.ThunderX, [TuneThunderXT81]>;1323def : ProcessorModel<"thunderxt83", ThunderXT8XModel,1324 ProcessorFeatures.ThunderX, [TuneThunderXT83]>;1325// Cavium ThunderX2T9X Processors. Formerly Broadcom Vulcan.1326def : ProcessorModel<"thunderx2t99", ThunderX2T99Model,1327 ProcessorFeatures.ThunderX2T99, [TuneThunderX2T99]>;1328// Marvell ThunderX3T110 Processors.1329def : ProcessorModel<"thunderx3t110", ThunderX3T110Model,1330 ProcessorFeatures.ThunderX3T110, [TuneThunderX3T110]>;1331def : ProcessorModel<"tsv110", TSV110Model, ProcessorFeatures.TSV110,1332 [TuneTSV110]>;1333 1334 1335// Apple CPUs1336 1337def : ProcessorModel<"apple-a7", CycloneModel, ProcessorFeatures.AppleA7,1338 [TuneAppleA7]>;1339// Support cyclone as an alias for apple-a7 so we can still LTO old bitcode.1340def : ProcessorAlias<"cyclone", "apple-a7">;1341def : ProcessorAlias<"apple-a8", "apple-a7">;1342def : ProcessorAlias<"apple-a9", "apple-a7">;1343 1344def : ProcessorModel<"apple-a10", CycloneModel, ProcessorFeatures.AppleA10,1345 [TuneAppleA10]>;1346 1347def : ProcessorModel<"apple-a11", CycloneModel, ProcessorFeatures.AppleA11,1348 [TuneAppleA11]>;1349 1350def : ProcessorModel<"apple-a12", CycloneModel, ProcessorFeatures.AppleA12,1351 [TuneAppleA12]>;1352def : ProcessorAlias<"apple-s4", "apple-a12">;1353def : ProcessorAlias<"apple-s5", "apple-a12">;1354 1355def : ProcessorModel<"apple-a13", CycloneModel, ProcessorFeatures.AppleA13,1356 [TuneAppleA13]>;1357def : ProcessorAlias<"apple-s6", "apple-a13">;1358def : ProcessorAlias<"apple-s7", "apple-a13">;1359def : ProcessorAlias<"apple-s8", "apple-a13">;1360 1361def : ProcessorModel<"apple-a14", CycloneModel, ProcessorFeatures.AppleA14,1362 [TuneAppleA14]>;1363def : ProcessorAlias<"apple-m1", "apple-a14">;1364 1365def : ProcessorModel<"apple-a15", CycloneModel, ProcessorFeatures.AppleA15,1366 [TuneAppleA15]>;1367def : ProcessorAlias<"apple-m2", "apple-a15">;1368 1369def : ProcessorModel<"apple-a16", CycloneModel, ProcessorFeatures.AppleA16,1370 [TuneAppleA16]>;1371def : ProcessorAlias<"apple-m3", "apple-a16">;1372def : ProcessorAlias<"apple-s9", "apple-a16">;1373def : ProcessorAlias<"apple-s10", "apple-a16">;1374 1375def : ProcessorModel<"apple-a17", CycloneModel, ProcessorFeatures.AppleA17,1376 [TuneAppleA17]>;1377 1378def : ProcessorModel<"apple-m4", CycloneModel, ProcessorFeatures.AppleM4,1379 [TuneAppleM4]>;1380def : ProcessorAlias<"apple-a18", "apple-m4">;1381 1382// Alias for the latest Apple processor model supported by LLVM.1383def : ProcessorAlias<"apple-latest", "apple-m4">;1384 1385 1386// Fujitsu A64FX1387def : ProcessorModel<"a64fx", A64FXModel, ProcessorFeatures.A64FX,1388 [TuneA64FX]>;1389 1390// Fujitsu FUJITSU-MONAKA1391def : ProcessorModel<"fujitsu-monaka", A64FXModel, ProcessorFeatures.MONAKA,1392 [TuneMONAKA]>;1393 1394// Nvidia Carmel1395def : ProcessorModel<"carmel", NoSchedModel, ProcessorFeatures.Carmel,1396 [TuneCarmel]>;1397 1398// NVIDIA Olympus1399def : ProcessorModel<"olympus", NeoverseV2Model, ProcessorFeatures.Olympus,1400 [TuneOlympus]>;1401 1402// Ampere Computing1403def : ProcessorModel<"ampere1", Ampere1Model, ProcessorFeatures.Ampere1,1404 [TuneAmpere1]>;1405 1406def : ProcessorModel<"ampere1a", Ampere1Model, ProcessorFeatures.Ampere1A,1407 [TuneAmpere1A]>;1408 1409def : ProcessorModel<"ampere1b", Ampere1BModel, ProcessorFeatures.Ampere1B,1410 [TuneAmpere1B]>;1411 1412// Qualcomm Oryon1413def : ProcessorModel<"oryon-1", OryonModel, ProcessorFeatures.Oryon,1414 [TuneOryon]>;1415