summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic
diff options
context:
space:
mode:
authorRobert Khasanov <rob.khasanov@gmail.com>2014-09-19 09:53:48 +0000
committerRobert Khasanov <rob.khasanov@gmail.com>2014-09-19 09:53:48 +0000
commit50e6f58b4f7650f9350e2ad6daab535c503d356a (patch)
tree25c8fa660f1e378dc6046891ba1acb472e4bc396 /clang/lib/Basic
parent8a6536d4b27e125f6a9bcd9e574b7fca9c2cbde9 (diff)
downloadbcm5719-llvm-50e6f58b4f7650f9350e2ad6daab535c503d356a.tar.gz
bcm5719-llvm-50e6f58b4f7650f9350e2ad6daab535c503d356a.zip
[x86] Enable broadwell target in clang.
Added -madx option llvm-svn: 218116
Diffstat (limited to 'clang/lib/Basic')
-rw-r--r--clang/lib/Basic/Targets.cpp42
1 files changed, 37 insertions, 5 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index b4b8ec007db..7ccd646a238 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -1696,6 +1696,7 @@ class X86TargetInfo : public TargetInfo {
bool HasRTM;
bool HasPRFCHW;
bool HasRDSEED;
+ bool HasADX;
bool HasTBM;
bool HasFMA;
bool HasF16C;
@@ -1785,6 +1786,7 @@ class X86TargetInfo : public TargetInfo {
CK_Corei7AVX,
CK_CoreAVXi,
CK_CoreAVX2,
+ CK_Broadwell,
//@}
/// \name Knights Landing
@@ -1866,11 +1868,11 @@ public:
: TargetInfo(Triple), SSELevel(NoSSE), MMX3DNowLevel(NoMMX3DNow),
XOPLevel(NoXOP), HasAES(false), HasPCLMUL(false), HasLZCNT(false),
HasRDRND(false), HasBMI(false), HasBMI2(false), HasPOPCNT(false),
- HasRTM(false), HasPRFCHW(false), HasRDSEED(false), HasTBM(false),
- HasFMA(false), HasF16C(false), HasAVX512CD(false), HasAVX512ER(false),
- HasAVX512PF(false), HasAVX512DQ(false), HasAVX512BW(false), HasAVX512VL(false),
- HasSHA(false), HasCX16(false), CPU(CK_Generic),
- FPMath(FP_Default) {
+ HasRTM(false), HasPRFCHW(false), HasRDSEED(false), HasADX(false),
+ HasTBM(false), HasFMA(false), HasF16C(false), HasAVX512CD(false),
+ HasAVX512ER(false), HasAVX512PF(false), HasAVX512DQ(false),
+ HasAVX512BW(false), HasAVX512VL(false), HasSHA(false), HasCX16(false),
+ CPU(CK_Generic), FPMath(FP_Default) {
BigEndian = false;
LongDoubleFormat = &llvm::APFloat::x87DoubleExtended;
}
@@ -1969,6 +1971,7 @@ public:
.Case("corei7-avx", CK_Corei7AVX)
.Case("core-avx-i", CK_CoreAVXi)
.Case("core-avx2", CK_CoreAVX2)
+ .Case("broadwell", CK_Broadwell)
.Case("knl", CK_KNL)
.Case("skx", CK_SKX)
.Case("k6", CK_K6)
@@ -2048,6 +2051,7 @@ public:
case CK_Corei7AVX:
case CK_CoreAVXi:
case CK_CoreAVX2:
+ case CK_Broadwell:
case CK_KNL:
case CK_SKX:
case CK_Athlon64:
@@ -2183,6 +2187,21 @@ void X86TargetInfo::getDefaultFeatures(llvm::StringMap<bool> &Features) const {
setFeatureEnabledImpl(Features, "fma", true);
setFeatureEnabledImpl(Features, "cx16", true);
break;
+ case CK_Broadwell:
+ setFeatureEnabledImpl(Features, "avx2", true);
+ setFeatureEnabledImpl(Features, "aes", true);
+ setFeatureEnabledImpl(Features, "pclmul", true);
+ setFeatureEnabledImpl(Features, "lzcnt", true);
+ setFeatureEnabledImpl(Features, "rdrnd", true);
+ setFeatureEnabledImpl(Features, "f16c", true);
+ setFeatureEnabledImpl(Features, "bmi", true);
+ setFeatureEnabledImpl(Features, "bmi2", true);
+ setFeatureEnabledImpl(Features, "rtm", true);
+ setFeatureEnabledImpl(Features, "fma", true);
+ setFeatureEnabledImpl(Features, "cx16", true);
+ setFeatureEnabledImpl(Features, "rdseed", true);
+ setFeatureEnabledImpl(Features, "adx", true);
+ break;
case CK_KNL:
setFeatureEnabledImpl(Features, "avx512f", true);
setFeatureEnabledImpl(Features, "avx512cd", true);
@@ -2197,6 +2216,8 @@ void X86TargetInfo::getDefaultFeatures(llvm::StringMap<bool> &Features) const {
setFeatureEnabledImpl(Features, "bmi2", true);
setFeatureEnabledImpl(Features, "rtm", true);
setFeatureEnabledImpl(Features, "fma", true);
+ setFeatureEnabledImpl(Features, "rdseed", true);
+ setFeatureEnabledImpl(Features, "adx", true);
break;
case CK_SKX:
setFeatureEnabledImpl(Features, "avx512f", true);
@@ -2213,6 +2234,8 @@ void X86TargetInfo::getDefaultFeatures(llvm::StringMap<bool> &Features) const {
setFeatureEnabledImpl(Features, "bmi2", true);
setFeatureEnabledImpl(Features, "rtm", true);
setFeatureEnabledImpl(Features, "fma", true);
+ setFeatureEnabledImpl(Features, "rdseed", true);
+ setFeatureEnabledImpl(Features, "adx", true);
break;
case CK_K6:
case CK_WinChipC6:
@@ -2539,6 +2562,11 @@ bool X86TargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
continue;
}
+ if (Feature == "adx") {
+ HasADX = true;
+ continue;
+ }
+
if (Feature == "tbm") {
HasTBM = true;
continue;
@@ -2749,6 +2777,7 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts,
case CK_Corei7AVX:
case CK_CoreAVXi:
case CK_CoreAVX2:
+ case CK_Broadwell:
defineCPUMacros(Builder, "corei7");
break;
case CK_KNL:
@@ -2858,6 +2887,9 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts,
if (HasRDSEED)
Builder.defineMacro("__RDSEED__");
+ if (HasADX)
+ Builder.defineMacro("__ADX__");
+
if (HasTBM)
Builder.defineMacro("__TBM__");
OpenPOWER on IntegriCloud