[Clang] Remove AArch64TargetInfo::setArchFeatures (#146107)
When compiling with `-march=armv9-a+nosve` we found that Clang still defines the `__ARM_FEATURE_SVE2` macro, which is explicitly set in `setArchFeatures` when compiling for armv9-a. After some experimenting, I found out that the list of features passed into `AArch64TargetInfo::handleTargetFeatures` has already been expanded and takes into account `+no[feature]` and has already expanded features like `armv9-a`. From that I conclude that `setArchFeatures` is no longer required.
This commit is contained in:
@@ -125,79 +125,6 @@ static constexpr auto BuiltinAArch64Infos =
|
||||
#include "clang/Basic/BuiltinsAArch64.def"
|
||||
});
|
||||
|
||||
void AArch64TargetInfo::setArchFeatures() {
|
||||
if (*ArchInfo == llvm::AArch64::ARMV8R) {
|
||||
HasDotProd = true;
|
||||
HasDIT = true;
|
||||
HasFlagM = true;
|
||||
HasRCPC = true;
|
||||
FPU |= NeonMode;
|
||||
HasCCPP = true;
|
||||
HasCRC = true;
|
||||
HasLSE = true;
|
||||
HasRDM = true;
|
||||
} else if (ArchInfo->Version.getMajor() == 8) {
|
||||
if (ArchInfo->Version.getMinor() >= 7u) {
|
||||
HasWFxT = true;
|
||||
}
|
||||
if (ArchInfo->Version.getMinor() >= 6u) {
|
||||
HasBFloat16 = true;
|
||||
HasMatMul = true;
|
||||
}
|
||||
if (ArchInfo->Version.getMinor() >= 5u) {
|
||||
HasAlternativeNZCV = true;
|
||||
HasFRInt3264 = true;
|
||||
HasSSBS = true;
|
||||
HasSB = true;
|
||||
HasPredRes = true;
|
||||
HasBTI = true;
|
||||
}
|
||||
if (ArchInfo->Version.getMinor() >= 4u) {
|
||||
HasDotProd = true;
|
||||
HasDIT = true;
|
||||
HasFlagM = true;
|
||||
}
|
||||
if (ArchInfo->Version.getMinor() >= 3u) {
|
||||
HasRCPC = true;
|
||||
FPU |= NeonMode;
|
||||
}
|
||||
if (ArchInfo->Version.getMinor() >= 2u) {
|
||||
HasCCPP = true;
|
||||
}
|
||||
if (ArchInfo->Version.getMinor() >= 1u) {
|
||||
HasCRC = true;
|
||||
HasLSE = true;
|
||||
HasRDM = true;
|
||||
}
|
||||
} else if (ArchInfo->Version.getMajor() == 9) {
|
||||
if (ArchInfo->Version.getMinor() >= 2u) {
|
||||
HasWFxT = true;
|
||||
}
|
||||
if (ArchInfo->Version.getMinor() >= 1u) {
|
||||
HasBFloat16 = true;
|
||||
HasMatMul = true;
|
||||
}
|
||||
FPU |= SveMode;
|
||||
HasSVE2 = true;
|
||||
HasFullFP16 = true;
|
||||
HasAlternativeNZCV = true;
|
||||
HasFRInt3264 = true;
|
||||
HasSSBS = true;
|
||||
HasSB = true;
|
||||
HasPredRes = true;
|
||||
HasBTI = true;
|
||||
HasDotProd = true;
|
||||
HasDIT = true;
|
||||
HasFlagM = true;
|
||||
HasRCPC = true;
|
||||
FPU |= NeonMode;
|
||||
HasCCPP = true;
|
||||
HasCRC = true;
|
||||
HasLSE = true;
|
||||
HasRDM = true;
|
||||
}
|
||||
}
|
||||
|
||||
AArch64TargetInfo::AArch64TargetInfo(const llvm::Triple &Triple,
|
||||
const TargetOptions &Opts)
|
||||
: TargetInfo(Triple), ABI("aapcs") {
|
||||
@@ -1266,7 +1193,6 @@ bool AArch64TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
|
||||
}
|
||||
|
||||
setDataLayout();
|
||||
setArchFeatures();
|
||||
|
||||
if (HasNoFP) {
|
||||
FPU &= ~FPUMode;
|
||||
|
||||
@@ -158,8 +158,6 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
void setArchFeatures();
|
||||
|
||||
void getTargetDefinesARMV81A(const LangOptions &Opts,
|
||||
MacroBuilder &Builder) const;
|
||||
void getTargetDefinesARMV82A(const LangOptions &Opts,
|
||||
|
||||
@@ -1049,3 +1049,8 @@
|
||||
// CHECK-NOSIMD-NOT: #define __ARM_NEON 1
|
||||
// CHECK-NOSIMD-NOT: #define __ARM_NEON_FP 0x6
|
||||
// CHECK-NOSIMD-NOT: #define __ARM_NEON__ 1
|
||||
|
||||
// Check that disabling SVE, as set by armv9-a, does not define __ARM_FEATURE_SVE* macros.
|
||||
// RUN: %clang -target aarch64 -march=armv9-a+nosve -x c -E -dM -o - %s | FileCheck -check-prefix=CHECK-NOSVE %s
|
||||
// CHECK-NOSVE-NOT: #define __ARM_FEATURE_SVE 1
|
||||
// CHECK-NOSVE-NOT: #define __ARM_FEATURE_SVE2 1
|
||||
|
||||
Reference in New Issue
Block a user