[ARMTargetParser] Removing string parsing from getCPUDefineSuffix. NFC.

Yet another FIXME from ARMTargetParser.

llvm-svn: 238416
This commit is contained in:
Renato Golin 2015-05-28 12:11:11 +00:00
parent 7374fcdb38
commit 391544c431
1 changed files with 26 additions and 30 deletions

View File

@ -4297,9 +4297,7 @@ public:
.Case("hwdiv-arm", HWDiv & HWDivARM) .Case("hwdiv-arm", HWDiv & HWDivARM)
.Default(false); .Default(false);
} }
// FIXME: Should we actually have some table instead of these switches?
const char *getCPUDefineSuffix(StringRef Name) const { const char *getCPUDefineSuffix(StringRef Name) const {
// FIXME: Use ARMTargetParser
if(Name == "generic") { if(Name == "generic") {
auto subarch = getTriple().getSubArch(); auto subarch = getTriple().getSubArch();
switch (subarch) { switch (subarch) {
@ -4310,34 +4308,32 @@ public:
} }
} }
return llvm::StringSwitch<const char *>(Name) unsigned ArchKind = llvm::ARMTargetParser::parseCPUArch(Name);
.Cases("arm8", "arm810", "4") if (ArchKind == llvm::ARM::AK_INVALID)
.Cases("strongarm", "strongarm110", "strongarm1100", "strongarm1110", return "";
"4")
.Cases("arm7tdmi", "arm7tdmi-s", "arm710t", "arm720t", "arm9", "4T") // For most sub-arches, the build attribute CPU name is enough.
.Cases("arm9tdmi", "arm920", "arm920t", "arm922t", "arm940t", "4T") // For Cortex variants, it's slightly different.
.Case("ep9312", "4T") switch(ArchKind) {
.Cases("arm10tdmi", "arm1020t", "5T") default:
.Cases("arm9e", "arm946e-s", "arm966e-s", "arm968e-s", "5TE") return llvm::ARMTargetParser::getCPUAttr(ArchKind);
.Case("arm926ej-s", "5TEJ") case llvm::ARM::AK_ARMV6M:
.Cases("arm10e", "arm1020e", "arm1022e", "5TE") case llvm::ARM::AK_ARMV6SM:
.Cases("xscale", "iwmmxt", "5TE") return "6M";
.Case("arm1136j-s", "6J") case llvm::ARM::AK_ARMV7:
.Case("arm1136jf-s", "6") case llvm::ARM::AK_ARMV7A:
.Cases("mpcorenovfp", "mpcore", "6K") return "7A";
.Cases("arm1176jz-s", "arm1176jzf-s", "6K") case llvm::ARM::AK_ARMV7R:
.Cases("arm1156t2-s", "arm1156t2f-s", "6T2") return "7R";
.Cases("cortex-a5", "cortex-a7", "cortex-a8", "7A") case llvm::ARM::AK_ARMV7M:
.Cases("cortex-a9", "cortex-a12", "cortex-a15", "cortex-a17", "krait", return "7M";
"7A") case llvm::ARM::AK_ARMV7EM:
.Cases("cortex-r4", "cortex-r4f", "cortex-r5", "cortex-r7", "7R") return "7EM";
.Case("swift", "7S") case llvm::ARM::AK_ARMV8A:
.Case("cyclone", "8A") return "8A";
.Cases("sc300", "cortex-m3", "7M") case llvm::ARM::AK_ARMV8_1A:
.Cases("cortex-m4", "cortex-m7", "7EM") return "8_1A";
.Cases("sc000", "cortex-m0", "cortex-m0plus", "cortex-m1", "6M") }
.Cases("cortex-a53", "cortex-a57", "cortex-a72", "8A")
.Default(nullptr);
} }
const char *getCPUProfile(StringRef Name) const { const char *getCPUProfile(StringRef Name) const {
if(Name == "generic") { if(Name == "generic") {