]> granicus.if.org Git - clang/commitdiff
[X86] Add -mclwb/-mno-clwb command line arguments and __CLWB__ define to match gcc.
authorCraig Topper <craig.topper@gmail.com>
Wed, 8 Feb 2017 07:36:58 +0000 (07:36 +0000)
committerCraig Topper <craig.topper@gmail.com>
Wed, 8 Feb 2017 07:36:58 +0000 (07:36 +0000)
In the future, we should also add a clwb intrinsic to the backend, a frontend builtin, and an instrinsic header file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@294416 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Options.td
lib/Basic/Targets.cpp
test/Driver/x86-target-features.c
test/Preprocessor/predefined-arch-macros.c

index 76b8d0de292eba9834c5e98e93c0cd51d6a7cc3d..3ac9283305e90bc3b2eb316ca9c956b9febd93d1 100644 (file)
@@ -1716,6 +1716,7 @@ def mno_xsaves : Flag<["-"], "mno-xsaves">, Group<m_x86_Features_Group>;
 def mno_mwaitx : Flag<["-"], "mno-mwaitx">, Group<m_x86_Features_Group>;
 def mno_pku : Flag<["-"], "mno-pku">, Group<m_x86_Features_Group>;
 def mno_clflushopt : Flag<["-"], "mno-clflushopt">, Group<m_x86_Features_Group>;
+def mno_clwb : Flag<["-"], "mno-clwb">, Group<m_x86_Features_Group>;
 def mno_movbe : Flag<["-"], "mno-movbe">, Group<m_x86_Features_Group>;
 
 def munaligned_access : Flag<["-"], "munaligned-access">, Group<m_arm_Features_Group>,
@@ -1910,6 +1911,7 @@ def mxsavec : Flag<["-"], "mxsavec">, Group<m_x86_Features_Group>;
 def mxsaves : Flag<["-"], "mxsaves">, Group<m_x86_Features_Group>;
 def mmwaitx : Flag<["-"], "mmwaitx">, Group<m_x86_Features_Group>;
 def mclflushopt : Flag<["-"], "mclflushopt">, Group<m_x86_Features_Group>;
+def mclwb : Flag<["-"], "mclwb">, Group<m_x86_Features_Group>;
 def mmovbe : Flag<["-"], "mmovbe">, Group<m_x86_Features_Group>;
 def mips16 : Flag<["-"], "mips16">, Group<m_Group>;
 def mno_mips16 : Flag<["-"], "mno-mips16">, Group<m_Group>;
index e9f5416718ec96eefabbe93fc1b060151a728fd8..45ce531e7465dc907a077ec4db29cceeadbbfd72 100644 (file)
@@ -3879,6 +3879,8 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts,
     Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16");
   if (HasCLFLUSHOPT)
     Builder.defineMacro("__CLFLUSHOPT__");
+  if (HasCLWB)
+    Builder.defineMacro("__CLWB__");
 
   // Each case falls through to the previous one here.
   switch (SSELevel) {
index 6ead9a2d2de9d1f98536baef9d37cc3b76ffbbbd..d78bc28b8ba83d86ed9e9b3f9069defdc4f69de2 100644 (file)
 // CLFLUSHOPT: "-target-feature" "+clflushopt"
 // NO-CLFLUSHOPT: "-target-feature" "-clflushopt"
 
+// RUN: %clang -target i386-unknown-linux-gnu -march=i386 -mclwb %s -### -o %t.o 2>&1 | FileCheck -check-prefix=CLWB %s
+// RUN: %clang -target i386-unknown-linux-gnu -march=i386 -mno-clwb %s -### -o %t.o 2>&1 | FileCheck -check-prefix=NO-CLWB %s
+// CLWB: "-target-feature" "+clwb"
+// NO-CLWB: "-target-feature" "-clwb"
+
 // RUN: %clang -target i386-unknown-linux-gnu -march=i386 -mmovbe %s -### -o %t.o 2>&1 | FileCheck -check-prefix=MOVBE %s
 // RUN: %clang -target i386-unknown-linux-gnu -march=i386 -mno-movbe %s -### -o %t.o 2>&1 | FileCheck -check-prefix=NO-MOVBE %s
 // MOVBE: "-target-feature" "+movbe"
index 66a5e62aa9e1ae7cdbb1f82120181cc0839480fc..f32482297d8ffd83d16ecbdffbd9fb3db905ad61 100644 (file)
 // CHECK_SKX_M32: #define __BMI2__ 1
 // CHECK_SKX_M32: #define __BMI__ 1
 // CHECK_SKX_M32: #define __CLFLUSHOPT__ 1
+// CHECK_SKX_M32: #define __CLWB__ 1
 // CHECK_SKX_M32: #define __F16C__ 1
 // CHECK_SKX_M32: #define __FMA__ 1
 // CHECK_SKX_M32: #define __LZCNT__ 1
 // CHECK_SKX_M64: #define __BMI2__ 1
 // CHECK_SKX_M64: #define __BMI__ 1
 // CHECK_SKX_M64: #define __CLFLUSHOPT__ 1
+// CHECK_SKX_M64: #define __CLWB__ 1
 // CHECK_SKX_M64: #define __F16C__ 1
 // CHECK_SKX_M64: #define __FMA__ 1
 // CHECK_SKX_M64: #define __LZCNT__ 1