Warning, /include/llvm/TargetParser/AArch64TargetParserDef.inc is written in an unsupported language. File is not indexed.
0001 // Autogenerated by ARMTargetDefEmitter.cpp
0002
0003 #ifndef ARM_PROCESSOR_FAMILY
0004 #define ARM_PROCESSOR_FAMILY(ENUM)
0005 #endif
0006
0007 ARM_PROCESSOR_FAMILY(TSV110)
0008 ARM_PROCESSOR_FAMILY(CortexR82)
0009 ARM_PROCESSOR_FAMILY(ThunderX2T99)
0010 ARM_PROCESSOR_FAMILY(AppleA17)
0011 ARM_PROCESSOR_FAMILY(Neoverse512TVB)
0012 ARM_PROCESSOR_FAMILY(ThunderXT81)
0013 ARM_PROCESSOR_FAMILY(CortexA725)
0014 ARM_PROCESSOR_FAMILY(CortexA55)
0015 ARM_PROCESSOR_FAMILY(MONAKA)
0016 ARM_PROCESSOR_FAMILY(CortexA78AE)
0017 ARM_PROCESSOR_FAMILY(CortexX4)
0018 ARM_PROCESSOR_FAMILY(CortexA520)
0019 ARM_PROCESSOR_FAMILY(AppleA13)
0020 ARM_PROCESSOR_FAMILY(CortexA76)
0021 ARM_PROCESSOR_FAMILY(NeoverseN1)
0022 ARM_PROCESSOR_FAMILY(Kryo)
0023 ARM_PROCESSOR_FAMILY(AppleA11)
0024 ARM_PROCESSOR_FAMILY(AppleA14)
0025 ARM_PROCESSOR_FAMILY(NeoverseN2)
0026 ARM_PROCESSOR_FAMILY(AppleA16)
0027 ARM_PROCESSOR_FAMILY(CortexA73)
0028 ARM_PROCESSOR_FAMILY(CortexX2)
0029 ARM_PROCESSOR_FAMILY(AppleA7)
0030 ARM_PROCESSOR_FAMILY(CortexA77)
0031 ARM_PROCESSOR_FAMILY(CortexA53)
0032 ARM_PROCESSOR_FAMILY(Ampere1B)
0033 ARM_PROCESSOR_FAMILY(Ampere1A)
0034 ARM_PROCESSOR_FAMILY(CortexA35)
0035 ARM_PROCESSOR_FAMILY(CortexA510)
0036 ARM_PROCESSOR_FAMILY(ExynosM3)
0037 ARM_PROCESSOR_FAMILY(NeoverseV1)
0038 ARM_PROCESSOR_FAMILY(ThunderX)
0039 ARM_PROCESSOR_FAMILY(CortexA710)
0040 ARM_PROCESSOR_FAMILY(AppleM4)
0041 ARM_PROCESSOR_FAMILY(Oryon)
0042 ARM_PROCESSOR_FAMILY(Ampere1)
0043 ARM_PROCESSOR_FAMILY(CortexA78C)
0044 ARM_PROCESSOR_FAMILY(AppleA12)
0045 ARM_PROCESSOR_FAMILY(A64FX)
0046 ARM_PROCESSOR_FAMILY(NeoverseN3)
0047 ARM_PROCESSOR_FAMILY(NeoverseV2)
0048 ARM_PROCESSOR_FAMILY(ThunderX3T110)
0049 ARM_PROCESSOR_FAMILY(CortexA57)
0050 ARM_PROCESSOR_FAMILY(CortexA75)
0051 ARM_PROCESSOR_FAMILY(Saphira)
0052 ARM_PROCESSOR_FAMILY(Carmel)
0053 ARM_PROCESSOR_FAMILY(CortexA72)
0054 ARM_PROCESSOR_FAMILY(ThunderXT83)
0055 ARM_PROCESSOR_FAMILY(NeoverseV3)
0056 ARM_PROCESSOR_FAMILY(ThunderXT88)
0057 ARM_PROCESSOR_FAMILY(Falkor)
0058 ARM_PROCESSOR_FAMILY(CortexX3)
0059 ARM_PROCESSOR_FAMILY(CortexA720)
0060 ARM_PROCESSOR_FAMILY(CortexX1)
0061 ARM_PROCESSOR_FAMILY(CortexA78)
0062 ARM_PROCESSOR_FAMILY(NeoverseE1)
0063 ARM_PROCESSOR_FAMILY(CortexA715)
0064 ARM_PROCESSOR_FAMILY(AppleA15)
0065 ARM_PROCESSOR_FAMILY(CortexR82AE)
0066 ARM_PROCESSOR_FAMILY(AppleA10)
0067 ARM_PROCESSOR_FAMILY(CortexX925)
0068 ARM_PROCESSOR_FAMILY(CortexA65)
0069
0070 #undef ARM_PROCESSOR_FAMILY
0071
0072 #ifndef ARM_ARCHITECTURE
0073 #define ARM_ARCHITECTURE(ENUM)
0074 #endif
0075
0076
0077 #undef ARM_ARCHITECTURE
0078
0079 #ifdef EMIT_ARCHEXTKIND_ENUM
0080 enum ArchExtKind : unsigned {
0081 AEK_AES,
0082 AEK_ALTERNATIVENZCV,
0083 AEK_AM,
0084 AEK_AMVS,
0085 AEK_BF16,
0086 AEK_BRBE,
0087 AEK_BTI,
0088 AEK_CCDP,
0089 AEK_CCIDX,
0090 AEK_CCPP,
0091 AEK_CHK,
0092 AEK_CLRBHB,
0093 AEK_CMPBR,
0094 AEK_FCMA,
0095 AEK_CPA,
0096 AEK_CRC,
0097 AEK_CRYPTO,
0098 AEK_CSSC,
0099 AEK_D128,
0100 AEK_DIT,
0101 AEK_DOTPROD,
0102 AEK_ENHANCEDCOUNTERVIRTUALIZATION,
0103 AEK_ETE,
0104 AEK_F32MM,
0105 AEK_F64MM,
0106 AEK_F8F16MM,
0107 AEK_F8F32MM,
0108 AEK_FAMINMAX,
0109 AEK_FINEGRAINEDTRAPS,
0110 AEK_FLAGM,
0111 AEK_FP,
0112 AEK_FP16FML,
0113 AEK_FP8,
0114 AEK_FP8DOT2,
0115 AEK_FP8DOT4,
0116 AEK_FP8FMA,
0117 AEK_FPAC,
0118 AEK_FPRCVT,
0119 AEK_FRINT3264,
0120 AEK_FP16,
0121 AEK_GCS,
0122 AEK_HBC,
0123 AEK_HCX,
0124 AEK_I8MM,
0125 AEK_ITE,
0126 AEK_JSCVT,
0127 AEK_LOR,
0128 AEK_LS64,
0129 AEK_LSE,
0130 AEK_LSE128,
0131 AEK_LSE2,
0132 AEK_LSFE,
0133 AEK_LSUI,
0134 AEK_LUT,
0135 AEK_MEC,
0136 AEK_MOPS,
0137 AEK_MPAM,
0138 AEK_MTE,
0139 AEK_SIMD,
0140 AEK_NMI,
0141 AEK_NV,
0142 AEK_OCCMO,
0143 AEK_PAN,
0144 AEK_PAN_RWV,
0145 AEK_PAUTH,
0146 AEK_PAUTHLR,
0147 AEK_PCDPHINT,
0148 AEK_PERFMON,
0149 AEK_POPS,
0150 AEK_PREDRES,
0151 AEK_PRFM_SLC,
0152 AEK_RAND,
0153 AEK_RAS,
0154 AEK_RASV2,
0155 AEK_RCPC,
0156 AEK_RCPC_IMMO,
0157 AEK_RCPC3,
0158 AEK_RDM,
0159 AEK_RME,
0160 AEK_SB,
0161 AEK_SEL2,
0162 AEK_SHA2,
0163 AEK_SHA3,
0164 AEK_SM4,
0165 AEK_SME,
0166 AEK_SMEB16B16,
0167 AEK_SMEF16F16,
0168 AEK_SMEF64F64,
0169 AEK_SMEF8F16,
0170 AEK_SMEF8F32,
0171 AEK_SMEFA64,
0172 AEK_SMEI16I64,
0173 AEK_SME_LUTV2,
0174 AEK_SME_MOP4,
0175 AEK_SME_TMOP,
0176 AEK_SME2,
0177 AEK_SME2P1,
0178 AEK_SME2P2,
0179 AEK_PROFILE,
0180 AEK_SPE_EEF,
0181 AEK_SPECRES2,
0182 AEK_SPECRESTRICT,
0183 AEK_SSBS,
0184 AEK_SSVE_AES,
0185 AEK_SSVE_BITPERM,
0186 AEK_SSVE_FP8DOT2,
0187 AEK_SSVE_FP8DOT4,
0188 AEK_SSVE_FP8FMA,
0189 AEK_SVE,
0190 AEK_SVEAES,
0191 AEK_SVE_AES2,
0192 AEK_SVEB16B16,
0193 AEK_SVE_BFSCALE,
0194 AEK_SVEBITPERM,
0195 AEK_SVE_F16F32MM,
0196 AEK_SVE2,
0197 AEK_SVE2AES,
0198 AEK_SVE2BITPERM,
0199 AEK_SVE2SHA3,
0200 AEK_SVE2SM4,
0201 AEK_SVE2P1,
0202 AEK_SVE2P2,
0203 AEK_THE,
0204 AEK_TLB_RMI,
0205 AEK_TLBIW,
0206 AEK_TME,
0207 AEK_TRACEV8_4,
0208 AEK_TRBE,
0209 AEK_PSUAO,
0210 AEK_VH,
0211 AEK_WFXT,
0212 AEK_XS,
0213 AEK_NUM_EXTENSIONS
0214 };
0215 #undef EMIT_ARCHEXTKIND_ENUM
0216 #endif // EMIT_ARCHEXTKIND_ENUM
0217 #ifdef EMIT_EXTENSIONS
0218 inline constexpr ExtensionInfo Extensions[] = {
0219 {"aes", {}, AArch64::AEK_AES, "FEAT_AES, FEAT_PMULL", "Enable AES support", "+aes", "-aes"},
0220 {"", {}, AArch64::AEK_ALTERNATIVENZCV, "FEAT_FlagM2", "Enable alternative NZCV format for floating point comparisons", "+altnzcv", "-altnzcv"},
0221 {"", {}, AArch64::AEK_AM, "FEAT_AMUv1", "Enable Armv8.4-A Activity Monitors extension", "+am", "-am"},
0222 {"", {}, AArch64::AEK_AMVS, "FEAT_AMUv1p1", "Enable Armv8.6-A Activity Monitors Virtualization support", "+amvs", "-amvs"},
0223 {"bf16", {}, AArch64::AEK_BF16, "FEAT_BF16", "Enable BFloat16 Extension", "+bf16", "-bf16"},
0224 {"brbe", {}, AArch64::AEK_BRBE, "FEAT_BRBE", "Enable Branch Record Buffer Extension", "+brbe", "-brbe"},
0225 {"bti", {}, AArch64::AEK_BTI, "FEAT_BTI", "Enable Branch Target Identification", "+bti", "-bti"},
0226 {"", {}, AArch64::AEK_CCDP, "FEAT_DPB2", "Enable Armv8.5-A Cache Clean to Point of Deep Persistence", "+ccdp", "-ccdp"},
0227 {"", {}, AArch64::AEK_CCIDX, "FEAT_CCIDX", "Enable Armv8.3-A Extend of the CCSIDR number of sets", "+ccidx", "-ccidx"},
0228 {"", {}, AArch64::AEK_CCPP, "FEAT_DPB", "Enable Armv8.2-A data Cache Clean to Point of Persistence", "+ccpp", "-ccpp"},
0229 {"", {}, AArch64::AEK_CHK, "FEAT_CHK", "Enable Armv8.0-A Check Feature Status Extension", "+chk", "-chk"},
0230 {"", {}, AArch64::AEK_CLRBHB, "FEAT_CLRBHB", "Enable Clear BHB instruction", "+clrbhb", "-clrbhb"},
0231 {"cmpbr", {}, AArch64::AEK_CMPBR, "FEAT_CMPBR", "Enable Armv9.6-A base compare and branch instructions", "+cmpbr", "-cmpbr"},
0232 {"fcma", {}, AArch64::AEK_FCMA, "FEAT_FCMA", "Enable Armv8.3-A Floating-point complex number support", "+complxnum", "-complxnum"},
0233 {"cpa", {}, AArch64::AEK_CPA, "FEAT_CPA", "Enable Armv9.5-A Checked Pointer Arithmetic", "+cpa", "-cpa"},
0234 {"crc", {}, AArch64::AEK_CRC, "FEAT_CRC32", "Enable Armv8.0-A CRC-32 checksum instructions", "+crc", "-crc"},
0235 {"crypto", {}, AArch64::AEK_CRYPTO, "FEAT_Crypto", "Enable cryptographic instructions", "+crypto", "-crypto"},
0236 {"cssc", {}, AArch64::AEK_CSSC, "FEAT_CSSC", "Enable Common Short Sequence Compression (CSSC) instructions", "+cssc", "-cssc"},
0237 {"d128", {}, AArch64::AEK_D128, "FEAT_D128, FEAT_LVA3, FEAT_SYSREG128, FEAT_SYSINSTR128", "Enable Armv9.4-A 128-bit Page Table Descriptors, System Registers and instructions", "+d128", "-d128"},
0238 {"dit", {}, AArch64::AEK_DIT, "FEAT_DIT", "Enable Armv8.4-A Data Independent Timing instructions", "+dit", "-dit"},
0239 {"dotprod", {}, AArch64::AEK_DOTPROD, "FEAT_DotProd", "Enable dot product support", "+dotprod", "-dotprod"},
0240 {"", {}, AArch64::AEK_ENHANCEDCOUNTERVIRTUALIZATION, "FEAT_ECV", "Enable enhanced counter virtualization extension", "+ecv", "-ecv"},
0241 {"", {}, AArch64::AEK_ETE, "FEAT_ETE", "Enable Embedded Trace Extension", "+ete", "-ete"},
0242 {"f32mm", {}, AArch64::AEK_F32MM, "FEAT_F32MM", "Enable Matrix Multiply FP32 Extension", "+f32mm", "-f32mm"},
0243 {"f64mm", {}, AArch64::AEK_F64MM, "FEAT_F64MM", "Enable Matrix Multiply FP64 Extension", "+f64mm", "-f64mm"},
0244 {"f8f16mm", {}, AArch64::AEK_F8F16MM, "FEAT_F8F16MM", "Enable Armv9.6-A FP8 to Half-Precision Matrix Multiplication", "+f8f16mm", "-f8f16mm"},
0245 {"f8f32mm", {}, AArch64::AEK_F8F32MM, "FEAT_F8F32MM", "Enable Armv9.6-A FP8 to Single-Precision Matrix Multiplication", "+f8f32mm", "-f8f32mm"},
0246 {"faminmax", {}, AArch64::AEK_FAMINMAX, "FEAT_FAMINMAX", "Enable FAMIN and FAMAX instructions", "+faminmax", "-faminmax"},
0247 {"", {}, AArch64::AEK_FINEGRAINEDTRAPS, "FEAT_FGT", "Enable fine grained virtualization traps extension", "+fgt", "-fgt"},
0248 {"flagm", {}, AArch64::AEK_FLAGM, "FEAT_FlagM", "Enable Armv8.4-A Flag Manipulation instructions", "+flagm", "-flagm"},
0249 {"fp", {}, AArch64::AEK_FP, "FEAT_FP", "Enable Armv8.0-A Floating Point Extensions", "+fp-armv8", "-fp-armv8"},
0250 {"fp16fml", {}, AArch64::AEK_FP16FML, "FEAT_FHM", "Enable FP16 FML instructions", "+fp16fml", "-fp16fml"},
0251 {"fp8", {}, AArch64::AEK_FP8, "FEAT_FP8", "Enable FP8 instructions", "+fp8", "-fp8"},
0252 {"fp8dot2", {}, AArch64::AEK_FP8DOT2, "FEAT_FP8DOT2", "Enable FP8 2-way dot instructions", "+fp8dot2", "-fp8dot2"},
0253 {"fp8dot4", {}, AArch64::AEK_FP8DOT4, "FEAT_FP8DOT4", "Enable FP8 4-way dot instructions", "+fp8dot4", "-fp8dot4"},
0254 {"fp8fma", {}, AArch64::AEK_FP8FMA, "FEAT_FP8FMA", "Enable Armv9.5-A FP8 multiply-add instructions", "+fp8fma", "-fp8fma"},
0255 {"", {}, AArch64::AEK_FPAC, "FEAT_FPAC", "Enable Armv8.3-A Pointer Authentication Faulting enhancement", "+fpac", "-fpac"},
0256 {"fprcvt", {}, AArch64::AEK_FPRCVT, "FEAT_FPRCVT", "Enable Armv9.6-A base convert instructions for SIMD&FP scalar register operands of different input and output sizes", "+fprcvt", "-fprcvt"},
0257 {"", {}, AArch64::AEK_FRINT3264, "FEAT_FRINTTS", "Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int", "+fptoint", "-fptoint"},
0258 {"fp16", {}, AArch64::AEK_FP16, "FEAT_FP16", "Enable half-precision floating-point data processing", "+fullfp16", "-fullfp16"},
0259 {"gcs", {}, AArch64::AEK_GCS, "FEAT_GCS", "Enable Armv9.4-A Guarded Call Stack Extension", "+gcs", "-gcs"},
0260 {"hbc", {}, AArch64::AEK_HBC, "FEAT_HBC", "Enable Armv8.8-A Hinted Conditional Branches Extension", "+hbc", "-hbc"},
0261 {"", {}, AArch64::AEK_HCX, "FEAT_HCX", "Enable Armv8.7-A HCRX_EL2 system register", "+hcx", "-hcx"},
0262 {"i8mm", {}, AArch64::AEK_I8MM, "FEAT_I8MM", "Enable Matrix Multiply Int8 Extension", "+i8mm", "-i8mm"},
0263 {"ite", {}, AArch64::AEK_ITE, "FEAT_ITE", "Enable Armv9.4-A Instrumentation Extension", "+ite", "-ite"},
0264 {"jscvt", {}, AArch64::AEK_JSCVT, "FEAT_JSCVT", "Enable Armv8.3-A JavaScript FP conversion instructions", "+jsconv", "-jsconv"},
0265 {"", {}, AArch64::AEK_LOR, "FEAT_LOR", "Enable Armv8.1-A Limited Ordering Regions extension", "+lor", "-lor"},
0266 {"ls64", {}, AArch64::AEK_LS64, "FEAT_LS64, FEAT_LS64_V, FEAT_LS64_ACCDATA", "Enable Armv8.7-A LD64B/ST64B Accelerator Extension", "+ls64", "-ls64"},
0267 {"lse", {}, AArch64::AEK_LSE, "FEAT_LSE", "Enable Armv8.1-A Large System Extension (LSE) atomic instructions", "+lse", "-lse"},
0268 {"lse128", {}, AArch64::AEK_LSE128, "FEAT_LSE128", "Enable Armv9.4-A 128-bit Atomic instructions", "+lse128", "-lse128"},
0269 {"", {}, AArch64::AEK_LSE2, "FEAT_LSE2", "Enable Armv8.4-A Large System Extension 2 (LSE2) atomicity rules", "+lse2", "-lse2"},
0270 {"lsfe", {}, AArch64::AEK_LSFE, "FEAT_LSFE", "Enable Armv9.6-A base Atomic floating-point in-memory instructions", "+lsfe", "-lsfe"},
0271 {"lsui", {}, AArch64::AEK_LSUI, "FEAT_LSUI", "Enable Armv9.6-A unprivileged load/store instructions", "+lsui", "-lsui"},
0272 {"lut", {}, AArch64::AEK_LUT, "FEAT_LUT", "Enable Lookup Table instructions", "+lut", "-lut"},
0273 {"", {}, AArch64::AEK_MEC, "FEAT_MEC", "Enable Memory Encryption Contexts Extension", "+mec", "-mec"},
0274 {"mops", {}, AArch64::AEK_MOPS, "FEAT_MOPS", "Enable Armv8.8-A memcpy and memset acceleration instructions", "+mops", "-mops"},
0275 {"", {}, AArch64::AEK_MPAM, "FEAT_MPAM", "Enable Armv8.4-A Memory system Partitioning and Monitoring extension", "+mpam", "-mpam"},
0276 {"memtag", {}, AArch64::AEK_MTE, "FEAT_MTE, FEAT_MTE2", "Enable Memory Tagging Extension", "+mte", "-mte"},
0277 {"simd", {}, AArch64::AEK_SIMD, "FEAT_AdvSIMD", "Enable Advanced SIMD instructions", "+neon", "-neon"},
0278 {"", {}, AArch64::AEK_NMI, "FEAT_NMI, FEAT_GICv3_NMI", "Enable Armv8.8-A Non-maskable Interrupts", "+nmi", "-nmi"},
0279 {"", {}, AArch64::AEK_NV, "FEAT_NV, FEAT_NV2", "Enable Armv8.4-A Nested Virtualization Enchancement", "+nv", "-nv"},
0280 {"occmo", {}, AArch64::AEK_OCCMO, "FEAT_OCCMO", "Enable Armv9.6-A Outer cacheable cache maintenance operations", "+occmo", "-occmo"},
0281 {"", {}, AArch64::AEK_PAN, "FEAT_PAN", "Enable Armv8.1-A Privileged Access-Never extension", "+pan", "-pan"},
0282 {"", {}, AArch64::AEK_PAN_RWV, "FEAT_PAN2", "Enable Armv8.2-A PAN s1e1R and s1e1W Variants", "+pan-rwv", "-pan-rwv"},
0283 {"pauth", {}, AArch64::AEK_PAUTH, "FEAT_PAuth", "Enable Armv8.3-A Pointer Authentication extension", "+pauth", "-pauth"},
0284 {"pauth-lr", {}, AArch64::AEK_PAUTHLR, "FEAT_PAuth_LR", "Enable Armv9.5-A PAC enhancements", "+pauth-lr", "-pauth-lr"},
0285 {"pcdphint", {}, AArch64::AEK_PCDPHINT, "FEAT_PCDPHINT", "Enable Armv9.6-A Producer Consumer Data Placement hints", "+pcdphint", "-pcdphint"},
0286 {"pmuv3", {}, AArch64::AEK_PERFMON, "FEAT_PMUv3", "Enable Armv8.0-A PMUv3 Performance Monitors extension", "+perfmon", "-perfmon"},
0287 {"pops", {}, AArch64::AEK_POPS, "FEAT_PoPS", "Enable Armv9.6-A Point Of Physical Storage (PoPS) DC instructions", "+pops", "-pops"},
0288 {"predres", {}, AArch64::AEK_PREDRES, "FEAT_SPECRES", "Enable Armv8.5-A execution and data prediction invalidation instructions", "+predres", "-predres"},
0289 {"", {}, AArch64::AEK_PRFM_SLC, "FEAT_PRFMSLC", "Enable SLC target for PRFM instruction", "+prfm-slc-target", "-prfm-slc-target"},
0290 {"rng", {}, AArch64::AEK_RAND, "FEAT_RNG", "Enable Random Number generation instructions", "+rand", "-rand"},
0291 {"ras", {}, AArch64::AEK_RAS, "FEAT_RAS, FEAT_RASv1p1", "Enable Armv8.0-A Reliability, Availability and Serviceability Extensions", "+ras", "-ras"},
0292 {"rasv2", {}, AArch64::AEK_RASV2, "FEAT_RASv2", "Enable Armv8.9-A Reliability, Availability and Serviceability Extensions", "+rasv2", "-rasv2"},
0293 {"rcpc", {}, AArch64::AEK_RCPC, "FEAT_LRCPC", "Enable support for RCPC extension", "+rcpc", "-rcpc"},
0294 {"", {}, AArch64::AEK_RCPC_IMMO, "FEAT_LRCPC2", "Enable Armv8.4-A RCPC instructions with Immediate Offsets", "+rcpc-immo", "-rcpc-immo"},
0295 {"rcpc3", {}, AArch64::AEK_RCPC3, "FEAT_LRCPC3", "Enable Armv8.9-A RCPC instructions for A64 and Advanced SIMD and floating-point instruction set", "+rcpc3", "-rcpc3"},
0296 {"rdm", "rdma", AArch64::AEK_RDM, "FEAT_RDM", "Enable Armv8.1-A Rounding Double Multiply Add/Subtract instructions", "+rdm", "-rdm"},
0297 {"", {}, AArch64::AEK_RME, "FEAT_RME", "Enable Realm Management Extension", "+rme", "-rme"},
0298 {"sb", {}, AArch64::AEK_SB, "FEAT_SB", "Enable Armv8.5-A Speculation Barrier", "+sb", "-sb"},
0299 {"", {}, AArch64::AEK_SEL2, "FEAT_SEL2", "Enable Armv8.4-A Secure Exception Level 2 extension", "+sel2", "-sel2"},
0300 {"sha2", {}, AArch64::AEK_SHA2, "FEAT_SHA1, FEAT_SHA256", "Enable SHA1 and SHA256 support", "+sha2", "-sha2"},
0301 {"sha3", {}, AArch64::AEK_SHA3, "FEAT_SHA3, FEAT_SHA512", "Enable SHA512 and SHA3 support", "+sha3", "-sha3"},
0302 {"sm4", {}, AArch64::AEK_SM4, "FEAT_SM4, FEAT_SM3", "Enable SM3 and SM4 support", "+sm4", "-sm4"},
0303 {"sme", {}, AArch64::AEK_SME, "FEAT_SME", "Enable Scalable Matrix Extension (SME)", "+sme", "-sme"},
0304 {"sme-b16b16", {}, AArch64::AEK_SMEB16B16, "FEAT_SME_B16B16", "Enable SME2.1 ZA-targeting non-widening BFloat16 instructions", "+sme-b16b16", "-sme-b16b16"},
0305 {"sme-f16f16", {}, AArch64::AEK_SMEF16F16, "FEAT_SME_F16F16", "Enable SME non-widening Float16 instructions", "+sme-f16f16", "-sme-f16f16"},
0306 {"sme-f64f64", {}, AArch64::AEK_SMEF64F64, "FEAT_SME_F64F64", "Enable Scalable Matrix Extension (SME) F64F64 instructions", "+sme-f64f64", "-sme-f64f64"},
0307 {"sme-f8f16", {}, AArch64::AEK_SMEF8F16, "FEAT_SME_F8F16", "Enable Scalable Matrix Extension (SME) F8F16 instructions", "+sme-f8f16", "-sme-f8f16"},
0308 {"sme-f8f32", {}, AArch64::AEK_SMEF8F32, "FEAT_SME_F8F32", "Enable Scalable Matrix Extension (SME) F8F32 instructions", "+sme-f8f32", "-sme-f8f32"},
0309 {"sme-fa64", {}, AArch64::AEK_SMEFA64, "FEAT_SME_FA64", "Enable the full A64 instruction set in streaming SVE mode", "+sme-fa64", "-sme-fa64"},
0310 {"sme-i16i64", {}, AArch64::AEK_SMEI16I64, "FEAT_SME_I16I64", "Enable Scalable Matrix Extension (SME) I16I64 instructions", "+sme-i16i64", "-sme-i16i64"},
0311 {"sme-lutv2", {}, AArch64::AEK_SME_LUTV2, "FEAT_SME_LUTv2", "Enable Scalable Matrix Extension (SME) LUTv2 instructions", "+sme-lutv2", "-sme-lutv2"},
0312 {"sme-mop4", {}, AArch64::AEK_SME_MOP4, "FEAT_SME_MOP4", "Enable SME Quarter-tile outer product instructions", "+sme-mop4", "-sme-mop4"},
0313 {"sme-tmop", {}, AArch64::AEK_SME_TMOP, "FEAT_SME_TMOP", "Enable SME Structured sparsity outer product instructions.", "+sme-tmop", "-sme-tmop"},
0314 {"sme2", {}, AArch64::AEK_SME2, "FEAT_SME2", "Enable Scalable Matrix Extension 2 (SME2) instructions", "+sme2", "-sme2"},
0315 {"sme2p1", {}, AArch64::AEK_SME2P1, "FEAT_SME2p1", "Enable Scalable Matrix Extension 2.1 instructions", "+sme2p1", "-sme2p1"},
0316 {"sme2p2", {}, AArch64::AEK_SME2P2, "FEAT_SME2p2", "Enable Armv9.6-A Scalable Matrix Extension 2.2 instructions", "+sme2p2", "-sme2p2"},
0317 {"profile", {}, AArch64::AEK_PROFILE, "FEAT_SPE", "Enable Statistical Profiling extension", "+spe", "-spe"},
0318 {"", {}, AArch64::AEK_SPE_EEF, "FEAT_SPEv1p2", "Enable extra register in the Statistical Profiling Extension", "+spe-eef", "-spe-eef"},
0319 {"predres2", {}, AArch64::AEK_SPECRES2, "FEAT_SPECRES2", "Enable Speculation Restriction Instruction", "+specres2", "-specres2"},
0320 {"", {}, AArch64::AEK_SPECRESTRICT, "FEAT_CSV2_2", "Enable architectural speculation restriction", "+specrestrict", "-specrestrict"},
0321 {"ssbs", {}, AArch64::AEK_SSBS, "FEAT_SSBS, FEAT_SSBS2", "Enable Speculative Store Bypass Safe bit", "+ssbs", "-ssbs"},
0322 {"ssve-aes", {}, AArch64::AEK_SSVE_AES, "FEAT_SSVE_AES", "Enable Armv9.6-A SVE AES support in streaming SVE mode", "+ssve-aes", "-ssve-aes"},
0323 {"ssve-bitperm", {}, AArch64::AEK_SSVE_BITPERM, "FEAT_SSVE_BitPerm", "Enable Armv9.6-A SVE BitPerm support in streaming SVE mode", "+ssve-bitperm", "-ssve-bitperm"},
0324 {"ssve-fp8dot2", {}, AArch64::AEK_SSVE_FP8DOT2, "FEAT_SSVE_FP8DOT2", "Enable SVE2 FP8 2-way dot product instructions", "+ssve-fp8dot2", "-ssve-fp8dot2"},
0325 {"ssve-fp8dot4", {}, AArch64::AEK_SSVE_FP8DOT4, "FEAT_SSVE_FP8DOT4", "Enable SVE2 FP8 4-way dot product instructions", "+ssve-fp8dot4", "-ssve-fp8dot4"},
0326 {"ssve-fp8fma", {}, AArch64::AEK_SSVE_FP8FMA, "FEAT_SSVE_FP8FMA", "Enable SVE2 FP8 multiply-add instructions", "+ssve-fp8fma", "-ssve-fp8fma"},
0327 {"sve", {}, AArch64::AEK_SVE, "FEAT_SVE", "Enable Scalable Vector Extension (SVE) instructions", "+sve", "-sve"},
0328 {"sve-aes", {}, AArch64::AEK_SVEAES, "FEAT_SVE_AES, FEAT_SVE_PMULL128", "Enable SVE AES and quadword SVE polynomial multiply instructions", "+sve-aes", "-sve-aes"},
0329 {"sve-aes2", {}, AArch64::AEK_SVE_AES2, "FEAT_SVE_AES2", "Enable Armv9.6-A SVE multi-vector AES and multi-vector quadword polynomial multiply instructions", "+sve-aes2", "-sve-aes2"},
0330 {"sve-b16b16", {}, AArch64::AEK_SVEB16B16, "FEAT_SVE_B16B16", "Enable SVE2 non-widening and SME2 Z-targeting non-widening BFloat16 instructions", "+sve-b16b16", "-sve-b16b16"},
0331 {"sve-bfscale", {}, AArch64::AEK_SVE_BFSCALE, "FEAT_SVE_BFSCALE", "Enable Armv9.6-A SVE BFloat16 scaling instructions", "+sve-bfscale", "-sve-bfscale"},
0332 {"sve-bitperm", {}, AArch64::AEK_SVEBITPERM, "FEAT_SVE_BitPerm", "Enable bit permutation SVE2 instructions", "+sve-bitperm", "-sve-bitperm"},
0333 {"sve-f16f32mm", {}, AArch64::AEK_SVE_F16F32MM, "FEAT_SVE_F16F32MM", "Enable Armv9.6-A FP16 to FP32 Matrix Multiply instructions", "+sve-f16f32mm", "-sve-f16f32mm"},
0334 {"sve2", {}, AArch64::AEK_SVE2, "FEAT_SVE2", "Enable Scalable Vector Extension 2 (SVE2) instructions", "+sve2", "-sve2"},
0335 {"sve2-aes", {}, AArch64::AEK_SVE2AES, "", "Shorthand for +sve2+sve-aes", "+sve2-aes", "-sve2-aes"},
0336 {"sve2-bitperm", {}, AArch64::AEK_SVE2BITPERM, "", "Shorthand for +sve2+sve-bitperm", "+sve2-bitperm", "-sve2-bitperm"},
0337 {"sve2-sha3", {}, AArch64::AEK_SVE2SHA3, "FEAT_SVE_SHA3", "Enable SHA3 SVE2 instructions", "+sve2-sha3", "-sve2-sha3"},
0338 {"sve2-sm4", {}, AArch64::AEK_SVE2SM4, "FEAT_SVE_SM4", "Enable SM4 SVE2 instructions", "+sve2-sm4", "-sve2-sm4"},
0339 {"sve2p1", {}, AArch64::AEK_SVE2P1, "FEAT_SVE2p1", "Enable Scalable Vector Extension 2.1 instructions", "+sve2p1", "-sve2p1"},
0340 {"sve2p2", {}, AArch64::AEK_SVE2P2, "FEAT_SVE2p2", "Enable Armv9.6-A Scalable Vector Extension 2.2 instructions", "+sve2p2", "-sve2p2"},
0341 {"the", {}, AArch64::AEK_THE, "FEAT_THE", "Enable Armv8.9-A Translation Hardening Extension", "+the", "-the"},
0342 {"", {}, AArch64::AEK_TLB_RMI, "FEAT_TLBIOS, FEAT_TLBIRANGE", "Enable Armv8.4-A TLB Range and Maintenance instructions", "+tlb-rmi", "-tlb-rmi"},
0343 {"tlbiw", {}, AArch64::AEK_TLBIW, "FEAT_TLBIW", "Enable Armv9.5-A TLBI VMALL for Dirty State", "+tlbiw", "-tlbiw"},
0344 {"tme", {}, AArch64::AEK_TME, "FEAT_TME", "Enable Transactional Memory Extension", "+tme", "-tme"},
0345 {"", {}, AArch64::AEK_TRACEV8_4, "FEAT_TRF", "Enable Armv8.4-A Trace extension", "+tracev8.4", "-tracev8.4"},
0346 {"", {}, AArch64::AEK_TRBE, "FEAT_TRBE", "Enable Trace Buffer Extension", "+trbe", "-trbe"},
0347 {"", {}, AArch64::AEK_PSUAO, "FEAT_UAO", "Enable Armv8.2-A UAO PState", "+uaops", "-uaops"},
0348 {"", {}, AArch64::AEK_VH, "FEAT_VHE", "Enable Armv8.1-A Virtual Host extension", "+vh", "-vh"},
0349 {"wfxt", {}, AArch64::AEK_WFXT, "FEAT_WFxT", "Enable Armv8.7-A WFET and WFIT instruction", "+wfxt", "-wfxt"},
0350 {"", {}, AArch64::AEK_XS, "FEAT_XS", "Enable Armv8.7-A limited-TLB-maintenance instruction", "+xs", "-xs"},
0351 };
0352 #undef EMIT_EXTENSIONS
0353 #endif // EMIT_EXTENSIONS
0354
0355 #ifdef EMIT_FMV_INFO
0356 const std::vector<llvm::AArch64::FMVInfo>& llvm::AArch64::getFMVInfo() {
0357 static std::vector<FMVInfo> I;
0358 if(I.size()) return I;
0359 I.reserve(44);
0360 I.emplace_back("aes", FEAT_PMULL, PRIOR_PMULL, AEK_AES);
0361 I.emplace_back("bf16", FEAT_BF16, PRIOR_BF16, AEK_BF16);
0362 I.emplace_back("bti", FEAT_BTI, PRIOR_BTI, AEK_BTI);
0363 I.emplace_back("crc", FEAT_CRC, PRIOR_CRC, AEK_CRC);
0364 I.emplace_back("dit", FEAT_DIT, PRIOR_DIT, AEK_DIT);
0365 I.emplace_back("dotprod", FEAT_DOTPROD, PRIOR_DOTPROD, AEK_DOTPROD);
0366 I.emplace_back("dpb", FEAT_DPB, PRIOR_DPB, AEK_CCPP);
0367 I.emplace_back("dpb2", FEAT_DPB2, PRIOR_DPB2, AEK_CCDP);
0368 I.emplace_back("f32mm", FEAT_SVE_F32MM, PRIOR_SVE_F32MM, AEK_F32MM);
0369 I.emplace_back("f64mm", FEAT_SVE_F64MM, PRIOR_SVE_F64MM, AEK_F64MM);
0370 I.emplace_back("fcma", FEAT_FCMA, PRIOR_FCMA, AEK_FCMA);
0371 I.emplace_back("flagm", FEAT_FLAGM, PRIOR_FLAGM, AEK_FLAGM);
0372 I.emplace_back("flagm2", FEAT_FLAGM2, PRIOR_FLAGM2, AEK_ALTERNATIVENZCV);
0373 I.emplace_back("fp", FEAT_FP, PRIOR_FP, AEK_FP);
0374 I.emplace_back("fp16", FEAT_FP16, PRIOR_FP16, AEK_FP16);
0375 I.emplace_back("fp16fml", FEAT_FP16FML, PRIOR_FP16FML, AEK_FP16FML);
0376 I.emplace_back("frintts", FEAT_FRINTTS, PRIOR_FRINTTS, AEK_FRINT3264);
0377 I.emplace_back("i8mm", FEAT_I8MM, PRIOR_I8MM, AEK_I8MM);
0378 I.emplace_back("jscvt", FEAT_JSCVT, PRIOR_JSCVT, AEK_JSCVT);
0379 I.emplace_back("lse", FEAT_LSE, PRIOR_LSE, AEK_LSE);
0380 I.emplace_back("memtag", FEAT_MEMTAG2, PRIOR_MEMTAG2, AEK_MTE);
0381 I.emplace_back("mops", FEAT_MOPS, PRIOR_MOPS, AEK_MOPS);
0382 I.emplace_back("rcpc", FEAT_RCPC, PRIOR_RCPC, AEK_RCPC);
0383 I.emplace_back("rcpc2", FEAT_RCPC2, PRIOR_RCPC2, AEK_RCPC_IMMO);
0384 I.emplace_back("rcpc3", FEAT_RCPC3, PRIOR_RCPC3, AEK_RCPC3);
0385 I.emplace_back("rdm", FEAT_RDM, PRIOR_RDM, AEK_RDM);
0386 I.emplace_back("rng", FEAT_RNG, PRIOR_RNG, AEK_RAND);
0387 I.emplace_back("sb", FEAT_SB, PRIOR_SB, AEK_SB);
0388 I.emplace_back("sha2", FEAT_SHA2, PRIOR_SHA2, AEK_SHA2);
0389 I.emplace_back("sha3", FEAT_SHA3, PRIOR_SHA3, AEK_SHA3);
0390 I.emplace_back("simd", FEAT_SIMD, PRIOR_SIMD, AEK_SIMD);
0391 I.emplace_back("sm4", FEAT_SM4, PRIOR_SM4, AEK_SM4);
0392 I.emplace_back("sme", FEAT_SME, PRIOR_SME, AEK_SME);
0393 I.emplace_back("sme-f64f64", FEAT_SME_F64, PRIOR_SME_F64, AEK_SMEF64F64);
0394 I.emplace_back("sme-i16i64", FEAT_SME_I64, PRIOR_SME_I64, AEK_SMEI16I64);
0395 I.emplace_back("sme2", FEAT_SME2, PRIOR_SME2, AEK_SME2);
0396 I.emplace_back("ssbs", FEAT_SSBS2, PRIOR_SSBS2, AEK_SSBS);
0397 I.emplace_back("sve", FEAT_SVE, PRIOR_SVE, AEK_SVE);
0398 I.emplace_back("sve2", FEAT_SVE2, PRIOR_SVE2, AEK_SVE2);
0399 I.emplace_back("sve2-aes", FEAT_SVE_PMULL128, PRIOR_SVE_PMULL128, AEK_SVE2AES);
0400 I.emplace_back("sve2-bitperm", FEAT_SVE_BITPERM, PRIOR_SVE_BITPERM, AEK_SVE2BITPERM);
0401 I.emplace_back("sve2-sha3", FEAT_SVE_SHA3, PRIOR_SVE_SHA3, AEK_SVE2SHA3);
0402 I.emplace_back("sve2-sm4", FEAT_SVE_SM4, PRIOR_SVE_SM4, AEK_SVE2SM4);
0403 I.emplace_back("wfxt", FEAT_WFXT, PRIOR_WFXT, AEK_WFXT);
0404 return I;
0405 }
0406 #undef EMIT_FMV_INFO
0407 #endif // EMIT_FMV_INFO
0408
0409 #ifdef EMIT_EXTENSION_DEPENDENCIES
0410 inline constexpr ExtensionDependency ExtensionDependencies[] = {
0411 {AEK_SIMD, AEK_AES},
0412 {AEK_FLAGM, AEK_ALTERNATIVENZCV},
0413 {AEK_AM, AEK_AMVS},
0414 {AEK_SIMD, AEK_BF16},
0415 {AEK_CCPP, AEK_CCDP},
0416 {AEK_SIMD, AEK_FCMA},
0417 {AEK_SIMD, AEK_CRYPTO},
0418 {AEK_SHA2, AEK_CRYPTO},
0419 {AEK_AES, AEK_CRYPTO},
0420 {AEK_LSE128, AEK_D128},
0421 {AEK_SIMD, AEK_DOTPROD},
0422 {AEK_TRBE, AEK_ETE},
0423 {AEK_SVE, AEK_F32MM},
0424 {AEK_SVE, AEK_F64MM},
0425 {AEK_SIMD, AEK_F8F16MM},
0426 {AEK_FP8, AEK_F8F16MM},
0427 {AEK_SIMD, AEK_F8F32MM},
0428 {AEK_FP8, AEK_F8F32MM},
0429 {AEK_SIMD, AEK_FAMINMAX},
0430 {AEK_FP16, AEK_FP16FML},
0431 {AEK_SIMD, AEK_FP16FML},
0432 {AEK_SIMD, AEK_FP8},
0433 {AEK_FP8, AEK_FP8DOT2},
0434 {AEK_FP8, AEK_FP8DOT4},
0435 {AEK_FP8, AEK_FP8FMA},
0436 {AEK_FP, AEK_FPRCVT},
0437 {AEK_FP, AEK_FRINT3264},
0438 {AEK_FP, AEK_FP16},
0439 {AEK_CHK, AEK_GCS},
0440 {AEK_SIMD, AEK_I8MM},
0441 {AEK_ETE, AEK_ITE},
0442 {AEK_TRBE, AEK_ITE},
0443 {AEK_FP, AEK_JSCVT},
0444 {AEK_LSE, AEK_LSE128},
0445 {AEK_FP, AEK_LSFE},
0446 {AEK_SIMD, AEK_LUT},
0447 {AEK_RME, AEK_MEC},
0448 {AEK_FP, AEK_SIMD},
0449 {AEK_PAN, AEK_PAN_RWV},
0450 {AEK_RAS, AEK_RASV2},
0451 {AEK_RCPC, AEK_RCPC_IMMO},
0452 {AEK_RCPC_IMMO, AEK_RCPC3},
0453 {AEK_SIMD, AEK_RDM},
0454 {AEK_SIMD, AEK_SHA2},
0455 {AEK_SIMD, AEK_SHA3},
0456 {AEK_SHA2, AEK_SHA3},
0457 {AEK_SIMD, AEK_SM4},
0458 {AEK_BF16, AEK_SME},
0459 {AEK_FP16, AEK_SME},
0460 {AEK_SME2, AEK_SMEB16B16},
0461 {AEK_SVEB16B16, AEK_SMEB16B16},
0462 {AEK_SME2, AEK_SMEF16F16},
0463 {AEK_SME, AEK_SMEF64F64},
0464 {AEK_SME2, AEK_SMEF8F16},
0465 {AEK_FP8, AEK_SMEF8F16},
0466 {AEK_SME2, AEK_SMEF8F32},
0467 {AEK_FP8, AEK_SMEF8F32},
0468 {AEK_SME, AEK_SMEFA64},
0469 {AEK_SVE2, AEK_SMEFA64},
0470 {AEK_SME, AEK_SMEI16I64},
0471 {AEK_SME2, AEK_SME_LUTV2},
0472 {AEK_SME2, AEK_SME_MOP4},
0473 {AEK_SME2, AEK_SME_TMOP},
0474 {AEK_SME, AEK_SME2},
0475 {AEK_SME2, AEK_SME2P1},
0476 {AEK_SME2P1, AEK_SME2P2},
0477 {AEK_PREDRES, AEK_SPECRES2},
0478 {AEK_SME2, AEK_SSVE_AES},
0479 {AEK_SVEAES, AEK_SSVE_AES},
0480 {AEK_SME2, AEK_SSVE_BITPERM},
0481 {AEK_SVEBITPERM, AEK_SSVE_BITPERM},
0482 {AEK_SME2, AEK_SSVE_FP8DOT2},
0483 {AEK_FP8, AEK_SSVE_FP8DOT2},
0484 {AEK_SME2, AEK_SSVE_FP8DOT4},
0485 {AEK_FP8, AEK_SSVE_FP8DOT4},
0486 {AEK_SME2, AEK_SSVE_FP8FMA},
0487 {AEK_FP8, AEK_SSVE_FP8FMA},
0488 {AEK_FP16, AEK_SVE},
0489 {AEK_AES, AEK_SVEAES},
0490 {AEK_SVE, AEK_SVE_F16F32MM},
0491 {AEK_SVE, AEK_SVE2},
0492 {AEK_SVE2, AEK_SVE2AES},
0493 {AEK_SVEAES, AEK_SVE2AES},
0494 {AEK_SVE2, AEK_SVE2BITPERM},
0495 {AEK_SVEBITPERM, AEK_SVE2BITPERM},
0496 {AEK_SVE2, AEK_SVE2SHA3},
0497 {AEK_SHA3, AEK_SVE2SHA3},
0498 {AEK_SVE2, AEK_SVE2SM4},
0499 {AEK_SM4, AEK_SVE2SM4},
0500 {AEK_SVE2, AEK_SVE2P1},
0501 {AEK_SVE2P1, AEK_SVE2P2},
0502 {AEK_RCPC, AEK_RCPC3},
0503 };
0504 #undef EMIT_EXTENSION_DEPENDENCIES
0505 #endif // EMIT_EXTENSION_DEPENDENCIES
0506
0507 #ifdef EMIT_ARCHITECTURES
0508 inline constexpr ArchInfo ARMV8A = {
0509 VersionTuple{8, 0},
0510 AProfile,
0511 "armv8-a",
0512 "+v8a",
0513 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, }))
0514 };
0515 inline constexpr ArchInfo ARMV8R = {
0516 VersionTuple{8, 0},
0517 RProfile,
0518 "armv8-r",
0519 "+v8r",
0520 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_SSBS, AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_SB, }))
0521 };
0522 inline constexpr ArchInfo ARMV8_1A = {
0523 VersionTuple{8, 1},
0524 AProfile,
0525 "armv8.1-a",
0526 "+v8.1a",
0527 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, }))
0528 };
0529 inline constexpr ArchInfo ARMV8_2A = {
0530 VersionTuple{8, 2},
0531 AProfile,
0532 "armv8.2-a",
0533 "+v8.2a",
0534 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, }))
0535 };
0536 inline constexpr ArchInfo ARMV8_3A = {
0537 VersionTuple{8, 3},
0538 AProfile,
0539 "armv8.3-a",
0540 "+v8.3a",
0541 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, }))
0542 };
0543 inline constexpr ArchInfo ARMV8_4A = {
0544 VersionTuple{8, 4},
0545 AProfile,
0546 "armv8.4-a",
0547 "+v8.4a",
0548 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, }))
0549 };
0550 inline constexpr ArchInfo ARMV8_5A = {
0551 VersionTuple{8, 5},
0552 AProfile,
0553 "armv8.5-a",
0554 "+v8.5a",
0555 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, }))
0556 };
0557 inline constexpr ArchInfo ARMV8_6A = {
0558 VersionTuple{8, 6},
0559 AProfile,
0560 "armv8.6-a",
0561 "+v8.6a",
0562 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, }))
0563 };
0564 inline constexpr ArchInfo ARMV8_7A = {
0565 VersionTuple{8, 7},
0566 AProfile,
0567 "armv8.7-a",
0568 "+v8.7a",
0569 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, }))
0570 };
0571 inline constexpr ArchInfo ARMV8_8A = {
0572 VersionTuple{8, 8},
0573 AProfile,
0574 "armv8.8-a",
0575 "+v8.8a",
0576 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, }))
0577 };
0578 inline constexpr ArchInfo ARMV8_9A = {
0579 VersionTuple{8, 9},
0580 AProfile,
0581 "armv8.9-a",
0582 "+v8.9a",
0583 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2, }))
0584 };
0585 inline constexpr ArchInfo ARMV9A = {
0586 VersionTuple{9, 0},
0587 AProfile,
0588 "armv9-a",
0589 "+v9a",
0590 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, }))
0591 };
0592 inline constexpr ArchInfo ARMV9_1A = {
0593 VersionTuple{9, 1},
0594 AProfile,
0595 "armv9.1-a",
0596 "+v9.1a",
0597 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, }))
0598 };
0599 inline constexpr ArchInfo ARMV9_2A = {
0600 VersionTuple{9, 2},
0601 AProfile,
0602 "armv9.2-a",
0603 "+v9.2a",
0604 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, }))
0605 };
0606 inline constexpr ArchInfo ARMV9_3A = {
0607 VersionTuple{9, 3},
0608 AProfile,
0609 "armv9.3-a",
0610 "+v9.3a",
0611 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, }))
0612 };
0613 inline constexpr ArchInfo ARMV9_4A = {
0614 VersionTuple{9, 4},
0615 AProfile,
0616 "armv9.4-a",
0617 "+v9.4a",
0618 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2, AArch64::AEK_SVE2P1, }))
0619 };
0620 inline constexpr ArchInfo ARMV9_5A = {
0621 VersionTuple{9, 5},
0622 AProfile,
0623 "armv9.5-a",
0624 "+v9.5a",
0625 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2, AArch64::AEK_SVE2P1, AArch64::AEK_CPA, AArch64::AEK_LUT, AArch64::AEK_FAMINMAX, }))
0626 };
0627 inline constexpr ArchInfo ARMV9_6A = {
0628 VersionTuple{9, 6},
0629 AProfile,
0630 "armv9.6-a",
0631 "+v9.6a",
0632 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2, AArch64::AEK_SVE2P1, AArch64::AEK_CPA, AArch64::AEK_LUT, AArch64::AEK_FAMINMAX, AArch64::AEK_CMPBR, AArch64::AEK_FPRCVT, AArch64::AEK_SVE2P2, AArch64::AEK_LSUI, AArch64::AEK_OCCMO, }))
0633 };
0634
0635 /// The set of all architectures
0636 static constexpr std::array<const ArchInfo *, 18> ArchInfos = {
0637 &ARMV8A,
0638 &ARMV8R,
0639 &ARMV8_1A,
0640 &ARMV8_2A,
0641 &ARMV8_3A,
0642 &ARMV8_4A,
0643 &ARMV8_5A,
0644 &ARMV8_6A,
0645 &ARMV8_7A,
0646 &ARMV8_8A,
0647 &ARMV8_9A,
0648 &ARMV9A,
0649 &ARMV9_1A,
0650 &ARMV9_2A,
0651 &ARMV9_3A,
0652 &ARMV9_4A,
0653 &ARMV9_5A,
0654 &ARMV9_6A,
0655 };
0656 #undef EMIT_ARCHITECTURES
0657 #endif // EMIT_ARCHITECTURES
0658
0659 #ifdef EMIT_CPU_ALIAS
0660 inline constexpr Alias CpuAliases[] = {
0661 { "cobalt-100", "neoverse-n2" },
0662 { "grace", "neoverse-v2" },
0663 { "cyclone", "apple-a7" },
0664 { "apple-a8", "apple-a7" },
0665 { "apple-a9", "apple-a7" },
0666 { "apple-s4", "apple-a12" },
0667 { "apple-s5", "apple-a12" },
0668 { "apple-m1", "apple-a14" },
0669 { "apple-m2", "apple-a15" },
0670 { "apple-m3", "apple-a16" },
0671 { "apple-latest", "apple-m4" },
0672 };
0673 #undef EMIT_CPU_ALIAS
0674 #endif // EMIT_CPU_ALIAS
0675
0676 #ifdef EMIT_CPU_INFO
0677 inline constexpr CpuInfo CpuInfos[] = {
0678 {
0679 "generic",
0680 ARMV8A,
0681 AArch64::ExtensionBitset({
0682 AArch64::AEK_FP,
0683 AArch64::AEK_SIMD,
0684 AArch64::AEK_ETE,
0685 })
0686 },
0687 {
0688 "cortex-a35",
0689 ARMV8A,
0690 AArch64::ExtensionBitset({
0691 AArch64::AEK_CRC,
0692 AArch64::AEK_SHA2,
0693 AArch64::AEK_AES,
0694 AArch64::AEK_FP,
0695 AArch64::AEK_SIMD,
0696 AArch64::AEK_PERFMON,
0697 })
0698 },
0699 {
0700 "cortex-a34",
0701 ARMV8A,
0702 AArch64::ExtensionBitset({
0703 AArch64::AEK_CRC,
0704 AArch64::AEK_SHA2,
0705 AArch64::AEK_AES,
0706 AArch64::AEK_FP,
0707 AArch64::AEK_SIMD,
0708 AArch64::AEK_PERFMON,
0709 })
0710 },
0711 {
0712 "cortex-a53",
0713 ARMV8A,
0714 AArch64::ExtensionBitset({
0715 AArch64::AEK_CRC,
0716 AArch64::AEK_SHA2,
0717 AArch64::AEK_AES,
0718 AArch64::AEK_FP,
0719 AArch64::AEK_SIMD,
0720 AArch64::AEK_PERFMON,
0721 })
0722 },
0723 {
0724 "cortex-a55",
0725 ARMV8_2A,
0726 AArch64::ExtensionBitset({
0727 AArch64::AEK_SHA2,
0728 AArch64::AEK_AES,
0729 AArch64::AEK_FP,
0730 AArch64::AEK_SIMD,
0731 AArch64::AEK_FP16,
0732 AArch64::AEK_DOTPROD,
0733 AArch64::AEK_RCPC,
0734 AArch64::AEK_PERFMON,
0735 AArch64::AEK_CRC,
0736 AArch64::AEK_LSE,
0737 AArch64::AEK_RAS,
0738 AArch64::AEK_RDM,
0739 })
0740 },
0741 {
0742 "cortex-a510",
0743 ARMV9A,
0744 AArch64::ExtensionBitset({
0745 AArch64::AEK_SIMD,
0746 AArch64::AEK_PERFMON,
0747 AArch64::AEK_I8MM,
0748 AArch64::AEK_BF16,
0749 AArch64::AEK_AM,
0750 AArch64::AEK_MTE,
0751 AArch64::AEK_ETE,
0752 AArch64::AEK_SVEBITPERM,
0753 AArch64::AEK_FP16FML,
0754 AArch64::AEK_CCIDX,
0755 AArch64::AEK_SB,
0756 AArch64::AEK_PAUTH,
0757 AArch64::AEK_SSBS,
0758 AArch64::AEK_SVE,
0759 AArch64::AEK_SVE2,
0760 AArch64::AEK_FCMA,
0761 AArch64::AEK_CRC,
0762 AArch64::AEK_DOTPROD,
0763 AArch64::AEK_FP,
0764 AArch64::AEK_FP16,
0765 AArch64::AEK_JSCVT,
0766 AArch64::AEK_LSE,
0767 AArch64::AEK_RAS,
0768 AArch64::AEK_RCPC,
0769 AArch64::AEK_RDM,
0770 })
0771 },
0772 {
0773 "cortex-a520",
0774 ARMV9_2A,
0775 AArch64::ExtensionBitset({
0776 AArch64::AEK_PERFMON,
0777 AArch64::AEK_AM,
0778 AArch64::AEK_MTE,
0779 AArch64::AEK_ETE,
0780 AArch64::AEK_SVEBITPERM,
0781 AArch64::AEK_FP16FML,
0782 AArch64::AEK_CCIDX,
0783 AArch64::AEK_SB,
0784 AArch64::AEK_SSBS,
0785 AArch64::AEK_PAUTH,
0786 AArch64::AEK_FLAGM,
0787 AArch64::AEK_PREDRES,
0788 AArch64::AEK_SVE,
0789 AArch64::AEK_SVE2,
0790 AArch64::AEK_BF16,
0791 AArch64::AEK_FCMA,
0792 AArch64::AEK_CRC,
0793 AArch64::AEK_FP,
0794 AArch64::AEK_FP16,
0795 AArch64::AEK_I8MM,
0796 AArch64::AEK_JSCVT,
0797 AArch64::AEK_SIMD,
0798 AArch64::AEK_LSE,
0799 AArch64::AEK_RAS,
0800 AArch64::AEK_RCPC,
0801 AArch64::AEK_RDM,
0802 AArch64::AEK_DOTPROD,
0803 })
0804 },
0805 {
0806 "cortex-a520ae",
0807 ARMV9_2A,
0808 AArch64::ExtensionBitset({
0809 AArch64::AEK_PERFMON,
0810 AArch64::AEK_AM,
0811 AArch64::AEK_MTE,
0812 AArch64::AEK_ETE,
0813 AArch64::AEK_SVEBITPERM,
0814 AArch64::AEK_FP16FML,
0815 AArch64::AEK_CCIDX,
0816 AArch64::AEK_SB,
0817 AArch64::AEK_SSBS,
0818 AArch64::AEK_PAUTH,
0819 AArch64::AEK_FLAGM,
0820 AArch64::AEK_PREDRES,
0821 AArch64::AEK_SVE,
0822 AArch64::AEK_SVE2,
0823 AArch64::AEK_BF16,
0824 AArch64::AEK_FCMA,
0825 AArch64::AEK_CRC,
0826 AArch64::AEK_FP,
0827 AArch64::AEK_FP16,
0828 AArch64::AEK_I8MM,
0829 AArch64::AEK_JSCVT,
0830 AArch64::AEK_SIMD,
0831 AArch64::AEK_LSE,
0832 AArch64::AEK_RAS,
0833 AArch64::AEK_RCPC,
0834 AArch64::AEK_RDM,
0835 AArch64::AEK_DOTPROD,
0836 })
0837 },
0838 {
0839 "cortex-a57",
0840 ARMV8A,
0841 AArch64::ExtensionBitset({
0842 AArch64::AEK_CRC,
0843 AArch64::AEK_SHA2,
0844 AArch64::AEK_AES,
0845 AArch64::AEK_FP,
0846 AArch64::AEK_SIMD,
0847 AArch64::AEK_PERFMON,
0848 })
0849 },
0850 {
0851 "cortex-a65",
0852 ARMV8_2A,
0853 AArch64::ExtensionBitset({
0854 AArch64::AEK_SHA2,
0855 AArch64::AEK_AES,
0856 AArch64::AEK_FP,
0857 AArch64::AEK_SIMD,
0858 AArch64::AEK_FP16,
0859 AArch64::AEK_DOTPROD,
0860 AArch64::AEK_RCPC,
0861 AArch64::AEK_SSBS,
0862 AArch64::AEK_RAS,
0863 AArch64::AEK_PERFMON,
0864 AArch64::AEK_CRC,
0865 AArch64::AEK_LSE,
0866 AArch64::AEK_RDM,
0867 })
0868 },
0869 {
0870 "cortex-a65ae",
0871 ARMV8_2A,
0872 AArch64::ExtensionBitset({
0873 AArch64::AEK_SHA2,
0874 AArch64::AEK_AES,
0875 AArch64::AEK_FP,
0876 AArch64::AEK_SIMD,
0877 AArch64::AEK_FP16,
0878 AArch64::AEK_DOTPROD,
0879 AArch64::AEK_RCPC,
0880 AArch64::AEK_SSBS,
0881 AArch64::AEK_RAS,
0882 AArch64::AEK_PERFMON,
0883 AArch64::AEK_CRC,
0884 AArch64::AEK_LSE,
0885 AArch64::AEK_RDM,
0886 })
0887 },
0888 {
0889 "cortex-a72",
0890 ARMV8A,
0891 AArch64::ExtensionBitset({
0892 AArch64::AEK_CRC,
0893 AArch64::AEK_SHA2,
0894 AArch64::AEK_AES,
0895 AArch64::AEK_FP,
0896 AArch64::AEK_SIMD,
0897 AArch64::AEK_PERFMON,
0898 })
0899 },
0900 {
0901 "cortex-a73",
0902 ARMV8A,
0903 AArch64::ExtensionBitset({
0904 AArch64::AEK_CRC,
0905 AArch64::AEK_SHA2,
0906 AArch64::AEK_AES,
0907 AArch64::AEK_FP,
0908 AArch64::AEK_SIMD,
0909 AArch64::AEK_PERFMON,
0910 })
0911 },
0912 {
0913 "cortex-a75",
0914 ARMV8_2A,
0915 AArch64::ExtensionBitset({
0916 AArch64::AEK_SHA2,
0917 AArch64::AEK_AES,
0918 AArch64::AEK_FP,
0919 AArch64::AEK_SIMD,
0920 AArch64::AEK_FP16,
0921 AArch64::AEK_DOTPROD,
0922 AArch64::AEK_RCPC,
0923 AArch64::AEK_PERFMON,
0924 AArch64::AEK_CRC,
0925 AArch64::AEK_LSE,
0926 AArch64::AEK_RAS,
0927 AArch64::AEK_RDM,
0928 })
0929 },
0930 {
0931 "cortex-a76",
0932 ARMV8_2A,
0933 AArch64::ExtensionBitset({
0934 AArch64::AEK_SHA2,
0935 AArch64::AEK_AES,
0936 AArch64::AEK_FP,
0937 AArch64::AEK_SIMD,
0938 AArch64::AEK_FP16,
0939 AArch64::AEK_DOTPROD,
0940 AArch64::AEK_RCPC,
0941 AArch64::AEK_SSBS,
0942 AArch64::AEK_PERFMON,
0943 AArch64::AEK_CRC,
0944 AArch64::AEK_LSE,
0945 AArch64::AEK_RAS,
0946 AArch64::AEK_RDM,
0947 })
0948 },
0949 {
0950 "cortex-a76ae",
0951 ARMV8_2A,
0952 AArch64::ExtensionBitset({
0953 AArch64::AEK_SHA2,
0954 AArch64::AEK_AES,
0955 AArch64::AEK_FP,
0956 AArch64::AEK_SIMD,
0957 AArch64::AEK_FP16,
0958 AArch64::AEK_DOTPROD,
0959 AArch64::AEK_RCPC,
0960 AArch64::AEK_SSBS,
0961 AArch64::AEK_PERFMON,
0962 AArch64::AEK_CRC,
0963 AArch64::AEK_LSE,
0964 AArch64::AEK_RAS,
0965 AArch64::AEK_RDM,
0966 })
0967 },
0968 {
0969 "cortex-a77",
0970 ARMV8_2A,
0971 AArch64::ExtensionBitset({
0972 AArch64::AEK_SHA2,
0973 AArch64::AEK_AES,
0974 AArch64::AEK_FP,
0975 AArch64::AEK_SIMD,
0976 AArch64::AEK_FP16,
0977 AArch64::AEK_DOTPROD,
0978 AArch64::AEK_RCPC,
0979 AArch64::AEK_PERFMON,
0980 AArch64::AEK_SSBS,
0981 AArch64::AEK_CRC,
0982 AArch64::AEK_LSE,
0983 AArch64::AEK_RAS,
0984 AArch64::AEK_RDM,
0985 })
0986 },
0987 {
0988 "cortex-a78",
0989 ARMV8_2A,
0990 AArch64::ExtensionBitset({
0991 AArch64::AEK_SHA2,
0992 AArch64::AEK_AES,
0993 AArch64::AEK_FP,
0994 AArch64::AEK_SIMD,
0995 AArch64::AEK_FP16,
0996 AArch64::AEK_DOTPROD,
0997 AArch64::AEK_RCPC,
0998 AArch64::AEK_PERFMON,
0999 AArch64::AEK_PROFILE,
1000 AArch64::AEK_SSBS,
1001 AArch64::AEK_CRC,
1002 AArch64::AEK_LSE,
1003 AArch64::AEK_RAS,
1004 AArch64::AEK_RDM,
1005 })
1006 },
1007 {
1008 "cortex-a78ae",
1009 ARMV8_2A,
1010 AArch64::ExtensionBitset({
1011 AArch64::AEK_SHA2,
1012 AArch64::AEK_AES,
1013 AArch64::AEK_FP,
1014 AArch64::AEK_SIMD,
1015 AArch64::AEK_FP16,
1016 AArch64::AEK_DOTPROD,
1017 AArch64::AEK_RCPC,
1018 AArch64::AEK_PERFMON,
1019 AArch64::AEK_PROFILE,
1020 AArch64::AEK_SSBS,
1021 AArch64::AEK_CRC,
1022 AArch64::AEK_LSE,
1023 AArch64::AEK_RAS,
1024 AArch64::AEK_RDM,
1025 })
1026 },
1027 {
1028 "cortex-a78c",
1029 ARMV8_2A,
1030 AArch64::ExtensionBitset({
1031 AArch64::AEK_SHA2,
1032 AArch64::AEK_AES,
1033 AArch64::AEK_FP,
1034 AArch64::AEK_SIMD,
1035 AArch64::AEK_FP16,
1036 AArch64::AEK_DOTPROD,
1037 AArch64::AEK_FLAGM,
1038 AArch64::AEK_PAUTH,
1039 AArch64::AEK_PERFMON,
1040 AArch64::AEK_RCPC,
1041 AArch64::AEK_PROFILE,
1042 AArch64::AEK_SSBS,
1043 AArch64::AEK_CRC,
1044 AArch64::AEK_LSE,
1045 AArch64::AEK_RAS,
1046 AArch64::AEK_RDM,
1047 })
1048 },
1049 {
1050 "cortex-a710",
1051 ARMV9A,
1052 AArch64::ExtensionBitset({
1053 AArch64::AEK_SIMD,
1054 AArch64::AEK_PERFMON,
1055 AArch64::AEK_CCIDX,
1056 AArch64::AEK_SSBS,
1057 AArch64::AEK_ETE,
1058 AArch64::AEK_MTE,
1059 AArch64::AEK_FP16FML,
1060 AArch64::AEK_SVEBITPERM,
1061 AArch64::AEK_BF16,
1062 AArch64::AEK_I8MM,
1063 AArch64::AEK_PAUTH,
1064 AArch64::AEK_FLAGM,
1065 AArch64::AEK_SB,
1066 AArch64::AEK_SVE,
1067 AArch64::AEK_SVE2,
1068 AArch64::AEK_FCMA,
1069 AArch64::AEK_CRC,
1070 AArch64::AEK_DOTPROD,
1071 AArch64::AEK_FP,
1072 AArch64::AEK_FP16,
1073 AArch64::AEK_JSCVT,
1074 AArch64::AEK_LSE,
1075 AArch64::AEK_RAS,
1076 AArch64::AEK_RCPC,
1077 AArch64::AEK_RDM,
1078 })
1079 },
1080 {
1081 "cortex-a715",
1082 ARMV9A,
1083 AArch64::ExtensionBitset({
1084 AArch64::AEK_SIMD,
1085 AArch64::AEK_MTE,
1086 AArch64::AEK_CCIDX,
1087 AArch64::AEK_FP16FML,
1088 AArch64::AEK_SVE,
1089 AArch64::AEK_TRBE,
1090 AArch64::AEK_SVEBITPERM,
1091 AArch64::AEK_BF16,
1092 AArch64::AEK_ETE,
1093 AArch64::AEK_PERFMON,
1094 AArch64::AEK_I8MM,
1095 AArch64::AEK_PROFILE,
1096 AArch64::AEK_SB,
1097 AArch64::AEK_SSBS,
1098 AArch64::AEK_FP16,
1099 AArch64::AEK_PAUTH,
1100 AArch64::AEK_PREDRES,
1101 AArch64::AEK_FLAGM,
1102 AArch64::AEK_SVE2,
1103 AArch64::AEK_FCMA,
1104 AArch64::AEK_CRC,
1105 AArch64::AEK_DOTPROD,
1106 AArch64::AEK_FP,
1107 AArch64::AEK_JSCVT,
1108 AArch64::AEK_LSE,
1109 AArch64::AEK_RAS,
1110 AArch64::AEK_RCPC,
1111 AArch64::AEK_RDM,
1112 })
1113 },
1114 {
1115 "cortex-a720",
1116 ARMV9_2A,
1117 AArch64::ExtensionBitset({
1118 AArch64::AEK_MTE,
1119 AArch64::AEK_FP16FML,
1120 AArch64::AEK_CCIDX,
1121 AArch64::AEK_TRBE,
1122 AArch64::AEK_SVEBITPERM,
1123 AArch64::AEK_ETE,
1124 AArch64::AEK_PERFMON,
1125 AArch64::AEK_PROFILE,
1126 AArch64::AEK_SPE_EEF,
1127 AArch64::AEK_SB,
1128 AArch64::AEK_SSBS,
1129 AArch64::AEK_PAUTH,
1130 AArch64::AEK_FLAGM,
1131 AArch64::AEK_PREDRES,
1132 AArch64::AEK_SVE,
1133 AArch64::AEK_SVE2,
1134 AArch64::AEK_BF16,
1135 AArch64::AEK_FCMA,
1136 AArch64::AEK_CRC,
1137 AArch64::AEK_DOTPROD,
1138 AArch64::AEK_FP,
1139 AArch64::AEK_FP16,
1140 AArch64::AEK_I8MM,
1141 AArch64::AEK_JSCVT,
1142 AArch64::AEK_LSE,
1143 AArch64::AEK_SIMD,
1144 AArch64::AEK_RAS,
1145 AArch64::AEK_RCPC,
1146 AArch64::AEK_RDM,
1147 })
1148 },
1149 {
1150 "cortex-a720ae",
1151 ARMV9_2A,
1152 AArch64::ExtensionBitset({
1153 AArch64::AEK_MTE,
1154 AArch64::AEK_FP16FML,
1155 AArch64::AEK_CCIDX,
1156 AArch64::AEK_TRBE,
1157 AArch64::AEK_SVEBITPERM,
1158 AArch64::AEK_ETE,
1159 AArch64::AEK_PERFMON,
1160 AArch64::AEK_PROFILE,
1161 AArch64::AEK_SPE_EEF,
1162 AArch64::AEK_SB,
1163 AArch64::AEK_SSBS,
1164 AArch64::AEK_PAUTH,
1165 AArch64::AEK_FLAGM,
1166 AArch64::AEK_PREDRES,
1167 AArch64::AEK_SVE,
1168 AArch64::AEK_SVE2,
1169 AArch64::AEK_BF16,
1170 AArch64::AEK_FCMA,
1171 AArch64::AEK_CRC,
1172 AArch64::AEK_DOTPROD,
1173 AArch64::AEK_FP,
1174 AArch64::AEK_FP16,
1175 AArch64::AEK_I8MM,
1176 AArch64::AEK_JSCVT,
1177 AArch64::AEK_LSE,
1178 AArch64::AEK_SIMD,
1179 AArch64::AEK_RAS,
1180 AArch64::AEK_RCPC,
1181 AArch64::AEK_RDM,
1182 })
1183 },
1184 {
1185 "cortex-a725",
1186 ARMV9_2A,
1187 AArch64::ExtensionBitset({
1188 AArch64::AEK_MTE,
1189 AArch64::AEK_FP16FML,
1190 AArch64::AEK_CCIDX,
1191 AArch64::AEK_ETE,
1192 AArch64::AEK_PERFMON,
1193 AArch64::AEK_PROFILE,
1194 AArch64::AEK_SVEBITPERM,
1195 AArch64::AEK_SPE_EEF,
1196 AArch64::AEK_TRBE,
1197 AArch64::AEK_FLAGM,
1198 AArch64::AEK_PREDRES,
1199 AArch64::AEK_SB,
1200 AArch64::AEK_SSBS,
1201 AArch64::AEK_SVE,
1202 AArch64::AEK_SVE2,
1203 AArch64::AEK_BF16,
1204 AArch64::AEK_FCMA,
1205 AArch64::AEK_CRC,
1206 AArch64::AEK_DOTPROD,
1207 AArch64::AEK_FP,
1208 AArch64::AEK_FP16,
1209 AArch64::AEK_I8MM,
1210 AArch64::AEK_JSCVT,
1211 AArch64::AEK_LSE,
1212 AArch64::AEK_SIMD,
1213 AArch64::AEK_PAUTH,
1214 AArch64::AEK_RAS,
1215 AArch64::AEK_RCPC,
1216 AArch64::AEK_RDM,
1217 })
1218 },
1219 {
1220 "cortex-r82",
1221 ARMV8R,
1222 AArch64::ExtensionBitset({
1223 AArch64::AEK_PERFMON,
1224 AArch64::AEK_FP16,
1225 AArch64::AEK_FP16FML,
1226 AArch64::AEK_SSBS,
1227 AArch64::AEK_PREDRES,
1228 AArch64::AEK_SB,
1229 AArch64::AEK_RDM,
1230 AArch64::AEK_DOTPROD,
1231 AArch64::AEK_FCMA,
1232 AArch64::AEK_JSCVT,
1233 AArch64::AEK_CCDP,
1234 AArch64::AEK_FLAGM,
1235 AArch64::AEK_CRC,
1236 AArch64::AEK_LSE,
1237 AArch64::AEK_RAS,
1238 AArch64::AEK_FP,
1239 AArch64::AEK_SIMD,
1240 AArch64::AEK_PAUTH,
1241 AArch64::AEK_RCPC,
1242 })
1243 },
1244 {
1245 "cortex-r82ae",
1246 ARMV8R,
1247 AArch64::ExtensionBitset({
1248 AArch64::AEK_PERFMON,
1249 AArch64::AEK_FP16,
1250 AArch64::AEK_FP16FML,
1251 AArch64::AEK_SSBS,
1252 AArch64::AEK_PREDRES,
1253 AArch64::AEK_SB,
1254 AArch64::AEK_RDM,
1255 AArch64::AEK_DOTPROD,
1256 AArch64::AEK_FCMA,
1257 AArch64::AEK_JSCVT,
1258 AArch64::AEK_CCDP,
1259 AArch64::AEK_LSE,
1260 AArch64::AEK_FLAGM,
1261 AArch64::AEK_CRC,
1262 AArch64::AEK_FP,
1263 AArch64::AEK_SIMD,
1264 AArch64::AEK_PAUTH,
1265 AArch64::AEK_RAS,
1266 AArch64::AEK_RCPC,
1267 })
1268 },
1269 {
1270 "cortex-x1",
1271 ARMV8_2A,
1272 AArch64::ExtensionBitset({
1273 AArch64::AEK_SHA2,
1274 AArch64::AEK_AES,
1275 AArch64::AEK_FP,
1276 AArch64::AEK_SIMD,
1277 AArch64::AEK_RCPC,
1278 AArch64::AEK_PERFMON,
1279 AArch64::AEK_PROFILE,
1280 AArch64::AEK_FP16,
1281 AArch64::AEK_DOTPROD,
1282 AArch64::AEK_SSBS,
1283 AArch64::AEK_CRC,
1284 AArch64::AEK_LSE,
1285 AArch64::AEK_RAS,
1286 AArch64::AEK_RDM,
1287 })
1288 },
1289 {
1290 "cortex-x1c",
1291 ARMV8_2A,
1292 AArch64::ExtensionBitset({
1293 AArch64::AEK_SHA2,
1294 AArch64::AEK_AES,
1295 AArch64::AEK_FP,
1296 AArch64::AEK_SIMD,
1297 AArch64::AEK_RCPC_IMMO,
1298 AArch64::AEK_PERFMON,
1299 AArch64::AEK_PROFILE,
1300 AArch64::AEK_FP16,
1301 AArch64::AEK_DOTPROD,
1302 AArch64::AEK_PAUTH,
1303 AArch64::AEK_SSBS,
1304 AArch64::AEK_FLAGM,
1305 AArch64::AEK_LSE2,
1306 AArch64::AEK_RCPC,
1307 AArch64::AEK_CRC,
1308 AArch64::AEK_LSE,
1309 AArch64::AEK_RAS,
1310 AArch64::AEK_RDM,
1311 })
1312 },
1313 {
1314 "cortex-x2",
1315 ARMV9A,
1316 AArch64::ExtensionBitset({
1317 AArch64::AEK_SIMD,
1318 AArch64::AEK_PERFMON,
1319 AArch64::AEK_I8MM,
1320 AArch64::AEK_BF16,
1321 AArch64::AEK_AM,
1322 AArch64::AEK_MTE,
1323 AArch64::AEK_ETE,
1324 AArch64::AEK_SVEBITPERM,
1325 AArch64::AEK_FP16FML,
1326 AArch64::AEK_CCIDX,
1327 AArch64::AEK_PAUTH,
1328 AArch64::AEK_SSBS,
1329 AArch64::AEK_SB,
1330 AArch64::AEK_SVE,
1331 AArch64::AEK_SVE2,
1332 AArch64::AEK_FLAGM,
1333 AArch64::AEK_FCMA,
1334 AArch64::AEK_CRC,
1335 AArch64::AEK_DOTPROD,
1336 AArch64::AEK_FP,
1337 AArch64::AEK_FP16,
1338 AArch64::AEK_JSCVT,
1339 AArch64::AEK_LSE,
1340 AArch64::AEK_RAS,
1341 AArch64::AEK_RCPC,
1342 AArch64::AEK_RDM,
1343 })
1344 },
1345 {
1346 "cortex-x3",
1347 ARMV9A,
1348 AArch64::ExtensionBitset({
1349 AArch64::AEK_SVE,
1350 AArch64::AEK_SIMD,
1351 AArch64::AEK_PERFMON,
1352 AArch64::AEK_ETE,
1353 AArch64::AEK_TRBE,
1354 AArch64::AEK_PROFILE,
1355 AArch64::AEK_BF16,
1356 AArch64::AEK_I8MM,
1357 AArch64::AEK_MTE,
1358 AArch64::AEK_SVEBITPERM,
1359 AArch64::AEK_FP16,
1360 AArch64::AEK_FP16FML,
1361 AArch64::AEK_CCIDX,
1362 AArch64::AEK_SB,
1363 AArch64::AEK_PAUTH,
1364 AArch64::AEK_PREDRES,
1365 AArch64::AEK_FLAGM,
1366 AArch64::AEK_SSBS,
1367 AArch64::AEK_SVE2,
1368 AArch64::AEK_FCMA,
1369 AArch64::AEK_CRC,
1370 AArch64::AEK_FP,
1371 AArch64::AEK_JSCVT,
1372 AArch64::AEK_LSE,
1373 AArch64::AEK_RAS,
1374 AArch64::AEK_RCPC,
1375 AArch64::AEK_RDM,
1376 AArch64::AEK_DOTPROD,
1377 })
1378 },
1379 {
1380 "cortex-x4",
1381 ARMV9_2A,
1382 AArch64::ExtensionBitset({
1383 AArch64::AEK_PERFMON,
1384 AArch64::AEK_ETE,
1385 AArch64::AEK_TRBE,
1386 AArch64::AEK_PROFILE,
1387 AArch64::AEK_MTE,
1388 AArch64::AEK_SVEBITPERM,
1389 AArch64::AEK_FP16FML,
1390 AArch64::AEK_SPE_EEF,
1391 AArch64::AEK_CCIDX,
1392 AArch64::AEK_SB,
1393 AArch64::AEK_SSBS,
1394 AArch64::AEK_PAUTH,
1395 AArch64::AEK_FLAGM,
1396 AArch64::AEK_PREDRES,
1397 AArch64::AEK_SVE,
1398 AArch64::AEK_SVE2,
1399 AArch64::AEK_FCMA,
1400 AArch64::AEK_CRC,
1401 AArch64::AEK_DOTPROD,
1402 AArch64::AEK_FP,
1403 AArch64::AEK_FP16,
1404 AArch64::AEK_I8MM,
1405 AArch64::AEK_JSCVT,
1406 AArch64::AEK_LSE,
1407 AArch64::AEK_SIMD,
1408 AArch64::AEK_RAS,
1409 AArch64::AEK_RCPC,
1410 AArch64::AEK_RDM,
1411 AArch64::AEK_BF16,
1412 })
1413 },
1414 {
1415 "cortex-x925",
1416 ARMV9_2A,
1417 AArch64::ExtensionBitset({
1418 AArch64::AEK_MTE,
1419 AArch64::AEK_FP16FML,
1420 AArch64::AEK_CCIDX,
1421 AArch64::AEK_ETE,
1422 AArch64::AEK_PERFMON,
1423 AArch64::AEK_PROFILE,
1424 AArch64::AEK_SVEBITPERM,
1425 AArch64::AEK_SPE_EEF,
1426 AArch64::AEK_TRBE,
1427 AArch64::AEK_FLAGM,
1428 AArch64::AEK_PREDRES,
1429 AArch64::AEK_SB,
1430 AArch64::AEK_SSBS,
1431 AArch64::AEK_SVE,
1432 AArch64::AEK_SVE2,
1433 AArch64::AEK_BF16,
1434 AArch64::AEK_FCMA,
1435 AArch64::AEK_CRC,
1436 AArch64::AEK_DOTPROD,
1437 AArch64::AEK_FP,
1438 AArch64::AEK_FP16,
1439 AArch64::AEK_I8MM,
1440 AArch64::AEK_JSCVT,
1441 AArch64::AEK_LSE,
1442 AArch64::AEK_SIMD,
1443 AArch64::AEK_PAUTH,
1444 AArch64::AEK_RAS,
1445 AArch64::AEK_RCPC,
1446 AArch64::AEK_RDM,
1447 })
1448 },
1449 {
1450 "neoverse-e1",
1451 ARMV8_2A,
1452 AArch64::ExtensionBitset({
1453 AArch64::AEK_SHA2,
1454 AArch64::AEK_AES,
1455 AArch64::AEK_DOTPROD,
1456 AArch64::AEK_FP,
1457 AArch64::AEK_FP16,
1458 AArch64::AEK_SIMD,
1459 AArch64::AEK_RCPC,
1460 AArch64::AEK_SSBS,
1461 AArch64::AEK_PERFMON,
1462 AArch64::AEK_CRC,
1463 AArch64::AEK_LSE,
1464 AArch64::AEK_RAS,
1465 AArch64::AEK_RDM,
1466 })
1467 },
1468 {
1469 "neoverse-n1",
1470 ARMV8_2A,
1471 AArch64::ExtensionBitset({
1472 AArch64::AEK_SHA2,
1473 AArch64::AEK_AES,
1474 AArch64::AEK_DOTPROD,
1475 AArch64::AEK_FP,
1476 AArch64::AEK_FP16,
1477 AArch64::AEK_SIMD,
1478 AArch64::AEK_RCPC,
1479 AArch64::AEK_PROFILE,
1480 AArch64::AEK_SSBS,
1481 AArch64::AEK_PERFMON,
1482 AArch64::AEK_CRC,
1483 AArch64::AEK_LSE,
1484 AArch64::AEK_RAS,
1485 AArch64::AEK_RDM,
1486 })
1487 },
1488 {
1489 "neoverse-n2",
1490 ARMV9A,
1491 AArch64::ExtensionBitset({
1492 AArch64::AEK_BF16,
1493 AArch64::AEK_ETE,
1494 AArch64::AEK_FP16FML,
1495 AArch64::AEK_I8MM,
1496 AArch64::AEK_MTE,
1497 AArch64::AEK_SVE2,
1498 AArch64::AEK_SVEBITPERM,
1499 AArch64::AEK_TRBE,
1500 AArch64::AEK_PERFMON,
1501 AArch64::AEK_CCIDX,
1502 AArch64::AEK_DOTPROD,
1503 AArch64::AEK_FP16,
1504 AArch64::AEK_SB,
1505 AArch64::AEK_SSBS,
1506 AArch64::AEK_SVE,
1507 AArch64::AEK_FCMA,
1508 AArch64::AEK_CRC,
1509 AArch64::AEK_FP,
1510 AArch64::AEK_JSCVT,
1511 AArch64::AEK_LSE,
1512 AArch64::AEK_SIMD,
1513 AArch64::AEK_PAUTH,
1514 AArch64::AEK_RAS,
1515 AArch64::AEK_RCPC,
1516 AArch64::AEK_RDM,
1517 })
1518 },
1519 {
1520 "neoverse-n3",
1521 ARMV9_2A,
1522 AArch64::ExtensionBitset({
1523 AArch64::AEK_ETE,
1524 AArch64::AEK_FP16FML,
1525 AArch64::AEK_FP16,
1526 AArch64::AEK_MTE,
1527 AArch64::AEK_PERFMON,
1528 AArch64::AEK_RAND,
1529 AArch64::AEK_PROFILE,
1530 AArch64::AEK_SPE_EEF,
1531 AArch64::AEK_SVEBITPERM,
1532 AArch64::AEK_CCIDX,
1533 AArch64::AEK_SSBS,
1534 AArch64::AEK_SB,
1535 AArch64::AEK_PREDRES,
1536 AArch64::AEK_PAUTH,
1537 AArch64::AEK_FLAGM,
1538 AArch64::AEK_SVE,
1539 AArch64::AEK_SVE2,
1540 AArch64::AEK_BF16,
1541 AArch64::AEK_FCMA,
1542 AArch64::AEK_CRC,
1543 AArch64::AEK_DOTPROD,
1544 AArch64::AEK_FP,
1545 AArch64::AEK_I8MM,
1546 AArch64::AEK_JSCVT,
1547 AArch64::AEK_LSE,
1548 AArch64::AEK_RAS,
1549 AArch64::AEK_RCPC,
1550 AArch64::AEK_RDM,
1551 AArch64::AEK_SIMD,
1552 })
1553 },
1554 {
1555 "neoverse-512tvb",
1556 ARMV8_4A,
1557 AArch64::ExtensionBitset({
1558 AArch64::AEK_BF16,
1559 AArch64::AEK_CCDP,
1560 AArch64::AEK_SHA2,
1561 AArch64::AEK_AES,
1562 AArch64::AEK_FP,
1563 AArch64::AEK_FP16FML,
1564 AArch64::AEK_FP16,
1565 AArch64::AEK_I8MM,
1566 AArch64::AEK_SIMD,
1567 AArch64::AEK_PERFMON,
1568 AArch64::AEK_RAND,
1569 AArch64::AEK_PROFILE,
1570 AArch64::AEK_SSBS,
1571 AArch64::AEK_SVE,
1572 AArch64::AEK_CCIDX,
1573 AArch64::AEK_SHA3,
1574 AArch64::AEK_SM4,
1575 AArch64::AEK_DOTPROD,
1576 AArch64::AEK_FCMA,
1577 AArch64::AEK_CRC,
1578 AArch64::AEK_JSCVT,
1579 AArch64::AEK_LSE,
1580 AArch64::AEK_PAUTH,
1581 AArch64::AEK_RAS,
1582 AArch64::AEK_RCPC,
1583 AArch64::AEK_RDM,
1584 })
1585 },
1586 {
1587 "neoverse-v1",
1588 ARMV8_4A,
1589 AArch64::ExtensionBitset({
1590 AArch64::AEK_BF16,
1591 AArch64::AEK_CCDP,
1592 AArch64::AEK_SHA2,
1593 AArch64::AEK_AES,
1594 AArch64::AEK_FP,
1595 AArch64::AEK_FP16FML,
1596 AArch64::AEK_FP16,
1597 AArch64::AEK_I8MM,
1598 AArch64::AEK_SIMD,
1599 AArch64::AEK_PERFMON,
1600 AArch64::AEK_RAND,
1601 AArch64::AEK_PROFILE,
1602 AArch64::AEK_SSBS,
1603 AArch64::AEK_SVE,
1604 AArch64::AEK_CCIDX,
1605 AArch64::AEK_SHA3,
1606 AArch64::AEK_SM4,
1607 AArch64::AEK_DOTPROD,
1608 AArch64::AEK_FCMA,
1609 AArch64::AEK_CRC,
1610 AArch64::AEK_JSCVT,
1611 AArch64::AEK_LSE,
1612 AArch64::AEK_PAUTH,
1613 AArch64::AEK_RAS,
1614 AArch64::AEK_RCPC,
1615 AArch64::AEK_RDM,
1616 })
1617 },
1618 {
1619 "neoverse-v2",
1620 ARMV9A,
1621 AArch64::ExtensionBitset({
1622 AArch64::AEK_BF16,
1623 AArch64::AEK_PROFILE,
1624 AArch64::AEK_PERFMON,
1625 AArch64::AEK_ETE,
1626 AArch64::AEK_I8MM,
1627 AArch64::AEK_SIMD,
1628 AArch64::AEK_SVEBITPERM,
1629 AArch64::AEK_FP16FML,
1630 AArch64::AEK_MTE,
1631 AArch64::AEK_RAND,
1632 AArch64::AEK_CCIDX,
1633 AArch64::AEK_SVE,
1634 AArch64::AEK_SVE2,
1635 AArch64::AEK_SSBS,
1636 AArch64::AEK_FP16,
1637 AArch64::AEK_DOTPROD,
1638 AArch64::AEK_FCMA,
1639 AArch64::AEK_CRC,
1640 AArch64::AEK_FP,
1641 AArch64::AEK_JSCVT,
1642 AArch64::AEK_LSE,
1643 AArch64::AEK_PAUTH,
1644 AArch64::AEK_RAS,
1645 AArch64::AEK_RCPC,
1646 AArch64::AEK_RDM,
1647 })
1648 },
1649 {
1650 "neoverse-v3",
1651 ARMV9_2A,
1652 AArch64::ExtensionBitset({
1653 AArch64::AEK_ETE,
1654 AArch64::AEK_FP16FML,
1655 AArch64::AEK_FP16,
1656 AArch64::AEK_LS64,
1657 AArch64::AEK_MTE,
1658 AArch64::AEK_PERFMON,
1659 AArch64::AEK_RAND,
1660 AArch64::AEK_PROFILE,
1661 AArch64::AEK_CCIDX,
1662 AArch64::AEK_SPE_EEF,
1663 AArch64::AEK_SVEBITPERM,
1664 AArch64::AEK_BRBE,
1665 AArch64::AEK_SSBS,
1666 AArch64::AEK_SB,
1667 AArch64::AEK_PREDRES,
1668 AArch64::AEK_PAUTH,
1669 AArch64::AEK_FLAGM,
1670 AArch64::AEK_SVE,
1671 AArch64::AEK_SVE2,
1672 AArch64::AEK_BF16,
1673 AArch64::AEK_FCMA,
1674 AArch64::AEK_CRC,
1675 AArch64::AEK_DOTPROD,
1676 AArch64::AEK_FP,
1677 AArch64::AEK_I8MM,
1678 AArch64::AEK_JSCVT,
1679 AArch64::AEK_LSE,
1680 AArch64::AEK_SIMD,
1681 AArch64::AEK_RAS,
1682 AArch64::AEK_RCPC,
1683 AArch64::AEK_RDM,
1684 AArch64::AEK_RME,
1685 })
1686 },
1687 {
1688 "neoverse-v3ae",
1689 ARMV9_2A,
1690 AArch64::ExtensionBitset({
1691 AArch64::AEK_ETE,
1692 AArch64::AEK_FP16FML,
1693 AArch64::AEK_FP16,
1694 AArch64::AEK_LS64,
1695 AArch64::AEK_MTE,
1696 AArch64::AEK_PERFMON,
1697 AArch64::AEK_RAND,
1698 AArch64::AEK_PROFILE,
1699 AArch64::AEK_SPE_EEF,
1700 AArch64::AEK_SVEBITPERM,
1701 AArch64::AEK_BRBE,
1702 AArch64::AEK_SSBS,
1703 AArch64::AEK_SB,
1704 AArch64::AEK_PREDRES,
1705 AArch64::AEK_PAUTH,
1706 AArch64::AEK_FLAGM,
1707 AArch64::AEK_CCIDX,
1708 AArch64::AEK_SVE,
1709 AArch64::AEK_SVE2,
1710 AArch64::AEK_BF16,
1711 AArch64::AEK_FCMA,
1712 AArch64::AEK_CRC,
1713 AArch64::AEK_DOTPROD,
1714 AArch64::AEK_FP,
1715 AArch64::AEK_I8MM,
1716 AArch64::AEK_JSCVT,
1717 AArch64::AEK_LSE,
1718 AArch64::AEK_SIMD,
1719 AArch64::AEK_RAS,
1720 AArch64::AEK_RCPC,
1721 AArch64::AEK_RDM,
1722 AArch64::AEK_RME,
1723 })
1724 },
1725 {
1726 "exynos-m3",
1727 ARMV8A,
1728 AArch64::ExtensionBitset({
1729 AArch64::AEK_CRC,
1730 AArch64::AEK_SHA2,
1731 AArch64::AEK_AES,
1732 AArch64::AEK_PERFMON,
1733 AArch64::AEK_SIMD,
1734 AArch64::AEK_FP,
1735 })
1736 },
1737 {
1738 "exynos-m4",
1739 ARMV8_2A,
1740 AArch64::ExtensionBitset({
1741 AArch64::AEK_SHA2,
1742 AArch64::AEK_AES,
1743 AArch64::AEK_DOTPROD,
1744 AArch64::AEK_FP16,
1745 AArch64::AEK_PERFMON,
1746 AArch64::AEK_CRC,
1747 AArch64::AEK_FP,
1748 AArch64::AEK_LSE,
1749 AArch64::AEK_SIMD,
1750 AArch64::AEK_RAS,
1751 AArch64::AEK_RDM,
1752 })
1753 },
1754 {
1755 "exynos-m5",
1756 ARMV8_2A,
1757 AArch64::ExtensionBitset({
1758 AArch64::AEK_SHA2,
1759 AArch64::AEK_AES,
1760 AArch64::AEK_DOTPROD,
1761 AArch64::AEK_FP16,
1762 AArch64::AEK_PERFMON,
1763 AArch64::AEK_CRC,
1764 AArch64::AEK_FP,
1765 AArch64::AEK_LSE,
1766 AArch64::AEK_SIMD,
1767 AArch64::AEK_RAS,
1768 AArch64::AEK_RDM,
1769 })
1770 },
1771 {
1772 "falkor",
1773 ARMV8A,
1774 AArch64::ExtensionBitset({
1775 AArch64::AEK_CRC,
1776 AArch64::AEK_SHA2,
1777 AArch64::AEK_AES,
1778 AArch64::AEK_FP,
1779 AArch64::AEK_SIMD,
1780 AArch64::AEK_PERFMON,
1781 AArch64::AEK_RDM,
1782 })
1783 },
1784 {
1785 "saphira",
1786 ARMV8_4A,
1787 AArch64::ExtensionBitset({
1788 AArch64::AEK_SHA2,
1789 AArch64::AEK_AES,
1790 AArch64::AEK_FP,
1791 AArch64::AEK_SIMD,
1792 AArch64::AEK_PROFILE,
1793 AArch64::AEK_PERFMON,
1794 AArch64::AEK_CRC,
1795 AArch64::AEK_CCIDX,
1796 AArch64::AEK_LSE,
1797 AArch64::AEK_RDM,
1798 AArch64::AEK_RAS,
1799 AArch64::AEK_RCPC,
1800 })
1801 },
1802 {
1803 "kryo",
1804 ARMV8A,
1805 AArch64::ExtensionBitset({
1806 AArch64::AEK_CRC,
1807 AArch64::AEK_SHA2,
1808 AArch64::AEK_AES,
1809 AArch64::AEK_FP,
1810 AArch64::AEK_SIMD,
1811 AArch64::AEK_PERFMON,
1812 })
1813 },
1814 {
1815 "thunderx",
1816 ARMV8A,
1817 AArch64::ExtensionBitset({
1818 AArch64::AEK_CRC,
1819 AArch64::AEK_SHA2,
1820 AArch64::AEK_AES,
1821 AArch64::AEK_FP,
1822 AArch64::AEK_PERFMON,
1823 AArch64::AEK_SIMD,
1824 })
1825 },
1826 {
1827 "thunderxt88",
1828 ARMV8A,
1829 AArch64::ExtensionBitset({
1830 AArch64::AEK_CRC,
1831 AArch64::AEK_SHA2,
1832 AArch64::AEK_AES,
1833 AArch64::AEK_FP,
1834 AArch64::AEK_PERFMON,
1835 AArch64::AEK_SIMD,
1836 })
1837 },
1838 {
1839 "thunderxt81",
1840 ARMV8A,
1841 AArch64::ExtensionBitset({
1842 AArch64::AEK_CRC,
1843 AArch64::AEK_SHA2,
1844 AArch64::AEK_AES,
1845 AArch64::AEK_FP,
1846 AArch64::AEK_PERFMON,
1847 AArch64::AEK_SIMD,
1848 })
1849 },
1850 {
1851 "thunderxt83",
1852 ARMV8A,
1853 AArch64::ExtensionBitset({
1854 AArch64::AEK_CRC,
1855 AArch64::AEK_SHA2,
1856 AArch64::AEK_AES,
1857 AArch64::AEK_FP,
1858 AArch64::AEK_PERFMON,
1859 AArch64::AEK_SIMD,
1860 })
1861 },
1862 {
1863 "thunderx2t99",
1864 ARMV8_1A,
1865 AArch64::ExtensionBitset({
1866 AArch64::AEK_CRC,
1867 AArch64::AEK_SHA2,
1868 AArch64::AEK_AES,
1869 AArch64::AEK_FP,
1870 AArch64::AEK_SIMD,
1871 AArch64::AEK_LSE,
1872 AArch64::AEK_RDM,
1873 })
1874 },
1875 {
1876 "thunderx3t110",
1877 ARMV8_3A,
1878 AArch64::ExtensionBitset({
1879 AArch64::AEK_CRC,
1880 AArch64::AEK_SHA2,
1881 AArch64::AEK_AES,
1882 AArch64::AEK_FP,
1883 AArch64::AEK_SIMD,
1884 AArch64::AEK_LSE,
1885 AArch64::AEK_CCIDX,
1886 AArch64::AEK_PAUTH,
1887 AArch64::AEK_PERFMON,
1888 AArch64::AEK_FCMA,
1889 AArch64::AEK_JSCVT,
1890 AArch64::AEK_RAS,
1891 AArch64::AEK_RCPC,
1892 AArch64::AEK_RDM,
1893 })
1894 },
1895 {
1896 "tsv110",
1897 ARMV8_2A,
1898 AArch64::ExtensionBitset({
1899 AArch64::AEK_SHA2,
1900 AArch64::AEK_AES,
1901 AArch64::AEK_FP,
1902 AArch64::AEK_SIMD,
1903 AArch64::AEK_PERFMON,
1904 AArch64::AEK_PROFILE,
1905 AArch64::AEK_FP16,
1906 AArch64::AEK_FP16FML,
1907 AArch64::AEK_DOTPROD,
1908 AArch64::AEK_JSCVT,
1909 AArch64::AEK_FCMA,
1910 AArch64::AEK_CRC,
1911 AArch64::AEK_LSE,
1912 AArch64::AEK_RAS,
1913 AArch64::AEK_RDM,
1914 })
1915 },
1916 {
1917 "apple-a7",
1918 ARMV8A,
1919 AArch64::ExtensionBitset({
1920 AArch64::AEK_SHA2,
1921 AArch64::AEK_AES,
1922 AArch64::AEK_FP,
1923 AArch64::AEK_SIMD,
1924 AArch64::AEK_PERFMON,
1925 })
1926 },
1927 {
1928 "apple-a10",
1929 ARMV8A,
1930 AArch64::ExtensionBitset({
1931 AArch64::AEK_SHA2,
1932 AArch64::AEK_AES,
1933 AArch64::AEK_FP,
1934 AArch64::AEK_SIMD,
1935 AArch64::AEK_PERFMON,
1936 AArch64::AEK_CRC,
1937 AArch64::AEK_RDM,
1938 AArch64::AEK_PAN,
1939 AArch64::AEK_LOR,
1940 AArch64::AEK_VH,
1941 })
1942 },
1943 {
1944 "apple-a11",
1945 ARMV8_2A,
1946 AArch64::ExtensionBitset({
1947 AArch64::AEK_SHA2,
1948 AArch64::AEK_AES,
1949 AArch64::AEK_FP,
1950 AArch64::AEK_SIMD,
1951 AArch64::AEK_PERFMON,
1952 AArch64::AEK_FP16,
1953 AArch64::AEK_CRC,
1954 AArch64::AEK_LSE,
1955 AArch64::AEK_RAS,
1956 AArch64::AEK_RDM,
1957 })
1958 },
1959 {
1960 "apple-a12",
1961 ARMV8_3A,
1962 AArch64::ExtensionBitset({
1963 AArch64::AEK_SHA2,
1964 AArch64::AEK_AES,
1965 AArch64::AEK_FP,
1966 AArch64::AEK_SIMD,
1967 AArch64::AEK_PERFMON,
1968 AArch64::AEK_FP16,
1969 AArch64::AEK_FCMA,
1970 AArch64::AEK_CRC,
1971 AArch64::AEK_JSCVT,
1972 AArch64::AEK_LSE,
1973 AArch64::AEK_PAUTH,
1974 AArch64::AEK_RAS,
1975 AArch64::AEK_RCPC,
1976 AArch64::AEK_RDM,
1977 })
1978 },
1979 {
1980 "apple-a13",
1981 ARMV8_4A,
1982 AArch64::ExtensionBitset({
1983 AArch64::AEK_SHA2,
1984 AArch64::AEK_AES,
1985 AArch64::AEK_FP,
1986 AArch64::AEK_SIMD,
1987 AArch64::AEK_PERFMON,
1988 AArch64::AEK_FP16,
1989 AArch64::AEK_FP16FML,
1990 AArch64::AEK_SHA3,
1991 AArch64::AEK_FCMA,
1992 AArch64::AEK_CRC,
1993 AArch64::AEK_JSCVT,
1994 AArch64::AEK_LSE,
1995 AArch64::AEK_PAUTH,
1996 AArch64::AEK_RAS,
1997 AArch64::AEK_RCPC,
1998 AArch64::AEK_RDM,
1999 AArch64::AEK_DOTPROD,
2000 })
2001 },
2002 {
2003 "apple-a14",
2004 ARMV8_4A,
2005 AArch64::ExtensionBitset({
2006 AArch64::AEK_SHA2,
2007 AArch64::AEK_AES,
2008 AArch64::AEK_FP,
2009 AArch64::AEK_SIMD,
2010 AArch64::AEK_PERFMON,
2011 AArch64::AEK_FP16,
2012 AArch64::AEK_FP16FML,
2013 AArch64::AEK_SHA3,
2014 AArch64::AEK_ALTERNATIVENZCV,
2015 AArch64::AEK_FRINT3264,
2016 AArch64::AEK_SPECRESTRICT,
2017 AArch64::AEK_SSBS,
2018 AArch64::AEK_SB,
2019 AArch64::AEK_PREDRES,
2020 AArch64::AEK_CCDP,
2021 AArch64::AEK_FCMA,
2022 AArch64::AEK_CRC,
2023 AArch64::AEK_JSCVT,
2024 AArch64::AEK_LSE,
2025 AArch64::AEK_PAUTH,
2026 AArch64::AEK_RAS,
2027 AArch64::AEK_RCPC,
2028 AArch64::AEK_RDM,
2029 AArch64::AEK_DOTPROD,
2030 })
2031 },
2032 {
2033 "apple-a15",
2034 ARMV8_6A,
2035 AArch64::ExtensionBitset({
2036 AArch64::AEK_SHA2,
2037 AArch64::AEK_AES,
2038 AArch64::AEK_FP,
2039 AArch64::AEK_SIMD,
2040 AArch64::AEK_PERFMON,
2041 AArch64::AEK_SHA3,
2042 AArch64::AEK_FP16,
2043 AArch64::AEK_FP16FML,
2044 AArch64::AEK_FCMA,
2045 AArch64::AEK_CRC,
2046 AArch64::AEK_JSCVT,
2047 AArch64::AEK_LSE,
2048 AArch64::AEK_PAUTH,
2049 AArch64::AEK_FPAC,
2050 AArch64::AEK_RAS,
2051 AArch64::AEK_RCPC,
2052 AArch64::AEK_RDM,
2053 AArch64::AEK_BF16,
2054 AArch64::AEK_DOTPROD,
2055 AArch64::AEK_I8MM,
2056 AArch64::AEK_SSBS,
2057 })
2058 },
2059 {
2060 "apple-a16",
2061 ARMV8_6A,
2062 AArch64::ExtensionBitset({
2063 AArch64::AEK_SHA2,
2064 AArch64::AEK_AES,
2065 AArch64::AEK_FP,
2066 AArch64::AEK_SIMD,
2067 AArch64::AEK_PERFMON,
2068 AArch64::AEK_SHA3,
2069 AArch64::AEK_FP16,
2070 AArch64::AEK_FP16FML,
2071 AArch64::AEK_HCX,
2072 AArch64::AEK_FCMA,
2073 AArch64::AEK_CRC,
2074 AArch64::AEK_JSCVT,
2075 AArch64::AEK_LSE,
2076 AArch64::AEK_PAUTH,
2077 AArch64::AEK_FPAC,
2078 AArch64::AEK_RAS,
2079 AArch64::AEK_RCPC,
2080 AArch64::AEK_RDM,
2081 AArch64::AEK_BF16,
2082 AArch64::AEK_DOTPROD,
2083 AArch64::AEK_I8MM,
2084 AArch64::AEK_SSBS,
2085 })
2086 },
2087 {
2088 "apple-a17",
2089 ARMV8_6A,
2090 AArch64::ExtensionBitset({
2091 AArch64::AEK_SHA2,
2092 AArch64::AEK_AES,
2093 AArch64::AEK_FP,
2094 AArch64::AEK_SIMD,
2095 AArch64::AEK_PERFMON,
2096 AArch64::AEK_SHA3,
2097 AArch64::AEK_FP16,
2098 AArch64::AEK_FP16FML,
2099 AArch64::AEK_HCX,
2100 AArch64::AEK_FCMA,
2101 AArch64::AEK_CRC,
2102 AArch64::AEK_JSCVT,
2103 AArch64::AEK_LSE,
2104 AArch64::AEK_PAUTH,
2105 AArch64::AEK_FPAC,
2106 AArch64::AEK_RAS,
2107 AArch64::AEK_RCPC,
2108 AArch64::AEK_RDM,
2109 AArch64::AEK_BF16,
2110 AArch64::AEK_DOTPROD,
2111 AArch64::AEK_I8MM,
2112 AArch64::AEK_SSBS,
2113 })
2114 },
2115 {
2116 "apple-m4",
2117 ARMV8_7A,
2118 AArch64::ExtensionBitset({
2119 AArch64::AEK_SHA2,
2120 AArch64::AEK_FP,
2121 AArch64::AEK_SIMD,
2122 AArch64::AEK_PERFMON,
2123 AArch64::AEK_SHA3,
2124 AArch64::AEK_FP16,
2125 AArch64::AEK_FP16FML,
2126 AArch64::AEK_AES,
2127 AArch64::AEK_BF16,
2128 AArch64::AEK_SME,
2129 AArch64::AEK_SME2,
2130 AArch64::AEK_SMEF64F64,
2131 AArch64::AEK_SMEI16I64,
2132 AArch64::AEK_FCMA,
2133 AArch64::AEK_CRC,
2134 AArch64::AEK_JSCVT,
2135 AArch64::AEK_LSE,
2136 AArch64::AEK_PAUTH,
2137 AArch64::AEK_FPAC,
2138 AArch64::AEK_RAS,
2139 AArch64::AEK_RCPC,
2140 AArch64::AEK_RDM,
2141 AArch64::AEK_DOTPROD,
2142 AArch64::AEK_I8MM,
2143 })
2144 },
2145 {
2146 "a64fx",
2147 ARMV8_2A,
2148 AArch64::ExtensionBitset({
2149 AArch64::AEK_FP,
2150 AArch64::AEK_SIMD,
2151 AArch64::AEK_SHA2,
2152 AArch64::AEK_PERFMON,
2153 AArch64::AEK_FP16,
2154 AArch64::AEK_SVE,
2155 AArch64::AEK_FCMA,
2156 AArch64::AEK_AES,
2157 AArch64::AEK_CRC,
2158 AArch64::AEK_LSE,
2159 AArch64::AEK_RAS,
2160 AArch64::AEK_RDM,
2161 })
2162 },
2163 {
2164 "fujitsu-monaka",
2165 ARMV9_3A,
2166 AArch64::ExtensionBitset({
2167 AArch64::AEK_PERFMON,
2168 AArch64::AEK_CCIDX,
2169 AArch64::AEK_FPAC,
2170 AArch64::AEK_FP16FML,
2171 AArch64::AEK_RAND,
2172 AArch64::AEK_SSBS,
2173 AArch64::AEK_LS64,
2174 AArch64::AEK_CLRBHB,
2175 AArch64::AEK_SPECRES2,
2176 AArch64::AEK_SVEAES,
2177 AArch64::AEK_SVE2SM4,
2178 AArch64::AEK_SVE2SHA3,
2179 AArch64::AEK_SVE2,
2180 AArch64::AEK_SVEBITPERM,
2181 AArch64::AEK_ETE,
2182 AArch64::AEK_MEC,
2183 AArch64::AEK_FAMINMAX,
2184 AArch64::AEK_FP8DOT2,
2185 AArch64::AEK_FP8DOT4,
2186 AArch64::AEK_FP8FMA,
2187 AArch64::AEK_LUT,
2188 })
2189 },
2190 {
2191 "carmel",
2192 ARMV8_2A,
2193 AArch64::ExtensionBitset({
2194 AArch64::AEK_SIMD,
2195 AArch64::AEK_SHA2,
2196 AArch64::AEK_AES,
2197 AArch64::AEK_FP16,
2198 AArch64::AEK_CRC,
2199 AArch64::AEK_LSE,
2200 AArch64::AEK_RAS,
2201 AArch64::AEK_RDM,
2202 AArch64::AEK_FP,
2203 })
2204 },
2205 {
2206 "ampere1",
2207 ARMV8_6A,
2208 AArch64::ExtensionBitset({
2209 AArch64::AEK_SIMD,
2210 AArch64::AEK_PERFMON,
2211 AArch64::AEK_SSBS,
2212 AArch64::AEK_RAND,
2213 AArch64::AEK_SB,
2214 AArch64::AEK_SHA2,
2215 AArch64::AEK_SHA3,
2216 AArch64::AEK_AES,
2217 AArch64::AEK_FP16,
2218 AArch64::AEK_BF16,
2219 AArch64::AEK_FCMA,
2220 AArch64::AEK_CRC,
2221 AArch64::AEK_DOTPROD,
2222 AArch64::AEK_FP,
2223 AArch64::AEK_I8MM,
2224 AArch64::AEK_JSCVT,
2225 AArch64::AEK_CCIDX,
2226 AArch64::AEK_LSE,
2227 AArch64::AEK_PAUTH,
2228 AArch64::AEK_RAS,
2229 AArch64::AEK_RCPC,
2230 AArch64::AEK_RDM,
2231 })
2232 },
2233 {
2234 "ampere1a",
2235 ARMV8_6A,
2236 AArch64::ExtensionBitset({
2237 AArch64::AEK_SIMD,
2238 AArch64::AEK_PERFMON,
2239 AArch64::AEK_MTE,
2240 AArch64::AEK_SSBS,
2241 AArch64::AEK_RAND,
2242 AArch64::AEK_SB,
2243 AArch64::AEK_SM4,
2244 AArch64::AEK_SHA2,
2245 AArch64::AEK_SHA3,
2246 AArch64::AEK_AES,
2247 AArch64::AEK_FP16,
2248 AArch64::AEK_BF16,
2249 AArch64::AEK_FCMA,
2250 AArch64::AEK_CRC,
2251 AArch64::AEK_DOTPROD,
2252 AArch64::AEK_FP,
2253 AArch64::AEK_I8MM,
2254 AArch64::AEK_JSCVT,
2255 AArch64::AEK_LSE,
2256 AArch64::AEK_PAUTH,
2257 AArch64::AEK_RAS,
2258 AArch64::AEK_RCPC,
2259 AArch64::AEK_CCIDX,
2260 AArch64::AEK_RDM,
2261 })
2262 },
2263 {
2264 "ampere1b",
2265 ARMV8_7A,
2266 AArch64::ExtensionBitset({
2267 AArch64::AEK_SIMD,
2268 AArch64::AEK_PERFMON,
2269 AArch64::AEK_MTE,
2270 AArch64::AEK_SSBS,
2271 AArch64::AEK_RAND,
2272 AArch64::AEK_SB,
2273 AArch64::AEK_SM4,
2274 AArch64::AEK_SHA2,
2275 AArch64::AEK_SHA3,
2276 AArch64::AEK_AES,
2277 AArch64::AEK_CSSC,
2278 AArch64::AEK_WFXT,
2279 AArch64::AEK_FP16,
2280 AArch64::AEK_BF16,
2281 AArch64::AEK_FCMA,
2282 AArch64::AEK_CRC,
2283 AArch64::AEK_DOTPROD,
2284 AArch64::AEK_FP,
2285 AArch64::AEK_I8MM,
2286 AArch64::AEK_JSCVT,
2287 AArch64::AEK_LSE,
2288 AArch64::AEK_PAUTH,
2289 AArch64::AEK_RAS,
2290 AArch64::AEK_RCPC,
2291 AArch64::AEK_CCIDX,
2292 AArch64::AEK_RDM,
2293 })
2294 },
2295 {
2296 "oryon-1",
2297 ARMV8_6A,
2298 AArch64::ExtensionBitset({
2299 AArch64::AEK_SIMD,
2300 AArch64::AEK_PERFMON,
2301 AArch64::AEK_RAND,
2302 AArch64::AEK_PAUTH,
2303 AArch64::AEK_SM4,
2304 AArch64::AEK_SHA2,
2305 AArch64::AEK_SHA3,
2306 AArch64::AEK_AES,
2307 AArch64::AEK_PROFILE,
2308 AArch64::AEK_BF16,
2309 AArch64::AEK_FCMA,
2310 AArch64::AEK_CRC,
2311 AArch64::AEK_DOTPROD,
2312 AArch64::AEK_FP,
2313 AArch64::AEK_I8MM,
2314 AArch64::AEK_SSBS,
2315 AArch64::AEK_CCIDX,
2316 AArch64::AEK_JSCVT,
2317 AArch64::AEK_LSE,
2318 AArch64::AEK_RAS,
2319 AArch64::AEK_RCPC,
2320 AArch64::AEK_RDM,
2321 })
2322 },
2323 };
2324 #undef EMIT_CPU_INFO
2325 #endif // EMIT_CPU_INFO
2326