brintos

brintos / llvm-project-archived public Read only

0
0
Text · 85.1 KiB · 120415f Raw
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