summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorNemanja Ivanovic <nemanja.i.ibm@gmail.com>2015-04-11 10:43:36 +0000
committerNemanja Ivanovic <nemanja.i.ibm@gmail.com>2015-04-11 10:43:36 +0000
commit35458c2fe9e700d9d548617a3c2a53b814cc39c6 (patch)
tree5748d7be597cae7ee85f88c364f3948eb7401768 /clang/lib/Basic/Targets.cpp
parentc38b5311cbfa97b92ec9bd0936e99b85af46b95f (diff)
downloadbcm5719-llvm-35458c2fe9e700d9d548617a3c2a53b814cc39c6.tar.gz
bcm5719-llvm-35458c2fe9e700d9d548617a3c2a53b814cc39c6.zip
Add Clang support for -mdirect-move on PPC
This patch corresponds to review: http://reviews.llvm.org/D8930 This just adds a front end option to let the back end know the target has PPC direct move instructions. llvm-svn: 234683
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 082520583cc..9cd061aacff 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -743,6 +743,7 @@ class PPCTargetInfo : public TargetInfo {
bool HasVSX;
bool HasP8Vector;
bool HasP8Crypto;
+ bool HasDirectMove;
bool HasQPX;
bool HasHTM;
bool HasBPERMD;
@@ -754,7 +755,7 @@ protected:
public:
PPCTargetInfo(const llvm::Triple &Triple)
: TargetInfo(Triple), HasVSX(false), HasP8Vector(false),
- HasP8Crypto(false), HasQPX(false), HasHTM(false),
+ HasP8Crypto(false), HasDirectMove(false), HasQPX(false), HasHTM(false),
HasBPERMD(false), HasExtDiv(false) {
BigEndian = (Triple.getArch() != llvm::Triple::ppc64le);
LongDoubleWidth = LongDoubleAlign = 128;
@@ -1035,6 +1036,11 @@ bool PPCTargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
continue;
}
+ if (Feature == "direct-move") {
+ HasDirectMove = true;
+ continue;
+ }
+
if (Feature == "qpx") {
HasQPX = true;
continue;
@@ -1257,6 +1263,10 @@ void PPCTargetInfo::getDefaultFeatures(llvm::StringMap<bool> &Features) const {
.Case("pwr8", true)
.Case("pwr7", true)
.Default(false);
+ Features["direct-move"] = llvm::StringSwitch<bool>(CPU)
+ .Case("ppc64le", true)
+ .Case("pwr8", true)
+ .Default(false);
}
bool PPCTargetInfo::hasFeature(StringRef Feature) const {
@@ -1265,6 +1275,7 @@ bool PPCTargetInfo::hasFeature(StringRef Feature) const {
.Case("vsx", HasVSX)
.Case("power8-vector", HasP8Vector)
.Case("crypto", HasP8Crypto)
+ .Case("direct-move", HasDirectMove)
.Case("qpx", HasQPX)
.Case("htm", HasHTM)
.Case("bpermd", HasBPERMD)
OpenPOWER on IntegriCloud