Skip to content

Commit 94a940d

Browse files
committedFeb 21, 2018
[X86] Disable CLWB in Cannon Lake
Cannon Lake does not support CLWB, therefore it does not include all features listed under SKX. Patch by Gabor Buella Differential Revision: https://reviews.llvm.org/D43459 llvm-svn: 325655
1 parent d710ada commit 94a940d

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed
 

‎clang/lib/Basic/Targets/X86.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ bool X86TargetInfo::initFeatureMap(
175175
setFeatureEnabledImpl(Features, "avx512bw", true);
176176
setFeatureEnabledImpl(Features, "avx512vl", true);
177177
setFeatureEnabledImpl(Features, "pku", true);
178-
setFeatureEnabledImpl(Features, "clwb", true);
178+
if (Kind != CK_Cannonlake) // CNL inherits all SKX features, except CLWB
179+
setFeatureEnabledImpl(Features, "clwb", true);
179180
LLVM_FALLTHROUGH;
180181
case CK_SkylakeClient:
181182
setFeatureEnabledImpl(Features, "xsavec", true);

‎clang/test/Preprocessor/predefined-arch-macros.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,7 @@
974974
// CHECK_CNL_M32: #define __BMI2__ 1
975975
// CHECK_CNL_M32: #define __BMI__ 1
976976
// CHECK_CNL_M32: #define __CLFLUSHOPT__ 1
977-
// CHECK_CNL_M32: #define __CLWB__ 1
977+
// CHECK_CNL_M32-NOT: #define __CLWB__ 1
978978
// CHECK_CNL_M32: #define __F16C__ 1
979979
// CHECK_CNL_M32: #define __FMA__ 1
980980
// CHECK_CNL_M32: #define __LZCNT__ 1
@@ -1022,7 +1022,7 @@
10221022
// CHECK_CNL_M64: #define __BMI2__ 1
10231023
// CHECK_CNL_M64: #define __BMI__ 1
10241024
// CHECK_CNL_M64: #define __CLFLUSHOPT__ 1
1025-
// CHECK_CNL_M64: #define __CLWB__ 1
1025+
// CHECK_CNL_M64-NOT: #define __CLWB__ 1
10261026
// CHECK_CNL_M64: #define __F16C__ 1
10271027
// CHECK_CNL_M64: #define __FMA__ 1
10281028
// CHECK_CNL_M64: #define __LZCNT__ 1

0 commit comments

Comments
 (0)