From: Craig Topper Date: Wed, 8 Feb 2017 07:36:58 +0000 (+0000) Subject: [X86] Add -mclwb/-mno-clwb command line arguments and __CLWB__ define to match gcc. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1e1521d281ea45b4e7a73221c4fa6a45d9c396d6;p=clang [X86] Add -mclwb/-mno-clwb command line arguments and __CLWB__ define to match gcc. 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 --- diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 76b8d0de29..3ac9283305 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -1716,6 +1716,7 @@ def mno_xsaves : Flag<["-"], "mno-xsaves">, Group; def mno_mwaitx : Flag<["-"], "mno-mwaitx">, Group; def mno_pku : Flag<["-"], "mno-pku">, Group; def mno_clflushopt : Flag<["-"], "mno-clflushopt">, Group; +def mno_clwb : Flag<["-"], "mno-clwb">, Group; def mno_movbe : Flag<["-"], "mno-movbe">, Group; def munaligned_access : Flag<["-"], "munaligned-access">, Group, @@ -1910,6 +1911,7 @@ def mxsavec : Flag<["-"], "mxsavec">, Group; def mxsaves : Flag<["-"], "mxsaves">, Group; def mmwaitx : Flag<["-"], "mmwaitx">, Group; def mclflushopt : Flag<["-"], "mclflushopt">, Group; +def mclwb : Flag<["-"], "mclwb">, Group; def mmovbe : Flag<["-"], "mmovbe">, Group; def mips16 : Flag<["-"], "mips16">, Group; def mno_mips16 : Flag<["-"], "mno-mips16">, Group; diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index e9f5416718..45ce531e74 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -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) { diff --git a/test/Driver/x86-target-features.c b/test/Driver/x86-target-features.c index 6ead9a2d2d..d78bc28b8b 100644 --- a/test/Driver/x86-target-features.c +++ b/test/Driver/x86-target-features.c @@ -55,6 +55,11 @@ // 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" diff --git a/test/Preprocessor/predefined-arch-macros.c b/test/Preprocessor/predefined-arch-macros.c index 66a5e62aa9..f32482297d 100644 --- a/test/Preprocessor/predefined-arch-macros.c +++ b/test/Preprocessor/predefined-arch-macros.c @@ -796,6 +796,7 @@ // 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 @@ -835,6 +836,7 @@ // 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