diff options
author | Nemanja Ivanovic <nemanja.i.ibm@gmail.com> | 2015-04-11 10:43:36 +0000 |
---|---|---|
committer | Nemanja Ivanovic <nemanja.i.ibm@gmail.com> | 2015-04-11 10:43:36 +0000 |
commit | 35458c2fe9e700d9d548617a3c2a53b814cc39c6 (patch) | |
tree | 5748d7be597cae7ee85f88c364f3948eb7401768 /clang/lib/Basic/Targets.cpp | |
parent | c38b5311cbfa97b92ec9bd0936e99b85af46b95f (diff) | |
download | bcm5719-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.cpp | 13 |
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) |