diff options
author | Nemanja Ivanovic <nemanja.i.ibm@gmail.com> | 2015-03-04 21:48:22 +0000 |
---|---|---|
committer | Nemanja Ivanovic <nemanja.i.ibm@gmail.com> | 2015-03-04 21:48:22 +0000 |
commit | 55e757db4a53ff13195e97b271fff691a43b1ddc (patch) | |
tree | c64b4d56e226c7db220ac4da81c12caff6767609 /clang/lib/Basic/Targets.cpp | |
parent | 77a4da19914c84e07a82dc22bbbf28540f90ca31 (diff) | |
download | bcm5719-llvm-55e757db4a53ff13195e97b271fff691a43b1ddc.tar.gz bcm5719-llvm-55e757db4a53ff13195e97b271fff691a43b1ddc.zip |
Add Clang support for PPC cryptography builtins
Review: http://reviews.llvm.org/D7951
llvm-svn: 231291
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 1d820d36a9a..56b884d4ae6 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -719,13 +719,15 @@ class PPCTargetInfo : public TargetInfo { // Target cpu features. bool HasVSX; bool HasP8Vector; + bool HasP8Crypto; protected: std::string ABI; public: PPCTargetInfo(const llvm::Triple &Triple) - : TargetInfo(Triple), HasVSX(false), HasP8Vector(false) { + : TargetInfo(Triple), HasVSX(false), HasP8Vector(false), + HasP8Crypto(false) { BigEndian = (Triple.getArch() != llvm::Triple::ppc64le); LongDoubleWidth = LongDoubleAlign = 128; LongDoubleFormat = &llvm::APFloat::PPCDoubleDouble; @@ -986,6 +988,11 @@ bool PPCTargetInfo::handleTargetFeatures(std::vector<std::string> &Features, continue; } + if (Feature == "crypto") { + HasP8Crypto = true; + continue; + } + // TODO: Finish this list and add an assert that we've handled them // all. } @@ -1138,6 +1145,8 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__VSX__"); if (HasP8Vector) Builder.defineMacro("__POWER8_VECTOR__"); + if (HasP8Crypto) + Builder.defineMacro("__CRYPTO__"); // FIXME: The following are not yet generated here by Clang, but are // generated by GCC: @@ -1176,6 +1185,14 @@ void PPCTargetInfo::getDefaultFeatures(llvm::StringMap<bool> &Features) const { .Default(false); Features["qpx"] = (CPU == "a2q"); + Features["crypto"] = llvm::StringSwitch<bool>(CPU) + .Case("ppc64le", true) + .Case("pwr8", true) + .Default(false); + Features["power8-vector"] = llvm::StringSwitch<bool>(CPU) + .Case("ppc64le", true) + .Case("pwr8", true) + .Default(false); } bool PPCTargetInfo::hasFeature(StringRef Feature) const { @@ -1183,6 +1200,7 @@ bool PPCTargetInfo::hasFeature(StringRef Feature) const { .Case("powerpc", true) .Case("vsx", HasVSX) .Case("power8-vector", HasP8Vector) + .Case("crypto", HasP8Crypto) .Default(false); } |