diff options
author | Alexandros Lamprineas <alexandros.lamprineas@arm.com> | 2015-09-06 16:15:45 +0000 |
---|---|---|
committer | Alexandros Lamprineas <alexandros.lamprineas@arm.com> | 2015-09-06 16:15:45 +0000 |
commit | 94d75dba14858c4ee47dd32fbf1a7fe19841666e (patch) | |
tree | bd08cf786b96a6f13d90758c3101065ec8dd5209 /clang/lib/Basic/Targets.cpp | |
parent | 8391ac7001053dd7d99e7b0d3bf57c8accb0c8b3 (diff) | |
download | bcm5719-llvm-94d75dba14858c4ee47dd32fbf1a7fe19841666e.tar.gz bcm5719-llvm-94d75dba14858c4ee47dd32fbf1a7fe19841666e.zip |
Refactoring of how ARMTargetInfo handles default target features.
Differential Revision: http://reviews.llvm.org/D11299
llvm-svn: 246946
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 45 |
1 files changed, 14 insertions, 31 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index ddde0a48f4a..b9a74ac8fb0 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -4442,37 +4442,20 @@ public: bool initFeatureMap(llvm::StringMap<bool> &Features, DiagnosticsEngine &Diags, StringRef CPU, std::vector<std::string> &FeaturesVec) const override { - if (CPU == "arm1136jf-s" || CPU == "arm1176jzf-s" || CPU == "mpcore") - Features["vfp2"] = true; - else if (CPU == "cortex-a8" || CPU == "cortex-a9") { - Features["vfp3"] = true; - Features["neon"] = true; - } - else if (CPU == "cortex-a5") { - Features["vfp4"] = true; - Features["neon"] = true; - } else if (CPU == "swift" || CPU == "cortex-a7" || - CPU == "cortex-a12" || CPU == "cortex-a15" || - CPU == "cortex-a17" || CPU == "krait") { - Features["vfp4"] = true; - Features["neon"] = true; - Features["hwdiv"] = true; - Features["hwdiv-arm"] = true; - } else if (CPU == "cyclone" || CPU == "cortex-a53" || CPU == "cortex-a57" || - CPU == "cortex-a72") { - Features["fp-armv8"] = true; - Features["neon"] = true; - Features["hwdiv"] = true; - Features["hwdiv-arm"] = true; - Features["crc"] = true; - Features["crypto"] = true; - } else if (CPU == "cortex-r5" || CPU == "cortex-r7" || ArchVersion == 8) { - Features["hwdiv"] = true; - Features["hwdiv-arm"] = true; - } else if (CPU == "cortex-m3" || CPU == "cortex-m4" || CPU == "cortex-m7" || - CPU == "sc300" || CPU == "cortex-r4" || CPU == "cortex-r4f") { - Features["hwdiv"] = true; - } + + std::vector<const char*> TargetFeatures; + + // get default FPU features + unsigned FPUKind = llvm::ARM::getDefaultFPU(CPU); + llvm::ARM::getFPUFeatures(FPUKind, TargetFeatures); + + // get default Extension features + unsigned Extensions = llvm::ARM::getDefaultExtensions(CPU); + llvm::ARM::getExtensionFeatures(Extensions, TargetFeatures); + + for (const char *Feature : TargetFeatures) + if (Feature[0] == '+') + Features[Feature+1] = true; if (ArchVersion < 6 || (ArchVersion == 6 && ArchProfile == llvm::ARM::PK_M)) |