X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FSupport%2FTargetParser.cpp;fp=lib%2FSupport%2FTargetParser.cpp;h=4dbc44690aebd8fc93d918885ef9ddb0cbaa85d1;hb=870fdb54c3aebe7ba21894814cb27dccba19c837;hp=7a2d177a562fd41d9c399201c730ae622a9134a8;hpb=7c1b77248baaeafec5d6433c3d1da9a2e2b69595;p=oota-llvm.git diff --git a/lib/Support/TargetParser.cpp b/lib/Support/TargetParser.cpp index 7a2d177a562..4dbc44690ae 100644 --- a/lib/Support/TargetParser.cpp +++ b/lib/Support/TargetParser.cpp @@ -59,6 +59,7 @@ struct { const char *SubArchCStr; size_t SubArchLength; ARMBuildAttrs::CPUArch ArchAttr; // Arch ID in build attributes. + unsigned DefaultFPU; unsigned ArchBaseExtensions; StringRef getName() const { return StringRef(NameCStr, NameLength); } @@ -69,9 +70,9 @@ struct { // Sub-Arch name. StringRef getSubArch() const { return StringRef(SubArchCStr, SubArchLength); } } ARCHNames[] = { -#define ARM_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_BASE_EXT) \ +#define ARM_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT) \ {NAME, sizeof(NAME) - 1, ID, CPU_ATTR, sizeof(CPU_ATTR) - 1, SUB_ARCH, \ - sizeof(SUB_ARCH) - 1, ARCH_ATTR, ARCH_BASE_EXT}, + sizeof(SUB_ARCH) - 1, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT}, #include "llvm/Support/ARMTargetParser.def" }; @@ -151,7 +152,10 @@ unsigned llvm::ARM::getFPURestriction(unsigned FPUKind) { return FPUNames[FPUKind].Restriction; } -unsigned llvm::ARM::getDefaultFPU(StringRef CPU) { +unsigned llvm::ARM::getDefaultFPU(StringRef CPU, unsigned ArchKind) { + if (CPU == "generic") + return ARCHNames[ArchKind].DefaultFPU; + return StringSwitch(CPU) #define ARM_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT) \ .Case(NAME, DEFAULT_FPU) @@ -319,7 +323,10 @@ StringRef llvm::ARM::getHWDivName(unsigned HWDivKind) { return StringRef(); } -unsigned llvm::ARM::getDefaultExtensions(StringRef CPU) { +unsigned llvm::ARM::getDefaultExtensions(StringRef CPU, unsigned ArchKind) { + if (CPU == "generic") + return ARCHNames[ArchKind].ArchBaseExtensions; + for (const auto C : CPUNames) { if (CPU == C.getName()) return (ARCHNames[C.ArchID].ArchBaseExtensions | C.DefaultExtensions); @@ -337,7 +344,9 @@ StringRef llvm::ARM::getDefaultCPU(StringRef Arch) { if (CPU.ArchID == AK && CPU.Default) return CPU.getName(); } - return StringRef(); + + // If we can't find a default then target the architecture instead + return "generic"; } // ======================================================= //