@@ -398,6 +398,12 @@ void AArch64TargetInfo::getTargetDefinesARMV96A(const LangOptions &Opts,
398398 getTargetDefinesARMV95A (Opts, Builder);
399399}
400400
401+ void AArch64TargetInfo::getTargetDefinesARMV97A (const LangOptions &Opts,
402+ MacroBuilder &Builder) const {
403+ // Armv9.7-A does not have a v8.* equivalent, but is a superset of v9.6-A.
404+ getTargetDefinesARMV96A (Opts, Builder);
405+ }
406+
401407void AArch64TargetInfo::getTargetDefines (const LangOptions &Opts,
402408 MacroBuilder &Builder) const {
403409 // Target identification.
@@ -714,6 +720,8 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions &Opts,
714720 getTargetDefinesARMV95A (Opts, Builder);
715721 else if (*ArchInfo == llvm::AArch64::ARMV9_6A)
716722 getTargetDefinesARMV96A (Opts, Builder);
723+ else if (*ArchInfo == llvm::AArch64::ARMV9_7A)
724+ getTargetDefinesARMV97A (Opts, Builder);
717725
718726 // All of the __sync_(bool|val)_compare_and_swap_(1|2|4|8|16) builtins work.
719727 Builder.defineMacro (" __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1" );
@@ -1152,6 +1160,9 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
11521160 if (Feature == " +v9.6a" &&
11531161 ArchInfo->Version < llvm::AArch64::ARMV9_6A.Version )
11541162 ArchInfo = &llvm::AArch64::ARMV9_6A;
1163+ if (Feature == " +v9.7a" &&
1164+ ArchInfo->Version < llvm::AArch64::ARMV9_7A.Version )
1165+ ArchInfo = &llvm::AArch64::ARMV9_7A;
11551166 if (Feature == " +v8r" )
11561167 ArchInfo = &llvm::AArch64::ARMV8R;
11571168 if (Feature == " +fullfp16" ) {
0 commit comments