svn commit: r352539 - in projects/clang900-import/contrib/llvm/tools/clang: include/clang/Driver lib/Basic/Targets lib/CodeGen
Dimitry Andric
dim at FreeBSD.org
Thu Sep 19 19:43:01 UTC 2019
Author: dim
Date: Thu Sep 19 19:42:59 2019
New Revision: 352539
URL: https://svnweb.freebsd.org/changeset/base/352539
Log:
Pull in r371066 from upstream clang trunk (by Justin Hibbits):
Add -m(no)-spe to clang
Summary:
r337347 added support for the Signal Processing Engine (SPE) to LLVM.
This follows that up with the clang side.
This adds -mspe and -mno-spe, to match GCC.
Subscribers: nemanjai, kbarton, cfe-commits
Differential Revision: https://reviews.llvm.org/D49754
Modified:
projects/clang900-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td
projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/PPC.cpp
projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/PPC.h
projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
Modified: projects/clang900-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td
==============================================================================
--- projects/clang900-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td Thu Sep 19 19:39:34 2019 (r352538)
+++ projects/clang900-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td Thu Sep 19 19:42:59 2019 (r352539)
@@ -2241,6 +2241,8 @@ def faltivec : Flag<["-"], "faltivec">, Group<f_Group>
def fno_altivec : Flag<["-"], "fno-altivec">, Group<f_Group>, Flags<[DriverOption]>;
def maltivec : Flag<["-"], "maltivec">, Group<m_ppc_Features_Group>;
def mno_altivec : Flag<["-"], "mno-altivec">, Group<m_ppc_Features_Group>;
+def mspe : Flag<["-"], "mspe">, Group<m_ppc_Features_Group>;
+def mno_spe : Flag<["-"], "mno-spe">, Group<m_ppc_Features_Group>;
def mvsx : Flag<["-"], "mvsx">, Group<m_ppc_Features_Group>;
def mno_vsx : Flag<["-"], "mno-vsx">, Group<m_ppc_Features_Group>;
def msecure_plt : Flag<["-"], "msecure-plt">, Group<m_ppc_Features_Group>;
Modified: projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/PPC.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/PPC.cpp Thu Sep 19 19:39:34 2019 (r352538)
+++ projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/PPC.cpp Thu Sep 19 19:42:59 2019 (r352539)
@@ -54,6 +54,10 @@ bool PPCTargetInfo::handleTargetFeatures(std::vector<s
HasFloat128 = true;
} else if (Feature == "+power9-vector") {
HasP9Vector = true;
+ } else if (Feature == "+spe") {
+ HasSPE = true;
+ LongDoubleWidth = LongDoubleAlign = 64;
+ LongDoubleFormat = &llvm::APFloat::IEEEdouble();
} else if (Feature == "-hard-float") {
FloatABI = SoftFloat;
}
@@ -165,6 +169,10 @@ void PPCTargetInfo::getTargetDefines(const LangOptions
Builder.defineMacro("__VEC__", "10206");
Builder.defineMacro("__ALTIVEC__");
}
+ if (HasSPE) {
+ Builder.defineMacro("__SPE__");
+ Builder.defineMacro("__NO_FPRS__");
+ }
if (HasVSX)
Builder.defineMacro("__VSX__");
if (HasP8Vector)
@@ -203,7 +211,6 @@ void PPCTargetInfo::getTargetDefines(const LangOptions
// __CMODEL_LARGE__
// _CALL_SYSV
// _CALL_DARWIN
- // __NO_FPRS__
}
// Handle explicit options being passed to the compiler here: if we've
@@ -332,6 +339,7 @@ bool PPCTargetInfo::hasFeature(StringRef Feature) cons
.Case("extdiv", HasExtDiv)
.Case("float128", HasFloat128)
.Case("power9-vector", HasP9Vector)
+ .Case("spe", HasSPE)
.Default(false);
}
Modified: projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/PPC.h
==============================================================================
--- projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/PPC.h Thu Sep 19 19:39:34 2019 (r352538)
+++ projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/PPC.h Thu Sep 19 19:42:59 2019 (r352539)
@@ -66,6 +66,7 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetInfo : public T
bool HasBPERMD = false;
bool HasExtDiv = false;
bool HasP9Vector = false;
+ bool HasSPE = false;
protected:
std::string ABI;
Modified: projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp Thu Sep 19 19:39:34 2019 (r352538)
+++ projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp Thu Sep 19 19:42:59 2019 (r352539)
@@ -9716,7 +9716,8 @@ const TargetCodeGenInfo &CodeGenModule::getTargetCodeG
case llvm::Triple::ppc:
return SetCGInfo(
- new PPC32TargetCodeGenInfo(Types, CodeGenOpts.FloatABI == "soft"));
+ new PPC32TargetCodeGenInfo(Types, CodeGenOpts.FloatABI == "soft" ||
+ getTarget().hasFeature("spe")));
case llvm::Triple::ppc64:
if (Triple.isOSBinFormatELF()) {
PPC64_SVR4_ABIInfo::ABIKind Kind = PPC64_SVR4_ABIInfo::ELFv1;
More information about the svn-src-projects
mailing list