summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorSergey Dmitrouk <sdmitrouk@accesssoftek.com>2014-11-25 08:57:36 +0000
committerSergey Dmitrouk <sdmitrouk@accesssoftek.com>2014-11-25 08:57:36 +0000
commit745f530446088e87ae2e1d8dd40841e15bd59b9f (patch)
tree8700570c1bdf215a645f635e305c61caa20abc92 /clang/lib/Basic/Targets.cpp
parent99c9c1f2b037a132130faec85f010fff93a5c8bf (diff)
downloadbcm5719-llvm-745f530446088e87ae2e1d8dd40841e15bd59b9f.tar.gz
bcm5719-llvm-745f530446088e87ae2e1d8dd40841e15bd59b9f.zip
[ARM] Define __ARM_FEATURE_DSP macro for CPUs that have DSP instructions
Summary: This resolves [[ http://llvm.org/bugs/show_bug.cgi?id=17391 | PR17391 ]]. GCC's sources were used as a guide (couldn't find much information in ARM documentation). Reviewers: doug.gregor, asl Reviewed By: asl Subscribers: asl, aemerson, cfe-commits Differential Revision: http://reviews.llvm.org/D6339 llvm-svn: 222741
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 0db59af7f90..f83eea5de0e 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -4156,6 +4156,13 @@ public:
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
}
+
+ bool is5EOrAbove = (CPUArchVer >= 6 ||
+ (CPUArchVer == 5 &&
+ CPUArch.find('E') != StringRef::npos));
+ bool is32Bit = (!IsThumb || supportsThumb2(ArchName, CPUArch, CPUArchVer));
+ if (is5EOrAbove && is32Bit && (CPUProfile != "M" || CPUArch == "7EM"))
+ Builder.defineMacro("__ARM_FEATURE_DSP");
}
void getTargetBuiltins(const Builtin::Info *&Records,
unsigned &NumRecords) const override {
OpenPOWER on IntegriCloud