summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-01-20 18:36:52 +0000
committerCraig Topper <craig.topper@intel.com>2018-01-20 18:36:52 +0000
commit8cdb94901dc7a9c1fcb7732a80883c1f1876e58a (patch)
tree0c54a990e1629fc0be8fdff7a04f699fda57feb2 /clang/lib/Basic
parent035bf77426056665a17c1024560fbeb8d541cd73 (diff)
downloadbcm5719-llvm-8cdb94901dc7a9c1fcb7732a80883c1f1876e58a.tar.gz
bcm5719-llvm-8cdb94901dc7a9c1fcb7732a80883c1f1876e58a.zip
[X86] Add rdpid command line option and intrinsics.
Summary: This patch adds -mrdpid/-mno-rdpid and the rdpid intrinsic. The corresponding LLVM commit has already been made. Reviewers: RKSimon, spatel, zvi, AndreiGrischenko Reviewed By: RKSimon Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D42272 llvm-svn: 323047
Diffstat (limited to 'clang/lib/Basic')
-rw-r--r--clang/lib/Basic/Targets/X86.cpp7
-rw-r--r--clang/lib/Basic/Targets/X86.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp
index ca4a6b97b3a..ddc02322305 100644
--- a/clang/lib/Basic/Targets/X86.cpp
+++ b/clang/lib/Basic/Targets/X86.cpp
@@ -160,6 +160,7 @@ bool X86TargetInfo::initFeatureMap(
setFeatureEnabledImpl(Features, "avx512vnni", true);
setFeatureEnabledImpl(Features, "avx512vbmi2", true);
setFeatureEnabledImpl(Features, "avx512vpopcntdq", true);
+ setFeatureEnabledImpl(Features, "rdpid", true);
LLVM_FALLTHROUGH;
case CK_Cannonlake:
setFeatureEnabledImpl(Features, "avx512ifma", true);
@@ -784,6 +785,8 @@ bool X86TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
HasPREFETCHWT1 = true;
} else if (Feature == "+clzero") {
HasCLZERO = true;
+ } else if (Feature == "+rdpid") {
+ HasRDPID = true;
}
X86SSEEnum Level = llvm::StringSwitch<X86SSEEnum>(Feature)
@@ -1123,6 +1126,8 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts,
Builder.defineMacro("__PREFETCHWT1__");
if (HasCLZERO)
Builder.defineMacro("__CLZERO__");
+ if (HasRDPID)
+ Builder.defineMacro("__RDPID__");
// Each case falls through to the previous one here.
switch (SSELevel) {
@@ -1253,6 +1258,7 @@ bool X86TargetInfo::isValidFeatureName(StringRef Name) const {
.Case("popcnt", true)
.Case("prefetchwt1", true)
.Case("prfchw", true)
+ .Case("rdpid", true)
.Case("rdrnd", true)
.Case("rdseed", true)
.Case("rtm", true)
@@ -1324,6 +1330,7 @@ bool X86TargetInfo::hasFeature(StringRef Feature) const {
.Case("popcnt", HasPOPCNT)
.Case("prefetchwt1", HasPREFETCHWT1)
.Case("prfchw", HasPRFCHW)
+ .Case("rdpid", HasRDPID)
.Case("rdrnd", HasRDRND)
.Case("rdseed", HasRDSEED)
.Case("rtm", HasRTM)
diff --git a/clang/lib/Basic/Targets/X86.h b/clang/lib/Basic/Targets/X86.h
index 290d3db3504..db98619cdb9 100644
--- a/clang/lib/Basic/Targets/X86.h
+++ b/clang/lib/Basic/Targets/X86.h
@@ -96,6 +96,7 @@ class LLVM_LIBRARY_VISIBILITY X86TargetInfo : public TargetInfo {
bool HasCLWB = false;
bool HasMOVBE = false;
bool HasPREFETCHWT1 = false;
+ bool HasRDPID = false;
/// \brief Enumeration of all of the X86 CPUs supported by Clang.
///
OpenPOWER on IntegriCloud