@@ -173,6 +173,7 @@ enum ArchExtKind : unsigned {
173173 AEK_SMEF8F16 = 69 , // FEAT_SME_F8F16
174174 AEK_SMEF8F32 = 70 , // FEAT_SME_F8F32
175175 AEK_SMEFA64 = 71 , // FEAT_SME_FA64
176+ AEK_CPA = 72 , // FEAT_CPA
176177 AEK_NUM_EXTENSIONS
177178};
178179using ExtensionBitset = Bitset<AEK_NUM_EXTENSIONS>;
@@ -295,6 +296,7 @@ inline constexpr ExtensionInfo Extensions[] = {
295296 {" sme-f8f16" , AArch64::AEK_SMEF8F16, " +sme-f8f16" , " -sme-f8f16" , FEAT_INIT, " +sme2,+fp8" , 0 },
296297 {" sme-f8f32" , AArch64::AEK_SMEF8F32, " +sme-f8f32" , " -sme-f8f32" , FEAT_INIT, " +sme2,+fp8" , 0 },
297298 {" sme-fa64" , AArch64::AEK_SMEFA64, " +sme-fa64" , " -sme-fa64" , FEAT_INIT, " " , 0 },
299+ {" cpa" , AArch64::AEK_CPA, " +cpa" , " -cpa" , FEAT_INIT, " " , 0 },
298300 // Special cases
299301 {" none" , AArch64::AEK_NONE, {}, {}, FEAT_INIT, " " , ExtensionInfo::MaxFMVPriority},
300302};
@@ -378,7 +380,8 @@ inline constexpr ArchInfo ARMV9_3A = { VersionTuple{9, 3}, AProfile, "armv9.3-a
378380 AArch64::ExtensionBitset ({AArch64::AEK_MOPS, AArch64::AEK_HBC}))};
379381inline constexpr ArchInfo ARMV9_4A = { VersionTuple{9 , 4 }, AProfile, " armv9.4-a" , " +v9.4a" , (ARMV9_3A.DefaultExts |
380382 AArch64::ExtensionBitset ({AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASv2}))};
381- inline constexpr ArchInfo ARMV9_5A = { VersionTuple{9 , 5 }, AProfile, " armv9.5-a" , " +v9.5a" , (ARMV9_4A.DefaultExts )};
383+ inline constexpr ArchInfo ARMV9_5A = { VersionTuple{9 , 5 }, AProfile, " armv9.5-a" , " +v9.5a" , (ARMV9_4A.DefaultExts |
384+ AArch64::ExtensionBitset ({AArch64::AEK_CPA}))};
382385// For v8-R, we do not enable crypto and align with GCC that enables a more minimal set of optional architecture extensions.
383386inline constexpr ArchInfo ARMV8R = { VersionTuple{8 , 0 }, RProfile, " armv8-r" , " +v8r" , (ARMV8_5A.DefaultExts |
384387 AArch64::ExtensionBitset ({AArch64::AEK_SSBS,
0 commit comments