diff options
-rw-r--r-- | clang/docs/ClangCommandLineReference.rst | 2 | ||||
-rw-r--r-- | clang/include/clang/Driver/Options.td | 2 | ||||
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 2 | ||||
-rw-r--r-- | clang/test/Driver/x86-target-features.c | 5 | ||||
-rw-r--r-- | clang/test/Preprocessor/predefined-arch-macros.c | 2 |
5 files changed, 13 insertions, 0 deletions
diff --git a/clang/docs/ClangCommandLineReference.rst b/clang/docs/ClangCommandLineReference.rst index feafc7a3316..c7aead921a7 100644 --- a/clang/docs/ClangCommandLineReference.rst +++ b/clang/docs/ClangCommandLineReference.rst @@ -2195,6 +2195,8 @@ X86 .. option:: -mpopcnt, -mno-popcnt +.. option:: -mprefetchwt1, -mno-prefetchwt1 + .. option:: -mprfchw, -mno-prfchw .. option:: -mrdrnd, -mno-rdrnd diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 29fa617088d..813f48dae2e 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -1720,6 +1720,7 @@ def mno_clwb : Flag<["-"], "mno-clwb">, Group<m_x86_Features_Group>; def mno_movbe : Flag<["-"], "mno-movbe">, Group<m_x86_Features_Group>; def mno_mpx : Flag<["-"], "mno-mpx">, Group<m_x86_Features_Group>; def mno_sgx : Flag<["-"], "mno-sgx">, Group<m_x86_Features_Group>; +def mno_prefetchwt1 : Flag<["-"], "mno-prefetchwt1">, Group<m_x86_Features_Group>; def munaligned_access : Flag<["-"], "munaligned-access">, Group<m_arm_Features_Group>, HelpText<"Allow memory accesses to be unaligned (AArch32/AArch64 only)">; @@ -1917,6 +1918,7 @@ def mclwb : Flag<["-"], "mclwb">, Group<m_x86_Features_Group>; def mmovbe : Flag<["-"], "mmovbe">, Group<m_x86_Features_Group>; def mmpx : Flag<["-"], "mmpx">, Group<m_x86_Features_Group>; def msgx : Flag<["-"], "msgx">, Group<m_x86_Features_Group>; +def mprefetchwt1 : Flag<["-"], "mprefetchwt1">, Group<m_x86_Features_Group>; def mips16 : Flag<["-"], "mips16">, Group<m_Group>; def mno_mips16 : Flag<["-"], "mno-mips16">, Group<m_Group>; def mmicromips : Flag<["-"], "mmicromips">, Group<m_Group>; diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 527041a8665..bbc3d16493d 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -3885,6 +3885,8 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__MPX__"); if (HasSGX) Builder.defineMacro("__SGX__"); + if (HasPREFETCHWT1) + Builder.defineMacro("__PREFETCHWT1__"); // Each case falls through to the previous one here. switch (SSELevel) { diff --git a/clang/test/Driver/x86-target-features.c b/clang/test/Driver/x86-target-features.c index 79c409db1c0..bf4d456c23b 100644 --- a/clang/test/Driver/x86-target-features.c +++ b/clang/test/Driver/x86-target-features.c @@ -74,3 +74,8 @@ // RUN: %clang -target i386-unknown-linux-gnu -march=i386 -mno-sgx %s -### -o %t.o 2>&1 | FileCheck -check-prefix=NO-SGX %s // SGX: "-target-feature" "+sgx" // NO-SGX: "-target-feature" "-sgx" + +// RUN: %clang -target i386-unknown-linux-gnu -march=i386 -mprefetchwt1 %s -### -o %t.o 2>&1 | FileCheck -check-prefix=PREFETCHWT1 %s +// RUN: %clang -target i386-unknown-linux-gnu -march=i386 -mno-prefetchwt1 %s -### -o %t.o 2>&1 | FileCheck -check-prefix=NO-PREFETCHWT1 %s +// PREFETCHWT1: "-target-feature" "+prefetchwt1" +// NO-PREFETCHWT1: "-target-feature" "-prefetchwt1" diff --git a/clang/test/Preprocessor/predefined-arch-macros.c b/clang/test/Preprocessor/predefined-arch-macros.c index 9660244ccc5..2990c5f67ab 100644 --- a/clang/test/Preprocessor/predefined-arch-macros.c +++ b/clang/test/Preprocessor/predefined-arch-macros.c @@ -731,6 +731,7 @@ // CHECK_KNL_M32: #define __MMX__ 1 // CHECK_KNL_M32: #define __PCLMUL__ 1 // CHECK_KNL_M32: #define __POPCNT__ 1 +// CHECK_KNL_M32: #define __PREFETCHWT1__ 1 // CHECK_KNL_M32: #define __RDRND__ 1 // CHECK_KNL_M32: #define __RTM__ 1 // CHECK_KNL_M32: #define __SSE2__ 1 @@ -766,6 +767,7 @@ // CHECK_KNL_M64: #define __MMX__ 1 // CHECK_KNL_M64: #define __PCLMUL__ 1 // CHECK_KNL_M64: #define __POPCNT__ 1 +// CHECK_KNL_M64: #define __PREFETCHWT1__ 1 // CHECK_KNL_M64: #define __RDRND__ 1 // CHECK_KNL_M64: #define __RTM__ 1 // CHECK_KNL_M64: #define __SSE2_MATH__ 1 |