10fca6ea1SDimitry Andric//=- AArch64Processors.td - Describe AArch64 Processors ------*- tablegen -*-=// 20fca6ea1SDimitry Andric// 30fca6ea1SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40fca6ea1SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 50fca6ea1SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60fca6ea1SDimitry Andric// 70fca6ea1SDimitry Andric//===----------------------------------------------------------------------===// 80fca6ea1SDimitry Andric// 90fca6ea1SDimitry Andric// 100fca6ea1SDimitry Andric//===----------------------------------------------------------------------===// 110fca6ea1SDimitry Andric 120fca6ea1SDimitry Andric//===----------------------------------------------------------------------===// 130fca6ea1SDimitry Andric// AArch64 Processor subtarget features. 140fca6ea1SDimitry Andric//===----------------------------------------------------------------------===// 150fca6ea1SDimitry Andric 160fca6ea1SDimitry Andric 170fca6ea1SDimitry Andricdef TuneA35 : SubtargetFeature<"a35", "ARMProcFamily", "CortexA35", 180fca6ea1SDimitry Andric "Cortex-A35 ARM processors">; 190fca6ea1SDimitry Andric 200fca6ea1SDimitry Andricdef TuneA53 : SubtargetFeature<"a53", "ARMProcFamily", "CortexA53", 210fca6ea1SDimitry Andric "Cortex-A53 ARM processors", [ 220fca6ea1SDimitry Andric FeatureFuseAES, 230fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 240fca6ea1SDimitry Andric FeatureBalanceFPOps, 250fca6ea1SDimitry Andric FeaturePostRAScheduler]>; 260fca6ea1SDimitry Andric 270fca6ea1SDimitry Andricdef TuneA55 : SubtargetFeature<"a55", "ARMProcFamily", "CortexA55", 280fca6ea1SDimitry Andric "Cortex-A55 ARM processors", [ 290fca6ea1SDimitry Andric FeatureFuseAES, 300fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 310fca6ea1SDimitry Andric FeaturePostRAScheduler, 320fca6ea1SDimitry Andric FeatureFuseAddress]>; 330fca6ea1SDimitry Andric 340fca6ea1SDimitry Andricdef TuneA510 : SubtargetFeature<"a510", "ARMProcFamily", "CortexA510", 350fca6ea1SDimitry Andric "Cortex-A510 ARM processors", [ 360fca6ea1SDimitry Andric FeatureFuseAES, 370fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 380fca6ea1SDimitry Andric FeaturePostRAScheduler 390fca6ea1SDimitry Andric ]>; 400fca6ea1SDimitry Andric 410fca6ea1SDimitry Andricdef TuneA520 : SubtargetFeature<"a520", "ARMProcFamily", "CortexA520", 420fca6ea1SDimitry Andric "Cortex-A520 ARM processors", [ 430fca6ea1SDimitry Andric FeatureFuseAES, 440fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 450fca6ea1SDimitry Andric FeaturePostRAScheduler]>; 460fca6ea1SDimitry Andric 470fca6ea1SDimitry Andricdef TuneA520AE : SubtargetFeature<"a520ae", "ARMProcFamily", "CortexA520", 480fca6ea1SDimitry Andric "Cortex-A520AE ARM processors", [ 490fca6ea1SDimitry Andric FeatureFuseAES, 500fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 510fca6ea1SDimitry Andric FeaturePostRAScheduler]>; 520fca6ea1SDimitry Andric 530fca6ea1SDimitry Andricdef TuneA57 : SubtargetFeature<"a57", "ARMProcFamily", "CortexA57", 540fca6ea1SDimitry Andric "Cortex-A57 ARM processors", [ 550fca6ea1SDimitry Andric FeatureFuseAES, 560fca6ea1SDimitry Andric FeatureBalanceFPOps, 570fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 580fca6ea1SDimitry Andric FeatureFuseLiterals, 590fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 600fca6ea1SDimitry Andric FeaturePostRAScheduler, 610fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 620fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 630fca6ea1SDimitry Andric 640fca6ea1SDimitry Andricdef TuneA65 : SubtargetFeature<"a65", "ARMProcFamily", "CortexA65", 650fca6ea1SDimitry Andric "Cortex-A65 ARM processors", [ 660fca6ea1SDimitry Andric FeatureFuseAES, 670fca6ea1SDimitry Andric FeatureFuseAddress, 680fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 690fca6ea1SDimitry Andric FeatureFuseLiterals, 700fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 710fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 720fca6ea1SDimitry Andric 730fca6ea1SDimitry Andricdef TuneA72 : SubtargetFeature<"a72", "ARMProcFamily", "CortexA72", 740fca6ea1SDimitry Andric "Cortex-A72 ARM processors", [ 750fca6ea1SDimitry Andric FeatureFuseAES, 760fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 770fca6ea1SDimitry Andric FeatureFuseLiterals, 780fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 790fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 800fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 810fca6ea1SDimitry Andric 820fca6ea1SDimitry Andricdef TuneA73 : SubtargetFeature<"a73", "ARMProcFamily", "CortexA73", 830fca6ea1SDimitry Andric "Cortex-A73 ARM processors", [ 840fca6ea1SDimitry Andric FeatureFuseAES, 850fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 860fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 870fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 880fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 890fca6ea1SDimitry Andric 900fca6ea1SDimitry Andricdef TuneA75 : SubtargetFeature<"a75", "ARMProcFamily", "CortexA75", 910fca6ea1SDimitry Andric "Cortex-A75 ARM processors", [ 920fca6ea1SDimitry Andric FeatureFuseAES, 930fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 940fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 950fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 960fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 970fca6ea1SDimitry Andric 980fca6ea1SDimitry Andricdef TuneA76 : SubtargetFeature<"a76", "ARMProcFamily", "CortexA76", 990fca6ea1SDimitry Andric "Cortex-A76 ARM processors", [ 1000fca6ea1SDimitry Andric FeatureFuseAES, 1010fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 1020fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 1030fca6ea1SDimitry Andric FeatureALULSLFast, 1040fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 1050fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 1060fca6ea1SDimitry Andric 1070fca6ea1SDimitry Andricdef TuneA77 : SubtargetFeature<"a77", "ARMProcFamily", "CortexA77", 1080fca6ea1SDimitry Andric "Cortex-A77 ARM processors", [ 1090fca6ea1SDimitry Andric FeatureCmpBccFusion, 1100fca6ea1SDimitry Andric FeatureFuseAES, 1110fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 1120fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 1130fca6ea1SDimitry Andric FeatureALULSLFast, 1140fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 1150fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 1160fca6ea1SDimitry Andric 1170fca6ea1SDimitry Andricdef TuneA78 : SubtargetFeature<"a78", "ARMProcFamily", "CortexA78", 1180fca6ea1SDimitry Andric "Cortex-A78 ARM processors", [ 1190fca6ea1SDimitry Andric FeatureCmpBccFusion, 1200fca6ea1SDimitry Andric FeatureFuseAES, 1210fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 1220fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 1230fca6ea1SDimitry Andric FeatureALULSLFast, 1240fca6ea1SDimitry Andric FeaturePostRAScheduler, 1250fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 1260fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 1270fca6ea1SDimitry Andric 1280fca6ea1SDimitry Andricdef TuneA78AE : SubtargetFeature<"a78ae", "ARMProcFamily", 1290fca6ea1SDimitry Andric "CortexA78AE", 1300fca6ea1SDimitry Andric "Cortex-A78AE ARM processors", [ 1310fca6ea1SDimitry Andric FeatureCmpBccFusion, 1320fca6ea1SDimitry Andric FeatureFuseAES, 1330fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 1340fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 1350fca6ea1SDimitry Andric FeatureALULSLFast, 1360fca6ea1SDimitry Andric FeaturePostRAScheduler, 1370fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 1380fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 1390fca6ea1SDimitry Andric 1400fca6ea1SDimitry Andricdef TuneA78C : SubtargetFeature<"a78c", "ARMProcFamily", 1410fca6ea1SDimitry Andric "CortexA78C", 1420fca6ea1SDimitry Andric "Cortex-A78C ARM processors", [ 1430fca6ea1SDimitry Andric FeatureCmpBccFusion, 1440fca6ea1SDimitry Andric FeatureFuseAES, 1450fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 1460fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 1470fca6ea1SDimitry Andric FeatureALULSLFast, 1480fca6ea1SDimitry Andric FeaturePostRAScheduler, 1490fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 1500fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 1510fca6ea1SDimitry Andric 1520fca6ea1SDimitry Andricdef TuneA710 : SubtargetFeature<"a710", "ARMProcFamily", "CortexA710", 1530fca6ea1SDimitry Andric "Cortex-A710 ARM processors", [ 1540fca6ea1SDimitry Andric FeatureCmpBccFusion, 1550fca6ea1SDimitry Andric FeatureFuseAES, 1560fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 1570fca6ea1SDimitry Andric FeatureALULSLFast, 1580fca6ea1SDimitry Andric FeaturePostRAScheduler, 1590fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 1600fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 1610fca6ea1SDimitry Andric 1620fca6ea1SDimitry Andricdef TuneA715 : SubtargetFeature<"a715", "ARMProcFamily", "CortexA715", 1630fca6ea1SDimitry Andric "Cortex-A715 ARM processors", [ 1640fca6ea1SDimitry Andric FeatureFuseAES, 1650fca6ea1SDimitry Andric FeaturePostRAScheduler, 1660fca6ea1SDimitry Andric FeatureCmpBccFusion, 1670fca6ea1SDimitry Andric FeatureALULSLFast, 1680fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 1690fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 1700fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 1710fca6ea1SDimitry Andric 1720fca6ea1SDimitry Andricdef TuneA720 : SubtargetFeature<"a720", "ARMProcFamily", "CortexA720", 1730fca6ea1SDimitry Andric "Cortex-A720 ARM processors", [ 1740fca6ea1SDimitry Andric FeatureFuseAES, 1750fca6ea1SDimitry Andric FeaturePostRAScheduler, 1760fca6ea1SDimitry Andric FeatureCmpBccFusion, 1770fca6ea1SDimitry Andric FeatureALULSLFast, 1780fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 1790fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 1800fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 1810fca6ea1SDimitry Andric 1820fca6ea1SDimitry Andricdef TuneA720AE : SubtargetFeature<"a720ae", "ARMProcFamily", "CortexA720", 1830fca6ea1SDimitry Andric "Cortex-A720AE ARM processors", [ 1840fca6ea1SDimitry Andric FeatureFuseAES, 1850fca6ea1SDimitry Andric FeaturePostRAScheduler, 1860fca6ea1SDimitry Andric FeatureCmpBccFusion, 1870fca6ea1SDimitry Andric FeatureALULSLFast, 1880fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 1890fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 1900fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 1910fca6ea1SDimitry Andric 1920fca6ea1SDimitry Andricdef TuneA725 : SubtargetFeature<"cortex-a725", "ARMProcFamily", 1930fca6ea1SDimitry Andric "CortexA725", 1940fca6ea1SDimitry Andric "Cortex-A725 ARM processors", [ 1950fca6ea1SDimitry Andric FeatureFuseAES, 1960fca6ea1SDimitry Andric FeaturePostRAScheduler, 1970fca6ea1SDimitry Andric FeatureCmpBccFusion, 1980fca6ea1SDimitry Andric FeatureALULSLFast, 1990fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 2000fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 2010fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 2020fca6ea1SDimitry Andric 2030fca6ea1SDimitry Andricdef TuneR82 : SubtargetFeature<"cortex-r82", "ARMProcFamily", 2040fca6ea1SDimitry Andric "CortexR82", 2050fca6ea1SDimitry Andric "Cortex-R82 ARM processors", [ 2060fca6ea1SDimitry Andric FeaturePostRAScheduler]>; 2070fca6ea1SDimitry Andric 2080fca6ea1SDimitry Andricdef TuneR82AE : SubtargetFeature<"cortex-r82ae", "ARMProcFamily", 2090fca6ea1SDimitry Andric "CortexR82AE", 2100fca6ea1SDimitry Andric "Cortex-R82-AE ARM processors", 2110fca6ea1SDimitry Andric [FeaturePostRAScheduler]>; 2120fca6ea1SDimitry Andric 2130fca6ea1SDimitry Andricdef TuneX1 : SubtargetFeature<"cortex-x1", "ARMProcFamily", "CortexX1", 2140fca6ea1SDimitry Andric "Cortex-X1 ARM processors", [ 2150fca6ea1SDimitry Andric FeatureCmpBccFusion, 2160fca6ea1SDimitry Andric FeatureFuseAES, 2170fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 2180fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 2190fca6ea1SDimitry Andric FeatureALULSLFast, 2200fca6ea1SDimitry Andric FeaturePostRAScheduler, 2210fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 2220fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 2230fca6ea1SDimitry Andric 2240fca6ea1SDimitry Andricdef TuneX2 : SubtargetFeature<"cortex-x2", "ARMProcFamily", "CortexX2", 2250fca6ea1SDimitry Andric "Cortex-X2 ARM processors", [ 2260fca6ea1SDimitry Andric FeatureCmpBccFusion, 2270fca6ea1SDimitry Andric FeatureFuseAES, 2280fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 2290fca6ea1SDimitry Andric FeatureALULSLFast, 2300fca6ea1SDimitry Andric FeaturePostRAScheduler, 2310fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 2320fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 2330fca6ea1SDimitry Andric 2340fca6ea1SDimitry Andricdef TuneX3 : SubtargetFeature<"cortex-x3", "ARMProcFamily", "CortexX3", 2350fca6ea1SDimitry Andric "Cortex-X3 ARM processors", [ 2360fca6ea1SDimitry Andric FeatureALULSLFast, 2370fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 2380fca6ea1SDimitry Andric FeatureFuseAES, 2390fca6ea1SDimitry Andric FeaturePostRAScheduler, 2400fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 2410fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 2420fca6ea1SDimitry Andric 2430fca6ea1SDimitry Andricdef TuneX4 : SubtargetFeature<"cortex-x4", "ARMProcFamily", "CortexX4", 2440fca6ea1SDimitry Andric "Cortex-X4 ARM processors", [ 2450fca6ea1SDimitry Andric FeatureALULSLFast, 2460fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 2470fca6ea1SDimitry Andric FeatureFuseAES, 2480fca6ea1SDimitry Andric FeaturePostRAScheduler, 2490fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 2500fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 2510fca6ea1SDimitry Andric 2520fca6ea1SDimitry Andricdef TuneX925 : SubtargetFeature<"cortex-x925", "ARMProcFamily", 2530fca6ea1SDimitry Andric "CortexX925", "Cortex-X925 ARM processors",[ 2540fca6ea1SDimitry Andric FeatureALULSLFast, 2550fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 2560fca6ea1SDimitry Andric FeatureFuseAES, 2570fca6ea1SDimitry Andric FeaturePostRAScheduler, 2580fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 2590fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 2600fca6ea1SDimitry Andric 2610fca6ea1SDimitry Andricdef TuneA64FX : SubtargetFeature<"a64fx", "ARMProcFamily", "A64FX", 2620fca6ea1SDimitry Andric "Fujitsu A64FX processors", [ 2630fca6ea1SDimitry Andric FeaturePostRAScheduler, 2640fca6ea1SDimitry Andric FeatureAggressiveFMA, 2650fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 2660fca6ea1SDimitry Andric FeatureStorePairSuppress, 2670fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 2680fca6ea1SDimitry Andric 2690fca6ea1SDimitry Andricdef TuneCarmel : SubtargetFeature<"carmel", "ARMProcFamily", "Carmel", 2700fca6ea1SDimitry Andric "Nvidia Carmel processors">; 2710fca6ea1SDimitry Andric 2720fca6ea1SDimitry Andric// Note that cyclone does not fuse AES instructions, but newer apple chips do 2730fca6ea1SDimitry Andric// perform the fusion and cyclone is used by default when targetting apple OSes. 2740fca6ea1SDimitry Andricdef TuneAppleA7 : SubtargetFeature<"apple-a7", "ARMProcFamily", "AppleA7", 2750fca6ea1SDimitry Andric "Apple A7 (the CPU formerly known as Cyclone)", [ 2760fca6ea1SDimitry Andric FeatureAlternateSExtLoadCVTF32Pattern, 2770fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 2780fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 2790fca6ea1SDimitry Andric FeatureDisableLatencySchedHeuristic, 2800fca6ea1SDimitry Andric FeatureFuseAES, FeatureFuseCryptoEOR, 2810fca6ea1SDimitry Andric FeatureStorePairSuppress, 2820fca6ea1SDimitry Andric FeatureZCRegMove, 2830fca6ea1SDimitry Andric FeatureZCZeroing, 2840fca6ea1SDimitry Andric FeatureZCZeroingFPWorkaround]>; 2850fca6ea1SDimitry Andric 2860fca6ea1SDimitry Andricdef TuneAppleA10 : SubtargetFeature<"apple-a10", "ARMProcFamily", "AppleA10", 2870fca6ea1SDimitry Andric "Apple A10", [ 2880fca6ea1SDimitry Andric FeatureAlternateSExtLoadCVTF32Pattern, 2890fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 2900fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 2910fca6ea1SDimitry Andric FeatureDisableLatencySchedHeuristic, 2920fca6ea1SDimitry Andric FeatureFuseAES, 2930fca6ea1SDimitry Andric FeatureFuseCryptoEOR, 2940fca6ea1SDimitry Andric FeatureStorePairSuppress, 2950fca6ea1SDimitry Andric FeatureZCRegMove, 2960fca6ea1SDimitry Andric FeatureZCZeroing]>; 2970fca6ea1SDimitry Andric 2980fca6ea1SDimitry Andricdef TuneAppleA11 : SubtargetFeature<"apple-a11", "ARMProcFamily", "AppleA11", 2990fca6ea1SDimitry Andric "Apple A11", [ 3000fca6ea1SDimitry Andric FeatureAlternateSExtLoadCVTF32Pattern, 3010fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 3020fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 3030fca6ea1SDimitry Andric FeatureDisableLatencySchedHeuristic, 3040fca6ea1SDimitry Andric FeatureFuseAES, 3050fca6ea1SDimitry Andric FeatureFuseCryptoEOR, 3060fca6ea1SDimitry Andric FeatureStorePairSuppress, 3070fca6ea1SDimitry Andric FeatureZCRegMove, 3080fca6ea1SDimitry Andric FeatureZCZeroing]>; 3090fca6ea1SDimitry Andric 3100fca6ea1SDimitry Andricdef TuneAppleA12 : SubtargetFeature<"apple-a12", "ARMProcFamily", "AppleA12", 3110fca6ea1SDimitry Andric "Apple A12", [ 3120fca6ea1SDimitry Andric FeatureAlternateSExtLoadCVTF32Pattern, 3130fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 3140fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 3150fca6ea1SDimitry Andric FeatureDisableLatencySchedHeuristic, 3160fca6ea1SDimitry Andric FeatureFuseAES, 3170fca6ea1SDimitry Andric FeatureFuseCryptoEOR, 3180fca6ea1SDimitry Andric FeatureStorePairSuppress, 3190fca6ea1SDimitry Andric FeatureZCRegMove, 3200fca6ea1SDimitry Andric FeatureZCZeroing]>; 3210fca6ea1SDimitry Andric 3220fca6ea1SDimitry Andricdef TuneAppleA13 : SubtargetFeature<"apple-a13", "ARMProcFamily", "AppleA13", 3230fca6ea1SDimitry Andric "Apple A13", [ 3240fca6ea1SDimitry Andric FeatureAlternateSExtLoadCVTF32Pattern, 3250fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 3260fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 3270fca6ea1SDimitry Andric FeatureDisableLatencySchedHeuristic, 3280fca6ea1SDimitry Andric FeatureFuseAES, 3290fca6ea1SDimitry Andric FeatureFuseCryptoEOR, 3300fca6ea1SDimitry Andric FeatureStorePairSuppress, 3310fca6ea1SDimitry Andric FeatureZCRegMove, 3320fca6ea1SDimitry Andric FeatureZCZeroing]>; 3330fca6ea1SDimitry Andric 3340fca6ea1SDimitry Andricdef TuneAppleA14 : SubtargetFeature<"apple-a14", "ARMProcFamily", "AppleA14", 3350fca6ea1SDimitry Andric "Apple A14", [ 3360fca6ea1SDimitry Andric FeatureAggressiveFMA, 3370fca6ea1SDimitry Andric FeatureAlternateSExtLoadCVTF32Pattern, 3380fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 3390fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 3400fca6ea1SDimitry Andric FeatureDisableLatencySchedHeuristic, 3410fca6ea1SDimitry Andric FeatureFuseAddress, 3420fca6ea1SDimitry Andric FeatureFuseAES, 3430fca6ea1SDimitry Andric FeatureFuseArithmeticLogic, 3440fca6ea1SDimitry Andric FeatureFuseCCSelect, 3450fca6ea1SDimitry Andric FeatureFuseCryptoEOR, 3460fca6ea1SDimitry Andric FeatureFuseLiterals, 3470fca6ea1SDimitry Andric FeatureStorePairSuppress, 3480fca6ea1SDimitry Andric FeatureZCRegMove, 3490fca6ea1SDimitry Andric FeatureZCZeroing]>; 3500fca6ea1SDimitry Andric 3510fca6ea1SDimitry Andricdef TuneAppleA15 : SubtargetFeature<"apple-a15", "ARMProcFamily", "AppleA15", 3520fca6ea1SDimitry Andric "Apple A15", [ 3530fca6ea1SDimitry Andric FeatureAlternateSExtLoadCVTF32Pattern, 3540fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 3550fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 3560fca6ea1SDimitry Andric FeatureDisableLatencySchedHeuristic, 3570fca6ea1SDimitry Andric FeatureFuseAddress, 3580fca6ea1SDimitry Andric FeatureFuseAES, 3590fca6ea1SDimitry Andric FeatureFuseArithmeticLogic, 3600fca6ea1SDimitry Andric FeatureFuseCCSelect, 3610fca6ea1SDimitry Andric FeatureFuseCryptoEOR, 3620fca6ea1SDimitry Andric FeatureFuseLiterals, 3630fca6ea1SDimitry Andric FeatureStorePairSuppress, 3640fca6ea1SDimitry Andric FeatureZCRegMove, 3650fca6ea1SDimitry Andric FeatureZCZeroing]>; 3660fca6ea1SDimitry Andric 3670fca6ea1SDimitry Andricdef TuneAppleA16 : SubtargetFeature<"apple-a16", "ARMProcFamily", "AppleA16", 3680fca6ea1SDimitry Andric "Apple A16", [ 3690fca6ea1SDimitry Andric FeatureAlternateSExtLoadCVTF32Pattern, 3700fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 3710fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 3720fca6ea1SDimitry Andric FeatureDisableLatencySchedHeuristic, 3730fca6ea1SDimitry Andric FeatureFuseAddress, 3740fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 3750fca6ea1SDimitry Andric FeatureFuseAES, 3760fca6ea1SDimitry Andric FeatureFuseArithmeticLogic, 3770fca6ea1SDimitry Andric FeatureFuseCCSelect, 3780fca6ea1SDimitry Andric FeatureFuseCryptoEOR, 3790fca6ea1SDimitry Andric FeatureFuseLiterals, 3800fca6ea1SDimitry Andric FeatureStorePairSuppress, 3810fca6ea1SDimitry Andric FeatureZCRegMove, 3820fca6ea1SDimitry Andric FeatureZCZeroing]>; 3830fca6ea1SDimitry Andric 3840fca6ea1SDimitry Andricdef TuneAppleA17 : SubtargetFeature<"apple-a17", "ARMProcFamily", "AppleA17", 3850fca6ea1SDimitry Andric "Apple A17", [ 3860fca6ea1SDimitry Andric FeatureAlternateSExtLoadCVTF32Pattern, 3870fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 3880fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 3890fca6ea1SDimitry Andric FeatureDisableLatencySchedHeuristic, 3900fca6ea1SDimitry Andric FeatureFuseAddress, 3910fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 3920fca6ea1SDimitry Andric FeatureFuseAES, 3930fca6ea1SDimitry Andric FeatureFuseArithmeticLogic, 3940fca6ea1SDimitry Andric FeatureFuseCCSelect, 3950fca6ea1SDimitry Andric FeatureFuseCryptoEOR, 3960fca6ea1SDimitry Andric FeatureFuseLiterals, 3970fca6ea1SDimitry Andric FeatureStorePairSuppress, 3980fca6ea1SDimitry Andric FeatureZCRegMove, 3990fca6ea1SDimitry Andric FeatureZCZeroing]>; 4000fca6ea1SDimitry Andric 4010fca6ea1SDimitry Andricdef TuneAppleM4 : SubtargetFeature<"apple-m4", "ARMProcFamily", "AppleM4", 4020fca6ea1SDimitry Andric "Apple M4", [ 4030fca6ea1SDimitry Andric FeatureAlternateSExtLoadCVTF32Pattern, 4040fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 4050fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 4060fca6ea1SDimitry Andric FeatureDisableLatencySchedHeuristic, 4070fca6ea1SDimitry Andric FeatureFuseAddress, 4080fca6ea1SDimitry Andric FeatureFuseAES, 4090fca6ea1SDimitry Andric FeatureFuseArithmeticLogic, 4100fca6ea1SDimitry Andric FeatureFuseCCSelect, 4110fca6ea1SDimitry Andric FeatureFuseCryptoEOR, 4120fca6ea1SDimitry Andric FeatureFuseLiterals, 4130fca6ea1SDimitry Andric FeatureZCRegMove, 4140fca6ea1SDimitry Andric FeatureZCZeroing 4150fca6ea1SDimitry Andric ]>; 4160fca6ea1SDimitry Andric 4170fca6ea1SDimitry Andricdef TuneExynosM3 : SubtargetFeature<"exynosm3", "ARMProcFamily", "ExynosM3", 4180fca6ea1SDimitry Andric "Samsung Exynos-M3 processors", 4190fca6ea1SDimitry Andric [FeatureExynosCheapAsMoveHandling, 4200fca6ea1SDimitry Andric FeatureForce32BitJumpTables, 4210fca6ea1SDimitry Andric FeatureFuseAddress, 4220fca6ea1SDimitry Andric FeatureFuseAES, 4230fca6ea1SDimitry Andric FeatureFuseCCSelect, 4240fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 4250fca6ea1SDimitry Andric FeatureFuseLiterals, 4260fca6ea1SDimitry Andric FeatureStorePairSuppress, 4270fca6ea1SDimitry Andric FeatureALULSLFast, 4280fca6ea1SDimitry Andric FeaturePostRAScheduler, 4290fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 4300fca6ea1SDimitry Andric 4310fca6ea1SDimitry Andric// Re-uses some scheduling and tunings from the ExynosM3 proc family. 4320fca6ea1SDimitry Andricdef TuneExynosM4 : SubtargetFeature<"exynosm4", "ARMProcFamily", "ExynosM3", 4330fca6ea1SDimitry Andric "Samsung Exynos-M4 processors", 4340fca6ea1SDimitry Andric [FeatureArithmeticBccFusion, 4350fca6ea1SDimitry Andric FeatureArithmeticCbzFusion, 4360fca6ea1SDimitry Andric FeatureExynosCheapAsMoveHandling, 4370fca6ea1SDimitry Andric FeatureForce32BitJumpTables, 4380fca6ea1SDimitry Andric FeatureFuseAddress, 4390fca6ea1SDimitry Andric FeatureFuseAES, 4400fca6ea1SDimitry Andric FeatureFuseArithmeticLogic, 4410fca6ea1SDimitry Andric FeatureFuseCCSelect, 4420fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 4430fca6ea1SDimitry Andric FeatureFuseLiterals, 4440fca6ea1SDimitry Andric FeatureStorePairSuppress, 4450fca6ea1SDimitry Andric FeatureALULSLFast, 4460fca6ea1SDimitry Andric FeaturePostRAScheduler, 4470fca6ea1SDimitry Andric FeatureZCZeroing]>; 4480fca6ea1SDimitry Andric 4490fca6ea1SDimitry Andricdef TuneKryo : SubtargetFeature<"kryo", "ARMProcFamily", "Kryo", 4500fca6ea1SDimitry Andric "Qualcomm Kryo processors", [ 4510fca6ea1SDimitry Andric FeaturePostRAScheduler, 4520fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive, 4530fca6ea1SDimitry Andric FeatureZCZeroing, 4540fca6ea1SDimitry Andric FeatureALULSLFast, 4550fca6ea1SDimitry Andric FeatureStorePairSuppress]>; 4560fca6ea1SDimitry Andric 4570fca6ea1SDimitry Andricdef TuneFalkor : SubtargetFeature<"falkor", "ARMProcFamily", "Falkor", 4580fca6ea1SDimitry Andric "Qualcomm Falkor processors", [ 4590fca6ea1SDimitry Andric FeaturePostRAScheduler, 4600fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive, 4610fca6ea1SDimitry Andric FeatureZCZeroing, 4620fca6ea1SDimitry Andric FeatureStorePairSuppress, 4630fca6ea1SDimitry Andric FeatureALULSLFast, 4640fca6ea1SDimitry Andric FeatureSlowSTRQro]>; 4650fca6ea1SDimitry Andric 4660fca6ea1SDimitry Andricdef TuneNeoverseE1 : SubtargetFeature<"neoversee1", "ARMProcFamily", "NeoverseE1", 4670fca6ea1SDimitry Andric "Neoverse E1 ARM processors", [ 4680fca6ea1SDimitry Andric FeatureFuseAES, 4690fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 4700fca6ea1SDimitry Andric FeaturePostRAScheduler]>; 4710fca6ea1SDimitry Andric 4720fca6ea1SDimitry Andricdef TuneNeoverseN1 : SubtargetFeature<"neoversen1", "ARMProcFamily", "NeoverseN1", 4730fca6ea1SDimitry Andric "Neoverse N1 ARM processors", [ 4740fca6ea1SDimitry Andric FeatureFuseAES, 4750fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 4760fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 4770fca6ea1SDimitry Andric FeatureALULSLFast, 4780fca6ea1SDimitry Andric FeaturePostRAScheduler, 4790fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 4800fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 4810fca6ea1SDimitry Andric 4820fca6ea1SDimitry Andricdef TuneNeoverseN2 : SubtargetFeature<"neoversen2", "ARMProcFamily", "NeoverseN2", 4830fca6ea1SDimitry Andric "Neoverse N2 ARM processors", [ 4840fca6ea1SDimitry Andric FeatureFuseAES, 4850fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 4860fca6ea1SDimitry Andric FeatureALULSLFast, 4870fca6ea1SDimitry Andric FeaturePostRAScheduler, 4880fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 4890fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 4900fca6ea1SDimitry Andric 4910fca6ea1SDimitry Andricdef TuneNeoverseN3 : SubtargetFeature<"neoversen3", "ARMProcFamily", "NeoverseN3", 4920fca6ea1SDimitry Andric "Neoverse N3 ARM processors", [ 4930fca6ea1SDimitry Andric FeatureFuseAES, 4940fca6ea1SDimitry Andric FeaturePostRAScheduler, 4950fca6ea1SDimitry Andric FeatureALULSLFast, 4960fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 4970fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 4980fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 4990fca6ea1SDimitry Andric 5000fca6ea1SDimitry Andricdef TuneNeoverse512TVB : SubtargetFeature<"neoverse512tvb", "ARMProcFamily", "Neoverse512TVB", 5010fca6ea1SDimitry Andric "Neoverse 512-TVB ARM processors", [ 5020fca6ea1SDimitry Andric FeatureFuseAES, 5030fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 5040fca6ea1SDimitry Andric FeatureALULSLFast, 5050fca6ea1SDimitry Andric FeaturePostRAScheduler, 5060fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 5070fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 5080fca6ea1SDimitry Andric 5090fca6ea1SDimitry Andricdef TuneNeoverseV1 : SubtargetFeature<"neoversev1", "ARMProcFamily", "NeoverseV1", 5100fca6ea1SDimitry Andric "Neoverse V1 ARM processors", [ 5110fca6ea1SDimitry Andric FeatureFuseAES, 5120fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 5130fca6ea1SDimitry Andric FeatureAddrLSLSlow14, 5140fca6ea1SDimitry Andric FeatureALULSLFast, 5150fca6ea1SDimitry Andric FeaturePostRAScheduler, 5160fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 5170fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive, 5180fca6ea1SDimitry Andric FeatureNoSVEFPLD1R]>; 5190fca6ea1SDimitry Andric 5200fca6ea1SDimitry Andricdef TuneNeoverseV2 : SubtargetFeature<"neoversev2", "ARMProcFamily", "NeoverseV2", 5210fca6ea1SDimitry Andric "Neoverse V2 ARM processors", [ 5220fca6ea1SDimitry Andric FeatureFuseAES, 5230fca6ea1SDimitry Andric FeatureCmpBccFusion, 5240fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 5250fca6ea1SDimitry Andric FeatureALULSLFast, 5260fca6ea1SDimitry Andric FeaturePostRAScheduler, 5270fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 5280fca6ea1SDimitry Andric FeatureUseFixedOverScalableIfEqualCost, 5290fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 5300fca6ea1SDimitry Andric 5310fca6ea1SDimitry Andricdef TuneNeoverseV3 : SubtargetFeature<"neoversev3", "ARMProcFamily", "NeoverseV3", 5320fca6ea1SDimitry Andric "Neoverse V3 ARM processors", [ 5330fca6ea1SDimitry Andric FeatureFuseAES, 5340fca6ea1SDimitry Andric FeatureALULSLFast, 5350fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 5360fca6ea1SDimitry Andric FeaturePostRAScheduler, 5370fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 5380fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 5390fca6ea1SDimitry Andric 5400fca6ea1SDimitry Andricdef TuneNeoverseV3AE : SubtargetFeature<"neoversev3AE", "ARMProcFamily", "NeoverseV3", 5410fca6ea1SDimitry Andric "Neoverse V3AE ARM processors", [ 5420fca6ea1SDimitry Andric FeatureFuseAES, 5430fca6ea1SDimitry Andric FeatureALULSLFast, 5440fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 5450fca6ea1SDimitry Andric FeaturePostRAScheduler, 5460fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 5470fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 5480fca6ea1SDimitry Andric 5490fca6ea1SDimitry Andricdef TuneSaphira : SubtargetFeature<"saphira", "ARMProcFamily", "Saphira", 5500fca6ea1SDimitry Andric "Qualcomm Saphira processors", [ 5510fca6ea1SDimitry Andric FeaturePostRAScheduler, 5520fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive, 5530fca6ea1SDimitry Andric FeatureZCZeroing, 5540fca6ea1SDimitry Andric FeatureStorePairSuppress, 5550fca6ea1SDimitry Andric FeatureALULSLFast]>; 5560fca6ea1SDimitry Andric 5570fca6ea1SDimitry Andricdef TuneThunderX2T99 : SubtargetFeature<"thunderx2t99", "ARMProcFamily", "ThunderX2T99", 5580fca6ea1SDimitry Andric "Cavium ThunderX2 processors", [ 5590fca6ea1SDimitry Andric FeatureAggressiveFMA, 5600fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 5610fca6ea1SDimitry Andric FeaturePostRAScheduler, 5620fca6ea1SDimitry Andric FeatureStorePairSuppress, 5630fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 5640fca6ea1SDimitry Andric 5650fca6ea1SDimitry Andricdef TuneThunderX3T110 : SubtargetFeature<"thunderx3t110", "ARMProcFamily", 5660fca6ea1SDimitry Andric "ThunderX3T110", 5670fca6ea1SDimitry Andric "Marvell ThunderX3 processors", [ 5680fca6ea1SDimitry Andric FeatureAggressiveFMA, 5690fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 5700fca6ea1SDimitry Andric FeaturePostRAScheduler, 5710fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive, 5720fca6ea1SDimitry Andric FeatureBalanceFPOps, 5730fca6ea1SDimitry Andric FeatureStorePairSuppress, 5740fca6ea1SDimitry Andric FeatureStrictAlign]>; 5750fca6ea1SDimitry Andric 5760fca6ea1SDimitry Andricdef TuneThunderX : SubtargetFeature<"thunderx", "ARMProcFamily", "ThunderX", 5770fca6ea1SDimitry Andric "Cavium ThunderX processors", [ 5780fca6ea1SDimitry Andric FeaturePostRAScheduler, 5790fca6ea1SDimitry Andric FeatureStorePairSuppress, 5800fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 5810fca6ea1SDimitry Andric 5820fca6ea1SDimitry Andricdef TuneThunderXT88 : SubtargetFeature<"thunderxt88", "ARMProcFamily", 5830fca6ea1SDimitry Andric "ThunderXT88", 5840fca6ea1SDimitry Andric "Cavium ThunderX processors", [ 5850fca6ea1SDimitry Andric FeaturePostRAScheduler, 5860fca6ea1SDimitry Andric FeatureStorePairSuppress, 5870fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 5880fca6ea1SDimitry Andric 5890fca6ea1SDimitry Andricdef TuneThunderXT81 : SubtargetFeature<"thunderxt81", "ARMProcFamily", 5900fca6ea1SDimitry Andric "ThunderXT81", 5910fca6ea1SDimitry Andric "Cavium ThunderX processors", [ 5920fca6ea1SDimitry Andric FeaturePostRAScheduler, 5930fca6ea1SDimitry Andric FeatureStorePairSuppress, 5940fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 5950fca6ea1SDimitry Andric 5960fca6ea1SDimitry Andricdef TuneThunderXT83 : SubtargetFeature<"thunderxt83", "ARMProcFamily", 5970fca6ea1SDimitry Andric "ThunderXT83", 5980fca6ea1SDimitry Andric "Cavium ThunderX processors", [ 5990fca6ea1SDimitry Andric FeaturePostRAScheduler, 6000fca6ea1SDimitry Andric FeatureStorePairSuppress, 6010fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive]>; 6020fca6ea1SDimitry Andric 6030fca6ea1SDimitry Andricdef TuneTSV110 : SubtargetFeature<"tsv110", "ARMProcFamily", "TSV110", 6040fca6ea1SDimitry Andric "HiSilicon TS-V110 processors", [ 6050fca6ea1SDimitry Andric FeatureFuseAES, 6060fca6ea1SDimitry Andric FeatureStorePairSuppress, 6070fca6ea1SDimitry Andric FeaturePostRAScheduler]>; 6080fca6ea1SDimitry Andric 6090fca6ea1SDimitry Andricdef TuneAmpere1 : SubtargetFeature<"ampere1", "ARMProcFamily", "Ampere1", 6100fca6ea1SDimitry Andric "Ampere Computing Ampere-1 processors", [ 6110fca6ea1SDimitry Andric FeaturePostRAScheduler, 6120fca6ea1SDimitry Andric FeatureFuseAES, 6130fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 6140fca6ea1SDimitry Andric FeatureALULSLFast, 6150fca6ea1SDimitry Andric FeatureAggressiveFMA, 6160fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 6170fca6ea1SDimitry Andric FeatureCmpBccFusion, 6180fca6ea1SDimitry Andric FeatureFuseAddress, 6190fca6ea1SDimitry Andric FeatureFuseLiterals, 6200fca6ea1SDimitry Andric FeatureStorePairSuppress, 6210fca6ea1SDimitry Andric FeatureLdpAlignedOnly, 6220fca6ea1SDimitry Andric FeatureStpAlignedOnly]>; 6230fca6ea1SDimitry Andric 6240fca6ea1SDimitry Andricdef TuneAmpere1A : SubtargetFeature<"ampere1a", "ARMProcFamily", "Ampere1A", 6250fca6ea1SDimitry Andric "Ampere Computing Ampere-1A processors", [ 6260fca6ea1SDimitry Andric FeaturePostRAScheduler, 6270fca6ea1SDimitry Andric FeatureFuseAES, 6280fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 6290fca6ea1SDimitry Andric FeatureALULSLFast, 6300fca6ea1SDimitry Andric FeatureAggressiveFMA, 6310fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 6320fca6ea1SDimitry Andric FeatureCmpBccFusion, 6330fca6ea1SDimitry Andric FeatureFuseAddress, 6340fca6ea1SDimitry Andric FeatureFuseLiterals, 6350fca6ea1SDimitry Andric FeatureFuseAddSub2RegAndConstOne, 6360fca6ea1SDimitry Andric FeatureStorePairSuppress, 6370fca6ea1SDimitry Andric FeatureLdpAlignedOnly, 6380fca6ea1SDimitry Andric FeatureStpAlignedOnly]>; 6390fca6ea1SDimitry Andric 6400fca6ea1SDimitry Andricdef TuneAmpere1B : SubtargetFeature<"ampere1b", "ARMProcFamily", "Ampere1B", 6410fca6ea1SDimitry Andric "Ampere Computing Ampere-1B processors", [ 6420fca6ea1SDimitry Andric FeaturePostRAScheduler, 6430fca6ea1SDimitry Andric FeatureFuseAES, 6440fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 6450fca6ea1SDimitry Andric FeatureALULSLFast, 6460fca6ea1SDimitry Andric FeatureAggressiveFMA, 6470fca6ea1SDimitry Andric FeatureArithmeticBccFusion, 6480fca6ea1SDimitry Andric FeatureCmpBccFusion, 6490fca6ea1SDimitry Andric FeatureFuseAddress, 6500fca6ea1SDimitry Andric FeatureFuseLiterals, 6510fca6ea1SDimitry Andric FeatureStorePairSuppress, 6520fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 6530fca6ea1SDimitry Andric FeaturePredictableSelectIsExpensive, 6540fca6ea1SDimitry Andric FeatureLdpAlignedOnly, 6550fca6ea1SDimitry Andric FeatureStpAlignedOnly]>; 6560fca6ea1SDimitry Andric 6570fca6ea1SDimitry Andricdef TuneOryon : SubtargetFeature<"oryon-1", "ARMProcFamily", 6580fca6ea1SDimitry Andric "Oryon", 6590fca6ea1SDimitry Andric "Nuvia Inc Oryon processors", [ 6600fca6ea1SDimitry Andric FeatureSHA2, 6610fca6ea1SDimitry Andric FeatureAES, 6620fca6ea1SDimitry Andric FeatureFPARMv8, 6630fca6ea1SDimitry Andric FeatureNEON, 6640fca6ea1SDimitry Andric FeatureFuseAES, 6650fca6ea1SDimitry Andric FeatureFuseAdrpAdd, 6660fca6ea1SDimitry Andric FeatureEnableSelectOptimize, 6670fca6ea1SDimitry Andric FeatureFuseCryptoEOR, 6680fca6ea1SDimitry Andric FeatureFuseAddress, 6690fca6ea1SDimitry Andric FeatureSM4, 6700fca6ea1SDimitry Andric FeatureSHA2, 6710fca6ea1SDimitry Andric FeatureSHA3, 6720fca6ea1SDimitry Andric FeatureAES, 6730fca6ea1SDimitry Andric FeatureFullFP16, 6740fca6ea1SDimitry Andric FeatureFP16FML, 6750fca6ea1SDimitry Andric FeaturePerfMon, 6760fca6ea1SDimitry Andric FeatureSPE, 6770fca6ea1SDimitry Andric FeaturePostRAScheduler, 6780fca6ea1SDimitry Andric HasV8_6aOps]>; 6790fca6ea1SDimitry Andric 6800fca6ea1SDimitry Andricdef ProcessorFeatures { 6810fca6ea1SDimitry Andric list<SubtargetFeature> A53 = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES, 6820fca6ea1SDimitry Andric FeatureFPARMv8, FeatureNEON, FeaturePerfMon]; 6830fca6ea1SDimitry Andric list<SubtargetFeature> A55 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 6840fca6ea1SDimitry Andric FeatureNEON, FeatureFullFP16, FeatureDotProd, 6850fca6ea1SDimitry Andric FeatureRCPC, FeaturePerfMon, FeatureCRC, 6860fca6ea1SDimitry Andric FeatureLSE, FeatureRAS, FeatureRDM]; 6870fca6ea1SDimitry Andric list<SubtargetFeature> A510 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon, 6880fca6ea1SDimitry Andric FeatureMatMulInt8, FeatureBF16, FeatureAM, 6890fca6ea1SDimitry Andric FeatureMTE, FeatureETE, FeatureSVE2BitPerm, 6900fca6ea1SDimitry Andric FeatureFP16FML, 69162987288SDimitry Andric FeatureCCIDX, 6920fca6ea1SDimitry Andric FeatureSB, FeaturePAuth, FeatureSSBS, FeatureSVE, FeatureSVE2, 6930fca6ea1SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureDotProd, 6940fca6ea1SDimitry Andric FeatureFPARMv8,FeatureFullFP16, FeatureJS, FeatureLSE, 6950fca6ea1SDimitry Andric FeatureRAS, FeatureRCPC, FeatureRDM]; 6960fca6ea1SDimitry Andric list<SubtargetFeature> A520 = [HasV9_2aOps, FeaturePerfMon, FeatureAM, 6970fca6ea1SDimitry Andric FeatureMTE, FeatureETE, FeatureSVE2BitPerm, 6980fca6ea1SDimitry Andric FeatureFP16FML, 69962987288SDimitry Andric FeatureCCIDX, 7000fca6ea1SDimitry Andric FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes, 7010fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC, 7020fca6ea1SDimitry Andric FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS, 7030fca6ea1SDimitry Andric FeatureNEON, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM, 7040fca6ea1SDimitry Andric FeatureDotProd]; 7050fca6ea1SDimitry Andric list<SubtargetFeature> A520AE = [HasV9_2aOps, FeaturePerfMon, FeatureAM, 7060fca6ea1SDimitry Andric FeatureMTE, FeatureETE, FeatureSVE2BitPerm, 7070fca6ea1SDimitry Andric FeatureFP16FML, 70862987288SDimitry Andric FeatureCCIDX, 7090fca6ea1SDimitry Andric FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes, 7100fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC, 7110fca6ea1SDimitry Andric FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS, 7120fca6ea1SDimitry Andric FeatureNEON, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM, 7130fca6ea1SDimitry Andric FeatureDotProd]; 7140fca6ea1SDimitry Andric list<SubtargetFeature> A65 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 7150fca6ea1SDimitry Andric FeatureNEON, FeatureFullFP16, FeatureDotProd, 7160fca6ea1SDimitry Andric FeatureRCPC, FeatureSSBS, FeatureRAS, 7170fca6ea1SDimitry Andric FeaturePerfMon, FeatureCRC, FeatureLSE, FeatureRDM]; 7180fca6ea1SDimitry Andric list<SubtargetFeature> A76 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 7190fca6ea1SDimitry Andric FeatureNEON, FeatureFullFP16, FeatureDotProd, 7200fca6ea1SDimitry Andric FeatureRCPC, FeatureSSBS, FeaturePerfMon, 7210fca6ea1SDimitry Andric FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM]; 7220fca6ea1SDimitry Andric list<SubtargetFeature> A77 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 7230fca6ea1SDimitry Andric FeatureNEON, FeatureFullFP16, FeatureDotProd, 7240fca6ea1SDimitry Andric FeatureRCPC, FeaturePerfMon, FeatureSSBS, 7250fca6ea1SDimitry Andric FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM]; 7260fca6ea1SDimitry Andric list<SubtargetFeature> A78 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 7270fca6ea1SDimitry Andric FeatureNEON, FeatureFullFP16, FeatureDotProd, 7280fca6ea1SDimitry Andric FeatureRCPC, FeaturePerfMon, FeatureSPE, 7290fca6ea1SDimitry Andric FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM]; 7300fca6ea1SDimitry Andric list<SubtargetFeature> A78AE = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 7310fca6ea1SDimitry Andric FeatureNEON, FeatureFullFP16, FeatureDotProd, 7320fca6ea1SDimitry Andric FeatureRCPC, FeaturePerfMon, FeatureSPE, 7330fca6ea1SDimitry Andric FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM]; 7340fca6ea1SDimitry Andric list<SubtargetFeature> A78C = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 7350fca6ea1SDimitry Andric FeatureNEON, FeatureFullFP16, FeatureDotProd, 7360fca6ea1SDimitry Andric FeatureFlagM, FeaturePAuth, 7370fca6ea1SDimitry Andric FeaturePerfMon, FeatureRCPC, FeatureSPE, 7380fca6ea1SDimitry Andric FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM]; 7390fca6ea1SDimitry Andric list<SubtargetFeature> A710 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon, 74062987288SDimitry Andric FeatureCCIDX, FeatureSSBS, 7410fca6ea1SDimitry Andric FeatureETE, FeatureMTE, FeatureFP16FML, 7420fca6ea1SDimitry Andric FeatureSVE2BitPerm, FeatureBF16, FeatureMatMulInt8, 7430fca6ea1SDimitry Andric FeaturePAuth, FeatureFlagM, FeatureSB, FeatureSVE, FeatureSVE2, 7440fca6ea1SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureDotProd, FeatureFPARMv8, 7450fca6ea1SDimitry Andric FeatureFullFP16, FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM]; 7460fca6ea1SDimitry Andric list<SubtargetFeature> A715 = [HasV9_0aOps, FeatureNEON, FeatureMTE, 74762987288SDimitry Andric FeatureCCIDX, 7480fca6ea1SDimitry Andric FeatureFP16FML, FeatureSVE, FeatureTRBE, 7490fca6ea1SDimitry Andric FeatureSVE2BitPerm, FeatureBF16, FeatureETE, 7500fca6ea1SDimitry Andric FeaturePerfMon, FeatureMatMulInt8, FeatureSPE, 7510fca6ea1SDimitry Andric FeatureSB, FeatureSSBS, FeatureFullFP16, FeaturePAuth, FeaturePredRes, FeatureFlagM, 7520fca6ea1SDimitry Andric FeatureSVE2, FeatureComplxNum, FeatureCRC, 7530fca6ea1SDimitry Andric FeatureDotProd, FeatureFPARMv8, 7540fca6ea1SDimitry Andric FeatureJS, FeatureLSE, FeatureRAS, 7550fca6ea1SDimitry Andric FeatureRCPC, FeatureRDM]; 7560fca6ea1SDimitry Andric list<SubtargetFeature> A720 = [HasV9_2aOps, FeatureMTE, FeatureFP16FML, 75762987288SDimitry Andric FeatureCCIDX, 7580fca6ea1SDimitry Andric FeatureTRBE, FeatureSVE2BitPerm, FeatureETE, 7590fca6ea1SDimitry Andric FeaturePerfMon, FeatureSPE, FeatureSPE_EEF, 7600fca6ea1SDimitry Andric FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes, 7610fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC, 7620fca6ea1SDimitry Andric FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, 7630fca6ea1SDimitry Andric FeatureJS, FeatureLSE, FeatureNEON, FeatureRAS, 7640fca6ea1SDimitry Andric FeatureRCPC, FeatureRDM]; 7650fca6ea1SDimitry Andric list<SubtargetFeature> A720AE = [HasV9_2aOps, FeatureMTE, FeatureFP16FML, 76662987288SDimitry Andric FeatureCCIDX, 7670fca6ea1SDimitry Andric FeatureTRBE, FeatureSVE2BitPerm, FeatureETE, 7680fca6ea1SDimitry Andric FeaturePerfMon, FeatureSPE, FeatureSPE_EEF, 7690fca6ea1SDimitry Andric FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes, 7700fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC, 7710fca6ea1SDimitry Andric FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, 7720fca6ea1SDimitry Andric FeatureJS, FeatureLSE, FeatureNEON, FeatureRAS, 7730fca6ea1SDimitry Andric FeatureRCPC, FeatureRDM]; 7740fca6ea1SDimitry Andric list<SubtargetFeature> A725 = [HasV9_2aOps, FeatureMTE, FeatureFP16FML, 77562987288SDimitry Andric FeatureCCIDX, 7760fca6ea1SDimitry Andric FeatureETE, FeaturePerfMon, FeatureSPE, 7770fca6ea1SDimitry Andric FeatureSVE2BitPerm, FeatureSPE_EEF, FeatureTRBE, 7780fca6ea1SDimitry Andric FeatureFlagM, FeaturePredRes, FeatureSB, FeatureSSBS, 7790fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC, 7800fca6ea1SDimitry Andric FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, 7810fca6ea1SDimitry Andric FeatureJS, FeatureLSE, FeatureNEON, FeaturePAuth, FeatureRAS, 7820fca6ea1SDimitry Andric FeatureRCPC, FeatureRDM]; 7830fca6ea1SDimitry Andric list<SubtargetFeature> R82 = [HasV8_0rOps, FeaturePerfMon, FeatureFullFP16, 7840fca6ea1SDimitry Andric FeatureFP16FML, FeatureSSBS, FeaturePredRes, 7850fca6ea1SDimitry Andric FeatureSB, FeatureRDM, FeatureDotProd, 7860fca6ea1SDimitry Andric FeatureComplxNum, FeatureJS, 7870fca6ea1SDimitry Andric FeatureCacheDeepPersist, 7880fca6ea1SDimitry Andric FeatureFlagM, FeatureCRC, FeatureLSE, FeatureRAS, FeatureFPARMv8, 7890fca6ea1SDimitry Andric FeatureNEON, FeaturePAuth, FeatureRCPC]; 7900fca6ea1SDimitry Andric list<SubtargetFeature> R82AE = [HasV8_0rOps, FeaturePerfMon, FeatureFullFP16, 7910fca6ea1SDimitry Andric FeatureFP16FML, FeatureSSBS, FeaturePredRes, 7920fca6ea1SDimitry Andric FeatureSB, FeatureRDM, FeatureDotProd, 7930fca6ea1SDimitry Andric FeatureComplxNum, FeatureJS, 7940fca6ea1SDimitry Andric FeatureCacheDeepPersist, 7950fca6ea1SDimitry Andric FeatureLSE, FeatureFlagM, FeatureCRC, FeatureFPARMv8, FeatureNEON, 7960fca6ea1SDimitry Andric FeaturePAuth, FeatureRAS, FeatureRCPC]; 7970fca6ea1SDimitry Andric list<SubtargetFeature> X1 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 7980fca6ea1SDimitry Andric FeatureNEON, FeatureRCPC, FeaturePerfMon, 7990fca6ea1SDimitry Andric FeatureSPE, FeatureFullFP16, FeatureDotProd, 8000fca6ea1SDimitry Andric FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM]; 8010fca6ea1SDimitry Andric list<SubtargetFeature> X1C = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 8020fca6ea1SDimitry Andric FeatureNEON, FeatureRCPC_IMMO, FeaturePerfMon, 8030fca6ea1SDimitry Andric FeatureSPE, FeatureFullFP16, FeatureDotProd, 8040fca6ea1SDimitry Andric FeaturePAuth, FeatureSSBS, FeatureFlagM, 8050fca6ea1SDimitry Andric FeatureLSE2, 8060fca6ea1SDimitry Andric FeatureRCPC, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM]; 8070fca6ea1SDimitry Andric list<SubtargetFeature> X2 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon, 8080fca6ea1SDimitry Andric FeatureMatMulInt8, FeatureBF16, FeatureAM, 8090fca6ea1SDimitry Andric FeatureMTE, FeatureETE, FeatureSVE2BitPerm, 8100fca6ea1SDimitry Andric FeatureFP16FML, 81162987288SDimitry Andric FeatureCCIDX, 8120fca6ea1SDimitry Andric FeaturePAuth, FeatureSSBS, FeatureSB, FeatureSVE, FeatureSVE2, FeatureFlagM, 8130fca6ea1SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, 8140fca6ea1SDimitry Andric FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM]; 8150fca6ea1SDimitry Andric list<SubtargetFeature> X3 = [HasV9_0aOps, FeatureSVE, FeatureNEON, 8160fca6ea1SDimitry Andric FeaturePerfMon, FeatureETE, FeatureTRBE, 8170fca6ea1SDimitry Andric FeatureSPE, FeatureBF16, FeatureMatMulInt8, 8180fca6ea1SDimitry Andric FeatureMTE, FeatureSVE2BitPerm, FeatureFullFP16, 8190fca6ea1SDimitry Andric FeatureFP16FML, 82062987288SDimitry Andric FeatureCCIDX, 8210fca6ea1SDimitry Andric FeatureSB, FeaturePAuth, FeaturePredRes, FeatureFlagM, FeatureSSBS, 8220fca6ea1SDimitry Andric FeatureSVE2, FeatureComplxNum, FeatureCRC, FeatureFPARMv8, FeatureJS, 8230fca6ea1SDimitry Andric FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureDotProd]; 8240fca6ea1SDimitry Andric list<SubtargetFeature> X4 = [HasV9_2aOps, 8250fca6ea1SDimitry Andric FeaturePerfMon, FeatureETE, FeatureTRBE, 8260fca6ea1SDimitry Andric FeatureSPE, FeatureMTE, FeatureSVE2BitPerm, 8270fca6ea1SDimitry Andric FeatureFP16FML, FeatureSPE_EEF, 82862987288SDimitry Andric FeatureCCIDX, 8290fca6ea1SDimitry Andric FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes, 8300fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureComplxNum, FeatureCRC, FeatureDotProd, 8310fca6ea1SDimitry Andric FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS, FeatureLSE, 8320fca6ea1SDimitry Andric FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureBF16]; 8330fca6ea1SDimitry Andric list<SubtargetFeature> X925 = [HasV9_2aOps, FeatureMTE, FeatureFP16FML, 83462987288SDimitry Andric FeatureCCIDX, 8350fca6ea1SDimitry Andric FeatureETE, FeaturePerfMon, FeatureSPE, 8360fca6ea1SDimitry Andric FeatureSVE2BitPerm, FeatureSPE_EEF, FeatureTRBE, 8370fca6ea1SDimitry Andric FeatureFlagM, FeaturePredRes, FeatureSB, FeatureSSBS, 8380fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC, 8390fca6ea1SDimitry Andric FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, 8400fca6ea1SDimitry Andric FeatureJS, FeatureLSE, FeatureNEON, FeaturePAuth, FeatureRAS, 8410fca6ea1SDimitry Andric FeatureRCPC, FeatureRDM]; 8420fca6ea1SDimitry Andric list<SubtargetFeature> A64FX = [HasV8_2aOps, FeatureFPARMv8, FeatureNEON, 8430fca6ea1SDimitry Andric FeatureSHA2, FeaturePerfMon, FeatureFullFP16, 8440fca6ea1SDimitry Andric FeatureSVE, FeatureComplxNum, 8450fca6ea1SDimitry Andric FeatureAES, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM]; 8460fca6ea1SDimitry Andric list<SubtargetFeature> Carmel = [HasV8_2aOps, FeatureNEON, FeatureSHA2, FeatureAES, 8470fca6ea1SDimitry Andric FeatureFullFP16, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM, 8480fca6ea1SDimitry Andric FeatureFPARMv8]; 8490fca6ea1SDimitry Andric list<SubtargetFeature> AppleA7 = [HasV8_0aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 8500fca6ea1SDimitry Andric FeatureNEON,FeaturePerfMon, FeatureAppleA7SysReg]; 8510fca6ea1SDimitry Andric list<SubtargetFeature> AppleA10 = [HasV8_0aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 8520fca6ea1SDimitry Andric FeatureNEON, FeaturePerfMon, FeatureCRC, 8530fca6ea1SDimitry Andric FeatureRDM, FeaturePAN, FeatureLOR, FeatureVH]; 8540fca6ea1SDimitry Andric list<SubtargetFeature> AppleA11 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 8550fca6ea1SDimitry Andric FeatureNEON, FeaturePerfMon, FeatureFullFP16, FeatureCRC, 8560fca6ea1SDimitry Andric FeatureLSE, FeatureRAS, FeatureRDM]; 8570fca6ea1SDimitry Andric list<SubtargetFeature> AppleA12 = [HasV8_3aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 8580fca6ea1SDimitry Andric FeatureNEON, FeaturePerfMon, FeatureFullFP16, 8590fca6ea1SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE, 8600fca6ea1SDimitry Andric FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM]; 8610fca6ea1SDimitry Andric list<SubtargetFeature> AppleA13 = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 8620fca6ea1SDimitry Andric FeatureNEON, FeaturePerfMon, FeatureFullFP16, 8630fca6ea1SDimitry Andric FeatureFP16FML, FeatureSHA3, FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE, 8640fca6ea1SDimitry Andric FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureDotProd]; 8650fca6ea1SDimitry Andric list<SubtargetFeature> AppleA14 = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 8660fca6ea1SDimitry Andric FeatureNEON, FeaturePerfMon, 8670fca6ea1SDimitry Andric FeatureFullFP16, FeatureFP16FML, FeatureSHA3, 8680fca6ea1SDimitry Andric // ArmV8.5-a extensions, excluding BTI: 8690fca6ea1SDimitry Andric FeatureAltFPCmp, FeatureFRInt3264, 8700fca6ea1SDimitry Andric FeatureSpecRestrict, FeatureSSBS, FeatureSB, 8710fca6ea1SDimitry Andric FeaturePredRes, FeatureCacheDeepPersist, 8720fca6ea1SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE, 8730fca6ea1SDimitry Andric FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM, 8740fca6ea1SDimitry Andric FeatureDotProd]; 8750fca6ea1SDimitry Andric list<SubtargetFeature> AppleA15 = [HasV8_6aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 8760fca6ea1SDimitry Andric FeatureNEON, FeaturePerfMon, FeatureSHA3, 8770fca6ea1SDimitry Andric FeatureFullFP16, FeatureFP16FML, 87862987288SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureJS, 87962987288SDimitry Andric FeatureLSE, FeaturePAuth, 88062987288SDimitry Andric FeatureRAS, FeatureRCPC, FeatureRDM, 88162987288SDimitry Andric FeatureBF16, FeatureDotProd, FeatureMatMulInt8, FeatureSSBS]; 8820fca6ea1SDimitry Andric list<SubtargetFeature> AppleA16 = [HasV8_6aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 8830fca6ea1SDimitry Andric FeatureNEON, FeaturePerfMon, FeatureSHA3, 8840fca6ea1SDimitry Andric FeatureFullFP16, FeatureFP16FML, 8850fca6ea1SDimitry Andric FeatureHCX, 88662987288SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureJS, 88762987288SDimitry Andric FeatureLSE, FeaturePAuth, 88862987288SDimitry Andric FeatureRAS, FeatureRCPC, FeatureRDM, 88962987288SDimitry Andric FeatureBF16, FeatureDotProd, FeatureMatMulInt8, FeatureSSBS]; 8900fca6ea1SDimitry Andric list<SubtargetFeature> AppleA17 = [HasV8_6aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 8910fca6ea1SDimitry Andric FeatureNEON, FeaturePerfMon, FeatureSHA3, 8920fca6ea1SDimitry Andric FeatureFullFP16, FeatureFP16FML, 8930fca6ea1SDimitry Andric FeatureHCX, 89462987288SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureJS, 89562987288SDimitry Andric FeatureLSE, FeaturePAuth, 89662987288SDimitry Andric FeatureRAS, FeatureRCPC, FeatureRDM, 89762987288SDimitry Andric FeatureBF16, FeatureDotProd, FeatureMatMulInt8, FeatureSSBS]; 898*6c4b055cSDimitry Andric // Technically apple-m4 is v9.2a, but we can't use that here. 899*6c4b055cSDimitry Andric // Historically, llvm defined v9.0a as requiring SVE, but it's optional 900*6c4b055cSDimitry Andric // according to the Arm ARM, and not supported by the core. We decoupled the 901*6c4b055cSDimitry Andric // two in the clang driver and in the backend subtarget features, but it's 902*6c4b055cSDimitry Andric // still an issue in the clang frontend. v8.7a is the next closest choice. 903*6c4b055cSDimitry Andric list<SubtargetFeature> AppleM4 = [HasV8_7aOps, FeatureSHA2, FeatureFPARMv8, 9040fca6ea1SDimitry Andric FeatureNEON, FeaturePerfMon, FeatureSHA3, 9050fca6ea1SDimitry Andric FeatureFullFP16, FeatureFP16FML, 9060fca6ea1SDimitry Andric FeatureAES, FeatureBF16, 9070fca6ea1SDimitry Andric FeatureSME, FeatureSME2, 9080fca6ea1SDimitry Andric FeatureSMEF64F64, FeatureSMEI16I64, 9090fca6ea1SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE, 9100fca6ea1SDimitry Andric FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM, 9110fca6ea1SDimitry Andric FeatureDotProd, FeatureMatMulInt8]; 9120fca6ea1SDimitry Andric list<SubtargetFeature> ExynosM3 = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES, 9130fca6ea1SDimitry Andric FeaturePerfMon, FeatureNEON, FeatureFPARMv8]; 9140fca6ea1SDimitry Andric list<SubtargetFeature> ExynosM4 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureDotProd, 9150fca6ea1SDimitry Andric FeatureFullFP16, FeaturePerfMon, FeatureCRC, FeatureFPARMv8, 9160fca6ea1SDimitry Andric FeatureLSE, FeatureNEON, FeatureRAS, FeatureRDM]; 9170fca6ea1SDimitry Andric list<SubtargetFeature> Falkor = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES, 9180fca6ea1SDimitry Andric FeatureFPARMv8, FeatureNEON, FeaturePerfMon, 9190fca6ea1SDimitry Andric FeatureRDM]; 9200fca6ea1SDimitry Andric list<SubtargetFeature> NeoverseE1 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureDotProd, 9210fca6ea1SDimitry Andric FeatureFPARMv8, FeatureFullFP16, FeatureNEON, 9220fca6ea1SDimitry Andric FeatureRCPC, FeatureSSBS, FeaturePerfMon, FeatureCRC, 9230fca6ea1SDimitry Andric FeatureLSE, FeatureRAS, FeatureRDM]; 9240fca6ea1SDimitry Andric list<SubtargetFeature> NeoverseN1 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureDotProd, 9250fca6ea1SDimitry Andric FeatureFPARMv8, FeatureFullFP16, FeatureNEON, 9260fca6ea1SDimitry Andric FeatureRCPC, FeatureSPE, FeatureSSBS, 9270fca6ea1SDimitry Andric FeaturePerfMon, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM]; 9280fca6ea1SDimitry Andric list<SubtargetFeature> NeoverseN2 = [HasV9_0aOps, FeatureBF16, FeatureETE, FeatureFP16FML, 9290fca6ea1SDimitry Andric FeatureMatMulInt8, FeatureMTE, FeatureSVE2, 9300fca6ea1SDimitry Andric FeatureSVE2BitPerm, FeatureTRBE, 9310fca6ea1SDimitry Andric FeaturePerfMon, 93262987288SDimitry Andric FeatureCCIDX, 9330fca6ea1SDimitry Andric FeatureDotProd, FeatureFullFP16, FeatureSB, FeatureSSBS, FeatureSVE, 9340fca6ea1SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureFPARMv8, FeatureJS, FeatureLSE, 9350fca6ea1SDimitry Andric FeatureNEON, FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM]; 9360fca6ea1SDimitry Andric list<SubtargetFeature> NeoverseN3 = [HasV9_2aOps, FeatureETE, FeatureFP16FML, 9370fca6ea1SDimitry Andric FeatureFullFP16, FeatureMTE, FeaturePerfMon, 9380fca6ea1SDimitry Andric FeatureRandGen, FeatureSPE, FeatureSPE_EEF, 9390fca6ea1SDimitry Andric FeatureSVE2BitPerm, 94062987288SDimitry Andric FeatureCCIDX, 9410fca6ea1SDimitry Andric FeatureSSBS, FeatureSB, FeaturePredRes, FeaturePAuth, FeatureFlagM, 9420fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, 9430fca6ea1SDimitry Andric FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, 9440fca6ea1SDimitry Andric FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM, 9450fca6ea1SDimitry Andric FeatureNEON]; 9460fca6ea1SDimitry Andric list<SubtargetFeature> Neoverse512TVB = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist, 9470fca6ea1SDimitry Andric FeatureSHA2, FeatureAES, FeatureFPARMv8, FeatureFP16FML, 9480fca6ea1SDimitry Andric FeatureFullFP16, FeatureMatMulInt8, FeatureNEON, 9490fca6ea1SDimitry Andric FeaturePerfMon, FeatureRandGen, FeatureSPE, 9500fca6ea1SDimitry Andric FeatureSSBS, FeatureSVE, 95162987288SDimitry Andric FeatureCCIDX, 9520fca6ea1SDimitry Andric FeatureSHA3, FeatureSM4, FeatureDotProd, FeatureComplxNum, 9530fca6ea1SDimitry Andric FeatureCRC, FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS, 9540fca6ea1SDimitry Andric FeatureRCPC, FeatureRDM]; 9550fca6ea1SDimitry Andric list<SubtargetFeature> NeoverseV1 = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist, 9560fca6ea1SDimitry Andric FeatureSHA2, FeatureAES, FeatureFPARMv8, FeatureFP16FML, 9570fca6ea1SDimitry Andric FeatureFullFP16, FeatureMatMulInt8, FeatureNEON, 9580fca6ea1SDimitry Andric FeaturePerfMon, FeatureRandGen, FeatureSPE, 9590fca6ea1SDimitry Andric FeatureSSBS, FeatureSVE, 96062987288SDimitry Andric FeatureCCIDX, 9610fca6ea1SDimitry Andric FeatureSHA3, FeatureSM4, FeatureDotProd, FeatureComplxNum, 9620fca6ea1SDimitry Andric FeatureCRC, FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS, 9630fca6ea1SDimitry Andric FeatureRCPC, FeatureRDM]; 9640fca6ea1SDimitry Andric list<SubtargetFeature> NeoverseV2 = [HasV9_0aOps, FeatureBF16, FeatureSPE, 9650fca6ea1SDimitry Andric FeaturePerfMon, FeatureETE, FeatureMatMulInt8, 9660fca6ea1SDimitry Andric FeatureNEON, FeatureSVE2BitPerm, FeatureFP16FML, 9670fca6ea1SDimitry Andric FeatureMTE, FeatureRandGen, 96862987288SDimitry Andric FeatureCCIDX, 9690fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureSSBS, FeatureFullFP16, FeatureDotProd, 9700fca6ea1SDimitry Andric FeatureComplxNum, FeatureCRC, FeatureFPARMv8, FeatureJS, FeatureLSE, 9710fca6ea1SDimitry Andric FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM]; 9720fca6ea1SDimitry Andric list<SubtargetFeature> NeoverseV3 = [HasV9_2aOps, FeatureETE, FeatureFP16FML, 9730fca6ea1SDimitry Andric FeatureFullFP16, FeatureLS64, FeatureMTE, 9740fca6ea1SDimitry Andric FeaturePerfMon, FeatureRandGen, FeatureSPE, 97562987288SDimitry Andric FeatureCCIDX, 9760fca6ea1SDimitry Andric FeatureSPE_EEF, FeatureSVE2BitPerm, FeatureBRBE, 9770fca6ea1SDimitry Andric FeatureSSBS, FeatureSB, FeaturePredRes, FeaturePAuth, FeatureFlagM, 9780fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC, 9790fca6ea1SDimitry Andric FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS, FeatureLSE, 9800fca6ea1SDimitry Andric FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureRME]; 9810fca6ea1SDimitry Andric list<SubtargetFeature> NeoverseV3AE = [HasV9_2aOps, FeatureETE, FeatureFP16FML, 9820fca6ea1SDimitry Andric FeatureFullFP16, FeatureLS64, FeatureMTE, 9830fca6ea1SDimitry Andric FeaturePerfMon, FeatureRandGen, FeatureSPE, 9840fca6ea1SDimitry Andric FeatureSPE_EEF, FeatureSVE2BitPerm, FeatureBRBE, 9850fca6ea1SDimitry Andric FeatureSSBS, FeatureSB, FeaturePredRes, FeaturePAuth, FeatureFlagM, 98662987288SDimitry Andric FeatureCCIDX, 9870fca6ea1SDimitry Andric FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC, 9880fca6ea1SDimitry Andric FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS, 9890fca6ea1SDimitry Andric FeatureLSE, FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM, 9900fca6ea1SDimitry Andric FeatureRME]; 9910fca6ea1SDimitry Andric list<SubtargetFeature> Saphira = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 9920fca6ea1SDimitry Andric FeatureNEON, FeatureSPE, FeaturePerfMon, FeatureCRC, 99362987288SDimitry Andric FeatureCCIDX, 9940fca6ea1SDimitry Andric FeatureLSE, FeatureRDM, FeatureRAS, FeatureRCPC]; 9950fca6ea1SDimitry Andric list<SubtargetFeature> ThunderX = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES, 9960fca6ea1SDimitry Andric FeatureFPARMv8, FeaturePerfMon, FeatureNEON]; 9970fca6ea1SDimitry Andric list<SubtargetFeature> ThunderX2T99 = [HasV8_1aOps, FeatureCRC, FeatureSHA2, FeatureAES, 9980fca6ea1SDimitry Andric FeatureFPARMv8, FeatureNEON, FeatureLSE, 9990fca6ea1SDimitry Andric FeatureRDM]; 10000fca6ea1SDimitry Andric list<SubtargetFeature> ThunderX3T110 = [HasV8_3aOps, FeatureCRC, FeatureSHA2, FeatureAES, 10010fca6ea1SDimitry Andric FeatureFPARMv8, FeatureNEON, FeatureLSE, 100262987288SDimitry Andric FeatureCCIDX, 10030fca6ea1SDimitry Andric FeaturePAuth, FeaturePerfMon, FeatureComplxNum, 10040fca6ea1SDimitry Andric FeatureJS, FeatureRAS, FeatureRCPC, FeatureRDM]; 10050fca6ea1SDimitry Andric list<SubtargetFeature> TSV110 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8, 10060fca6ea1SDimitry Andric FeatureNEON, FeaturePerfMon, FeatureSPE, 10070fca6ea1SDimitry Andric FeatureFullFP16, FeatureFP16FML, FeatureDotProd, 10080fca6ea1SDimitry Andric FeatureJS, FeatureComplxNum, FeatureCRC, FeatureLSE, 10090fca6ea1SDimitry Andric FeatureRAS, FeatureRDM]; 10100fca6ea1SDimitry Andric list<SubtargetFeature> Ampere1 = [HasV8_6aOps, FeatureNEON, FeaturePerfMon, 10110fca6ea1SDimitry Andric FeatureSSBS, FeatureRandGen, FeatureSB, 10120fca6ea1SDimitry Andric FeatureSHA2, FeatureSHA3, FeatureAES, 10130fca6ea1SDimitry Andric FeatureFullFP16, FeatureBF16, FeatureComplxNum, FeatureCRC, 10140fca6ea1SDimitry Andric FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS, 101562987288SDimitry Andric FeatureCCIDX, 10160fca6ea1SDimitry Andric FeatureLSE, FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM]; 10170fca6ea1SDimitry Andric list<SubtargetFeature> Ampere1A = [HasV8_6aOps, FeatureNEON, FeaturePerfMon, 10180fca6ea1SDimitry Andric FeatureMTE, FeatureSSBS, FeatureRandGen, 10190fca6ea1SDimitry Andric FeatureSB, FeatureSM4, FeatureSHA2, 10200fca6ea1SDimitry Andric FeatureSHA3, FeatureAES, 10210fca6ea1SDimitry Andric FeatureFullFP16, FeatureBF16, FeatureComplxNum, 10220fca6ea1SDimitry Andric FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, 10230fca6ea1SDimitry Andric FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS, FeatureRCPC, 102462987288SDimitry Andric FeatureCCIDX, 10250fca6ea1SDimitry Andric FeatureRDM]; 10260fca6ea1SDimitry Andric list<SubtargetFeature> Ampere1B = [HasV8_7aOps, FeatureNEON, FeaturePerfMon, 10270fca6ea1SDimitry Andric FeatureMTE, FeatureSSBS, FeatureRandGen, 10280fca6ea1SDimitry Andric FeatureSB, FeatureSM4, FeatureSHA2, 10290fca6ea1SDimitry Andric FeatureSHA3, FeatureAES, FeatureCSSC, 10300fca6ea1SDimitry Andric FeatureWFxT, FeatureFullFP16, FeatureBF16, FeatureComplxNum, 10310fca6ea1SDimitry Andric FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, 10320fca6ea1SDimitry Andric FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS, FeatureRCPC, 103362987288SDimitry Andric FeatureCCIDX, 10340fca6ea1SDimitry Andric FeatureRDM]; 10350fca6ea1SDimitry Andric 10360fca6ea1SDimitry Andric list<SubtargetFeature> Oryon = [HasV8_6aOps, FeatureNEON, FeaturePerfMon, 10370fca6ea1SDimitry Andric FeatureRandGen, 10380fca6ea1SDimitry Andric FeaturePAuth, FeatureSM4, FeatureSHA2, 10390fca6ea1SDimitry Andric FeatureSHA3, FeatureAES, 10400fca6ea1SDimitry Andric FeatureSPE, FeatureBF16, FeatureComplxNum, FeatureCRC, 10410fca6ea1SDimitry Andric FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, 104262987288SDimitry Andric FeatureSSBS, FeatureCCIDX, 10430fca6ea1SDimitry Andric FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM]; 10440fca6ea1SDimitry Andric 10450fca6ea1SDimitry Andric // ETE and TRBE are future architecture extensions. We temporarily enable them 10460fca6ea1SDimitry Andric // by default for users targeting generic AArch64. The extensions do not 10470fca6ea1SDimitry Andric // affect code generated by the compiler and can be used only by explicitly 10480fca6ea1SDimitry Andric // mentioning the new system register names in assembly. 10490fca6ea1SDimitry Andric list<SubtargetFeature> Generic = [FeatureFPARMv8, FeatureNEON, FeatureETE]; 10500fca6ea1SDimitry Andric} 10510fca6ea1SDimitry Andric 10520fca6ea1SDimitry Andric// Define an alternative name for a given Processor. 10530fca6ea1SDimitry Andricclass ProcessorAlias<string n, string alias> { 10540fca6ea1SDimitry Andric string Name = n; 10550fca6ea1SDimitry Andric string Alias = alias; 10560fca6ea1SDimitry Andric} 10570fca6ea1SDimitry Andric 10580fca6ea1SDimitry Andric// FeatureFuseAdrpAdd is enabled under Generic to allow linker merging 10590fca6ea1SDimitry Andric// optimizations. 10600fca6ea1SDimitry Andricdef : ProcessorModel<"generic", CortexA510Model, ProcessorFeatures.Generic, 10610fca6ea1SDimitry Andric [FeatureFuseAES, FeatureFuseAdrpAdd, FeaturePostRAScheduler, 10620fca6ea1SDimitry Andric FeatureEnableSelectOptimize]>; 10630fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a35", CortexA53Model, ProcessorFeatures.A53, 10640fca6ea1SDimitry Andric [TuneA35]>; 10650fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a34", CortexA53Model, ProcessorFeatures.A53, 10660fca6ea1SDimitry Andric [TuneA35]>; 10670fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a53", CortexA53Model, ProcessorFeatures.A53, 10680fca6ea1SDimitry Andric [TuneA53]>; 10690fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a55", CortexA55Model, ProcessorFeatures.A55, 10700fca6ea1SDimitry Andric [TuneA55]>; 10710fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a510", CortexA510Model, ProcessorFeatures.A510, 10720fca6ea1SDimitry Andric [TuneA510]>; 10730fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a520", CortexA510Model, ProcessorFeatures.A520, 10740fca6ea1SDimitry Andric [TuneA520]>; 10750fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a520ae", CortexA510Model, ProcessorFeatures.A520AE, 10760fca6ea1SDimitry Andric [TuneA520AE]>; 10770fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a57", CortexA57Model, ProcessorFeatures.A53, 10780fca6ea1SDimitry Andric [TuneA57]>; 10790fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a65", CortexA53Model, ProcessorFeatures.A65, 10800fca6ea1SDimitry Andric [TuneA65]>; 10810fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a65ae", CortexA53Model, ProcessorFeatures.A65, 10820fca6ea1SDimitry Andric [TuneA65]>; 10830fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a72", CortexA57Model, ProcessorFeatures.A53, 10840fca6ea1SDimitry Andric [TuneA72]>; 10850fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a73", CortexA57Model, ProcessorFeatures.A53, 10860fca6ea1SDimitry Andric [TuneA73]>; 10870fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a75", CortexA57Model, ProcessorFeatures.A55, 10880fca6ea1SDimitry Andric [TuneA75]>; 10890fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a76", CortexA57Model, ProcessorFeatures.A76, 10900fca6ea1SDimitry Andric [TuneA76]>; 10910fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a76ae", CortexA57Model, ProcessorFeatures.A76, 10920fca6ea1SDimitry Andric [TuneA76]>; 10930fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a77", CortexA57Model, ProcessorFeatures.A77, 10940fca6ea1SDimitry Andric [TuneA77]>; 10950fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a78", CortexA57Model, ProcessorFeatures.A78, 10960fca6ea1SDimitry Andric [TuneA78]>; 10970fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a78ae", CortexA57Model, ProcessorFeatures.A78AE, 10980fca6ea1SDimitry Andric [TuneA78AE]>; 10990fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a78c", CortexA57Model, ProcessorFeatures.A78C, 11000fca6ea1SDimitry Andric [TuneA78C]>; 11010fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a710", NeoverseN2Model, ProcessorFeatures.A710, 11020fca6ea1SDimitry Andric [TuneA710]>; 11030fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a715", NeoverseN2Model, ProcessorFeatures.A715, 11040fca6ea1SDimitry Andric [TuneA715]>; 11050fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a720", NeoverseN2Model, ProcessorFeatures.A720, 11060fca6ea1SDimitry Andric [TuneA720]>; 11070fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a720ae", NeoverseN2Model, ProcessorFeatures.A720AE, 11080fca6ea1SDimitry Andric [TuneA720AE]>; 11090fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-a725", NeoverseN2Model, ProcessorFeatures.A725, 11100fca6ea1SDimitry Andric [TuneA725]>; 11110fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-r82", CortexA55Model, ProcessorFeatures.R82, 11120fca6ea1SDimitry Andric [TuneR82]>; 11130fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-r82ae", CortexA55Model, ProcessorFeatures.R82AE, 11140fca6ea1SDimitry Andric [TuneR82AE]>; 11150fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-x1", CortexA57Model, ProcessorFeatures.X1, 11160fca6ea1SDimitry Andric [TuneX1]>; 11170fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-x1c", CortexA57Model, ProcessorFeatures.X1C, 11180fca6ea1SDimitry Andric [TuneX1]>; 11190fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-x2", NeoverseN2Model, ProcessorFeatures.X2, 11200fca6ea1SDimitry Andric [TuneX2]>; 11210fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-x3", NeoverseN2Model, ProcessorFeatures.X3, 11220fca6ea1SDimitry Andric [TuneX3]>; 11230fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-x4", NeoverseN2Model, ProcessorFeatures.X4, 11240fca6ea1SDimitry Andric [TuneX4]>; 11250fca6ea1SDimitry Andricdef : ProcessorModel<"cortex-x925", NeoverseV2Model, ProcessorFeatures.X925, 11260fca6ea1SDimitry Andric [TuneX925]>; 11270fca6ea1SDimitry Andricdef : ProcessorModel<"neoverse-e1", CortexA53Model, 11280fca6ea1SDimitry Andric ProcessorFeatures.NeoverseE1, [TuneNeoverseE1]>; 11290fca6ea1SDimitry Andricdef : ProcessorModel<"neoverse-n1", NeoverseN1Model, 11300fca6ea1SDimitry Andric ProcessorFeatures.NeoverseN1, [TuneNeoverseN1]>; 11310fca6ea1SDimitry Andricdef : ProcessorModel<"neoverse-n2", NeoverseN2Model, 11320fca6ea1SDimitry Andric ProcessorFeatures.NeoverseN2, [TuneNeoverseN2]>; 11330fca6ea1SDimitry Andricdef : ProcessorAlias<"cobalt-100", "neoverse-n2">; 11340fca6ea1SDimitry Andricdef : ProcessorModel<"neoverse-n3", NeoverseN2Model, 11350fca6ea1SDimitry Andric ProcessorFeatures.NeoverseN3, [TuneNeoverseN3]>; 11360fca6ea1SDimitry Andricdef : ProcessorModel<"neoverse-512tvb", NeoverseV1Model, 11370fca6ea1SDimitry Andric ProcessorFeatures.Neoverse512TVB, [TuneNeoverse512TVB]>; 11380fca6ea1SDimitry Andricdef : ProcessorModel<"neoverse-v1", NeoverseV1Model, 11390fca6ea1SDimitry Andric ProcessorFeatures.NeoverseV1, [TuneNeoverseV1]>; 11400fca6ea1SDimitry Andricdef : ProcessorModel<"neoverse-v2", NeoverseV2Model, 11410fca6ea1SDimitry Andric ProcessorFeatures.NeoverseV2, [TuneNeoverseV2]>; 11420fca6ea1SDimitry Andricdef : ProcessorAlias<"grace", "neoverse-v2">; 11430fca6ea1SDimitry Andricdef : ProcessorModel<"neoverse-v3", NeoverseV2Model, 11440fca6ea1SDimitry Andric ProcessorFeatures.NeoverseV3, [TuneNeoverseV3]>; 11450fca6ea1SDimitry Andricdef : ProcessorModel<"neoverse-v3ae", NeoverseV2Model, 11460fca6ea1SDimitry Andric ProcessorFeatures.NeoverseV3AE, [TuneNeoverseV3AE]>; 11470fca6ea1SDimitry Andricdef : ProcessorModel<"exynos-m3", ExynosM3Model, ProcessorFeatures.ExynosM3, 11480fca6ea1SDimitry Andric [TuneExynosM3]>; 11490fca6ea1SDimitry Andricdef : ProcessorModel<"exynos-m4", ExynosM4Model, ProcessorFeatures.ExynosM4, 11500fca6ea1SDimitry Andric [TuneExynosM4]>; 11510fca6ea1SDimitry Andricdef : ProcessorModel<"exynos-m5", ExynosM5Model, ProcessorFeatures.ExynosM4, 11520fca6ea1SDimitry Andric [TuneExynosM4]>; 11530fca6ea1SDimitry Andricdef : ProcessorModel<"falkor", FalkorModel, ProcessorFeatures.Falkor, 11540fca6ea1SDimitry Andric [TuneFalkor]>; 11550fca6ea1SDimitry Andricdef : ProcessorModel<"saphira", FalkorModel, ProcessorFeatures.Saphira, 11560fca6ea1SDimitry Andric [TuneSaphira]>; 11570fca6ea1SDimitry Andricdef : ProcessorModel<"kryo", KryoModel, ProcessorFeatures.A53, [TuneKryo]>; 11580fca6ea1SDimitry Andric 11590fca6ea1SDimitry Andric// Cavium ThunderX/ThunderX T8X Processors 11600fca6ea1SDimitry Andricdef : ProcessorModel<"thunderx", ThunderXT8XModel, ProcessorFeatures.ThunderX, 11610fca6ea1SDimitry Andric [TuneThunderX]>; 11620fca6ea1SDimitry Andricdef : ProcessorModel<"thunderxt88", ThunderXT8XModel, 11630fca6ea1SDimitry Andric ProcessorFeatures.ThunderX, [TuneThunderXT88]>; 11640fca6ea1SDimitry Andricdef : ProcessorModel<"thunderxt81", ThunderXT8XModel, 11650fca6ea1SDimitry Andric ProcessorFeatures.ThunderX, [TuneThunderXT81]>; 11660fca6ea1SDimitry Andricdef : ProcessorModel<"thunderxt83", ThunderXT8XModel, 11670fca6ea1SDimitry Andric ProcessorFeatures.ThunderX, [TuneThunderXT83]>; 11680fca6ea1SDimitry Andric// Cavium ThunderX2T9X Processors. Formerly Broadcom Vulcan. 11690fca6ea1SDimitry Andricdef : ProcessorModel<"thunderx2t99", ThunderX2T99Model, 11700fca6ea1SDimitry Andric ProcessorFeatures.ThunderX2T99, [TuneThunderX2T99]>; 11710fca6ea1SDimitry Andric// Marvell ThunderX3T110 Processors. 11720fca6ea1SDimitry Andricdef : ProcessorModel<"thunderx3t110", ThunderX3T110Model, 11730fca6ea1SDimitry Andric ProcessorFeatures.ThunderX3T110, [TuneThunderX3T110]>; 11740fca6ea1SDimitry Andricdef : ProcessorModel<"tsv110", TSV110Model, ProcessorFeatures.TSV110, 11750fca6ea1SDimitry Andric [TuneTSV110]>; 11760fca6ea1SDimitry Andric 11770fca6ea1SDimitry Andric 11780fca6ea1SDimitry Andric// Apple CPUs 11790fca6ea1SDimitry Andric 11800fca6ea1SDimitry Andricdef : ProcessorModel<"apple-a7", CycloneModel, ProcessorFeatures.AppleA7, 11810fca6ea1SDimitry Andric [TuneAppleA7]>; 11820fca6ea1SDimitry Andric// Support cyclone as an alias for apple-a7 so we can still LTO old bitcode. 11830fca6ea1SDimitry Andricdef : ProcessorAlias<"cyclone", "apple-a7">; 11840fca6ea1SDimitry Andricdef : ProcessorAlias<"apple-a8", "apple-a7">; 11850fca6ea1SDimitry Andricdef : ProcessorAlias<"apple-a9", "apple-a7">; 11860fca6ea1SDimitry Andric 11870fca6ea1SDimitry Andricdef : ProcessorModel<"apple-a10", CycloneModel, ProcessorFeatures.AppleA10, 11880fca6ea1SDimitry Andric [TuneAppleA10]>; 11890fca6ea1SDimitry Andric 11900fca6ea1SDimitry Andricdef : ProcessorModel<"apple-a11", CycloneModel, ProcessorFeatures.AppleA11, 11910fca6ea1SDimitry Andric [TuneAppleA11]>; 11920fca6ea1SDimitry Andric 11930fca6ea1SDimitry Andricdef : ProcessorModel<"apple-a12", CycloneModel, ProcessorFeatures.AppleA12, 11940fca6ea1SDimitry Andric [TuneAppleA12]>; 11950fca6ea1SDimitry Andricdef : ProcessorAlias<"apple-s4", "apple-a12">; 11960fca6ea1SDimitry Andricdef : ProcessorAlias<"apple-s5", "apple-a12">; 11970fca6ea1SDimitry Andric 11980fca6ea1SDimitry Andricdef : ProcessorModel<"apple-a13", CycloneModel, ProcessorFeatures.AppleA13, 11990fca6ea1SDimitry Andric [TuneAppleA13]>; 12000fca6ea1SDimitry Andric 12010fca6ea1SDimitry Andricdef : ProcessorModel<"apple-a14", CycloneModel, ProcessorFeatures.AppleA14, 12020fca6ea1SDimitry Andric [TuneAppleA14]>; 12030fca6ea1SDimitry Andricdef : ProcessorAlias<"apple-m1", "apple-a14">; 12040fca6ea1SDimitry Andric 12050fca6ea1SDimitry Andricdef : ProcessorModel<"apple-a15", CycloneModel, ProcessorFeatures.AppleA15, 12060fca6ea1SDimitry Andric [TuneAppleA15]>; 12070fca6ea1SDimitry Andricdef : ProcessorAlias<"apple-m2", "apple-a15">; 12080fca6ea1SDimitry Andric 12090fca6ea1SDimitry Andricdef : ProcessorModel<"apple-a16", CycloneModel, ProcessorFeatures.AppleA16, 12100fca6ea1SDimitry Andric [TuneAppleA16]>; 12110fca6ea1SDimitry Andricdef : ProcessorAlias<"apple-m3", "apple-a16">; 12120fca6ea1SDimitry Andric 12130fca6ea1SDimitry Andricdef : ProcessorModel<"apple-a17", CycloneModel, ProcessorFeatures.AppleA17, 12140fca6ea1SDimitry Andric [TuneAppleA17]>; 12150fca6ea1SDimitry Andric 12160fca6ea1SDimitry Andricdef : ProcessorModel<"apple-m4", CycloneModel, ProcessorFeatures.AppleM4, 12170fca6ea1SDimitry Andric [TuneAppleM4]>; 12180fca6ea1SDimitry Andric 12190fca6ea1SDimitry Andric// Alias for the latest Apple processor model supported by LLVM. 12200fca6ea1SDimitry Andricdef : ProcessorAlias<"apple-latest", "apple-m4">; 12210fca6ea1SDimitry Andric 12220fca6ea1SDimitry Andric 12230fca6ea1SDimitry Andric// Fujitsu A64FX 12240fca6ea1SDimitry Andricdef : ProcessorModel<"a64fx", A64FXModel, ProcessorFeatures.A64FX, 12250fca6ea1SDimitry Andric [TuneA64FX]>; 12260fca6ea1SDimitry Andric 12270fca6ea1SDimitry Andric// Nvidia Carmel 12280fca6ea1SDimitry Andricdef : ProcessorModel<"carmel", NoSchedModel, ProcessorFeatures.Carmel, 12290fca6ea1SDimitry Andric [TuneCarmel]>; 12300fca6ea1SDimitry Andric 12310fca6ea1SDimitry Andric// Ampere Computing 12320fca6ea1SDimitry Andricdef : ProcessorModel<"ampere1", Ampere1Model, ProcessorFeatures.Ampere1, 12330fca6ea1SDimitry Andric [TuneAmpere1]>; 12340fca6ea1SDimitry Andric 12350fca6ea1SDimitry Andricdef : ProcessorModel<"ampere1a", Ampere1Model, ProcessorFeatures.Ampere1A, 12360fca6ea1SDimitry Andric [TuneAmpere1A]>; 12370fca6ea1SDimitry Andric 12380fca6ea1SDimitry Andricdef : ProcessorModel<"ampere1b", Ampere1BModel, ProcessorFeatures.Ampere1B, 12390fca6ea1SDimitry Andric [TuneAmpere1B]>; 12400fca6ea1SDimitry Andric 12410fca6ea1SDimitry Andric// Qualcomm Oryon 12420fca6ea1SDimitry Andricdef : ProcessorModel<"oryon-1", OryonModel, ProcessorFeatures.Oryon, 12430fca6ea1SDimitry Andric [TuneOryon]>; 1244