AArch64::ArchKind's underlying type is uint64_t
This commit is contained in:
parent
667762c64e
commit
c145a1ca25
|
@ -94,7 +94,7 @@ static bool DecodeAArch64Mcpu(const Driver &D, StringRef Mcpu, StringRef &CPU,
|
||||||
if (!llvm::AArch64::getArchFeatures(ArchKind, Features))
|
if (!llvm::AArch64::getArchFeatures(ArchKind, Features))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned Extension = llvm::AArch64::getDefaultExtensions(CPU, ArchKind);
|
uint64_t Extension = llvm::AArch64::getDefaultExtensions(CPU, ArchKind);
|
||||||
if (!llvm::AArch64::getExtensionFeatures(Extension, Features))
|
if (!llvm::AArch64::getExtensionFeatures(Extension, Features))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,7 +104,7 @@ const ArchKind ArchKinds[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// FIXME: These should be moved to TargetTuple once it exists
|
// FIXME: These should be moved to TargetTuple once it exists
|
||||||
bool getExtensionFeatures(unsigned Extensions,
|
bool getExtensionFeatures(uint64_t Extensions,
|
||||||
std::vector<StringRef> &Features);
|
std::vector<StringRef> &Features);
|
||||||
bool getArchFeatures(ArchKind AK, std::vector<StringRef> &Features);
|
bool getArchFeatures(ArchKind AK, std::vector<StringRef> &Features);
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ StringRef getArchExtFeature(StringRef ArchExt);
|
||||||
|
|
||||||
// Information by Name
|
// Information by Name
|
||||||
unsigned getDefaultFPU(StringRef CPU, ArchKind AK);
|
unsigned getDefaultFPU(StringRef CPU, ArchKind AK);
|
||||||
unsigned getDefaultExtensions(StringRef CPU, ArchKind AK);
|
uint64_t getDefaultExtensions(StringRef CPU, ArchKind AK);
|
||||||
StringRef getDefaultCPU(StringRef Arch);
|
StringRef getDefaultCPU(StringRef Arch);
|
||||||
ArchKind getCPUArchKind(StringRef CPU);
|
ArchKind getCPUArchKind(StringRef CPU);
|
||||||
|
|
||||||
|
|
|
@ -35,11 +35,11 @@ unsigned AArch64::getDefaultFPU(StringRef CPU, AArch64::ArchKind AK) {
|
||||||
.Default(ARM::FK_INVALID);
|
.Default(ARM::FK_INVALID);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned AArch64::getDefaultExtensions(StringRef CPU, AArch64::ArchKind AK) {
|
uint64_t AArch64::getDefaultExtensions(StringRef CPU, AArch64::ArchKind AK) {
|
||||||
if (CPU == "generic")
|
if (CPU == "generic")
|
||||||
return AArch64ARCHNames[static_cast<unsigned>(AK)].ArchBaseExtensions;
|
return AArch64ARCHNames[static_cast<unsigned>(AK)].ArchBaseExtensions;
|
||||||
|
|
||||||
return StringSwitch<unsigned>(CPU)
|
return StringSwitch<uint64_t>(CPU)
|
||||||
#define AARCH64_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT) \
|
#define AARCH64_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT) \
|
||||||
.Case(NAME, AArch64ARCHNames[static_cast<unsigned>(ArchKind::ID)] \
|
.Case(NAME, AArch64ARCHNames[static_cast<unsigned>(ArchKind::ID)] \
|
||||||
.ArchBaseExtensions | \
|
.ArchBaseExtensions | \
|
||||||
|
@ -59,7 +59,7 @@ AArch64::ArchKind AArch64::getCPUArchKind(StringRef CPU) {
|
||||||
.Default(ArchKind::INVALID);
|
.Default(ArchKind::INVALID);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AArch64::getExtensionFeatures(unsigned Extensions,
|
bool AArch64::getExtensionFeatures(uint64_t Extensions,
|
||||||
std::vector<StringRef> &Features) {
|
std::vector<StringRef> &Features) {
|
||||||
if (Extensions == AArch64::AEK_INVALID)
|
if (Extensions == AArch64::AEK_INVALID)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -782,12 +782,12 @@ TEST(TargetParserTest, ARMparseArchVersion) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool testAArch64CPU(StringRef CPUName, StringRef ExpectedArch,
|
bool testAArch64CPU(StringRef CPUName, StringRef ExpectedArch,
|
||||||
StringRef ExpectedFPU, unsigned ExpectedFlags,
|
StringRef ExpectedFPU, uint64_t ExpectedFlags,
|
||||||
StringRef CPUAttr) {
|
StringRef CPUAttr) {
|
||||||
AArch64::ArchKind AK = AArch64::parseCPUArch(CPUName);
|
AArch64::ArchKind AK = AArch64::parseCPUArch(CPUName);
|
||||||
bool pass = AArch64::getArchName(AK).equals(ExpectedArch);
|
bool pass = AArch64::getArchName(AK).equals(ExpectedArch);
|
||||||
|
|
||||||
unsigned ExtKind = AArch64::getDefaultExtensions(CPUName, AK);
|
uint64_t ExtKind = AArch64::getDefaultExtensions(CPUName, AK);
|
||||||
if (ExtKind > 1 && (ExtKind & AArch64::AEK_NONE))
|
if (ExtKind > 1 && (ExtKind & AArch64::AEK_NONE))
|
||||||
pass &= ((ExtKind ^ AArch64::AEK_NONE) == ExpectedFlags);
|
pass &= ((ExtKind ^ AArch64::AEK_NONE) == ExpectedFlags);
|
||||||
else
|
else
|
||||||
|
@ -1201,7 +1201,7 @@ TEST(TargetParserTest, testAArch64Extension) {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(TargetParserTest, AArch64ExtensionFeatures) {
|
TEST(TargetParserTest, AArch64ExtensionFeatures) {
|
||||||
std::vector<unsigned> Extensions = {
|
std::vector<uint64_t> Extensions = {
|
||||||
AArch64::AEK_CRC, AArch64::AEK_CRYPTO,
|
AArch64::AEK_CRC, AArch64::AEK_CRYPTO,
|
||||||
AArch64::AEK_FP, AArch64::AEK_SIMD,
|
AArch64::AEK_FP, AArch64::AEK_SIMD,
|
||||||
AArch64::AEK_FP16, AArch64::AEK_PROFILE,
|
AArch64::AEK_FP16, AArch64::AEK_PROFILE,
|
||||||
|
@ -1214,7 +1214,7 @@ TEST(TargetParserTest, AArch64ExtensionFeatures) {
|
||||||
|
|
||||||
std::vector<StringRef> Features;
|
std::vector<StringRef> Features;
|
||||||
|
|
||||||
unsigned ExtVal = 0;
|
uint64_t ExtVal = 0;
|
||||||
for (auto Ext : Extensions)
|
for (auto Ext : Extensions)
|
||||||
ExtVal |= Ext;
|
ExtVal |= Ext;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue