diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-05-29 17:48:39 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-05-29 17:48:39 +0000 |
commit | 8ac9c2239113383be89bbdb8f750418d969d48dc (patch) | |
tree | ca7219cf0279e40f24e6388f218f7b805154b698 /clang/lib/Basic/Targets.cpp | |
parent | 64fe1c559e6c287830b88681119d11ddddab020e (diff) | |
download | bcm5719-llvm-8ac9c2239113383be89bbdb8f750418d969d48dc.tar.gz bcm5719-llvm-8ac9c2239113383be89bbdb8f750418d969d48dc.zip |
Define __SSE4A__ when targeting new AMD CPUs.
This doesn't really fit the existing SSELevel so it gets an extra flag.
llvm-svn: 157630
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index e5cbc3c0f4e..21992363da0 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -1242,6 +1242,7 @@ class X86TargetInfo : public TargetInfo { bool HasBMI; bool HasBMI2; bool HasPOPCNT; + bool HasSSE4a; bool HasFMA4; /// \brief Enumeration of all of the X86 CPUs supported by Clang. @@ -1388,7 +1389,7 @@ public: X86TargetInfo(const std::string& triple) : TargetInfo(triple), SSELevel(NoSSE), MMX3DNowLevel(NoMMX3DNow), HasAES(false), HasLZCNT(false), HasBMI(false), HasBMI2(false), - HasPOPCNT(false), HasFMA4(false), CPU(CK_Generic) { + HasPOPCNT(false), HasSSE4a(false), HasFMA4(false), CPU(CK_Generic) { BigEndian = false; LongDoubleFormat = &llvm::APFloat::x87DoubleExtended; } @@ -1843,6 +1844,11 @@ void X86TargetInfo::HandleTargetFeatures(std::vector<std::string> &Features) { continue; } + if (Feature == "sse4a") { + HasSSE4a = true; + continue; + } + if (Feature == "fma4") { HasFMA4 = true; continue; @@ -2042,6 +2048,9 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts, if (HasPOPCNT) Builder.defineMacro("__POPCNT__"); + if (HasSSE4a) + Builder.defineMacro("__SSE4A__"); + if (HasFMA4) Builder.defineMacro("__FMA4__"); @@ -2108,6 +2117,7 @@ bool X86TargetInfo::hasFeature(StringRef Feature) const { .Case("avx2", SSELevel >= AVX2) .Case("bmi", HasBMI) .Case("bmi2", HasBMI2) + .Case("sse4a", HasSSE4a) .Case("fma4", HasFMA4) .Case("lzcnt", HasLZCNT) .Case("mm3dnow", MMX3DNowLevel >= AMD3DNow) |