From d965553905ce6dbc4e0b69eaa2eb0dabc1a8258c Mon Sep 17 00:00:00 2001 From: Renato Golin Date: Wed, 27 May 2015 14:15:12 +0000 Subject: [PATCH] ARMTargetParser FIXME getCPUProfile A/R/M This is the last of the easy ones. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@238324 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/Targets.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index ce3bd48118..a768081e70 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -4346,16 +4346,21 @@ public: } } - // FIXME: Use ARMTargetParser - return llvm::StringSwitch(Name) - .Cases("cortex-a5", "cortex-a7", "cortex-a8", "A") - .Cases("cortex-a9", "cortex-a12", "cortex-a15", "cortex-a17", "krait", - "A") - .Cases("cortex-a53", "cortex-a57", "cortex-a72", "A") - .Cases("cortex-m3", "cortex-m4", "cortex-m0", "cortex-m0plus", "M") - .Cases("cortex-m1", "cortex-m7", "sc000", "sc300", "M") - .Cases("cortex-r4", "cortex-r4f", "cortex-r5", "cortex-r7", "R") - .Default(""); + unsigned CPUArch = llvm::ARMTargetParser::parseCPUArch(Name); + if (CPUArch == llvm::ARM::AK_INVALID) + return ""; + + StringRef ArchName = llvm::ARMTargetParser::getArchName(CPUArch); + switch(llvm::ARMTargetParser::parseArchProfile(ArchName)) { + case llvm::ARM::PK_A: + return "A"; + case llvm::ARM::PK_R: + return "R"; + case llvm::ARM::PK_M: + return "M"; + default: + return ""; + } } bool setCPU(const std::string &Name) override { if (!getCPUDefineSuffix(Name)) -- 2.50.1