r331962 - [X86] ptwrite intrinsic

2018-05-10 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Thu May 10 00:28:54 2018
New Revision: 331962

URL: http://llvm.org/viewvc/llvm-project?rev=331962&view=rev
Log:
[X86] ptwrite intrinsic

Reviewers: craig.topper, RKSimon

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D46540



Added:
cfe/trunk/lib/Headers/ptwriteintrin.h   (with props)
cfe/trunk/test/CodeGen/ptwrite.c   (with props)
Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/include/clang/Basic/BuiltinsX86_64.def
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Basic/Targets/X86.cpp
cfe/trunk/lib/Basic/Targets/X86.h
cfe/trunk/lib/Headers/CMakeLists.txt
cfe/trunk/lib/Headers/cpuid.h
cfe/trunk/lib/Headers/module.modulemap
cfe/trunk/lib/Headers/x86intrin.h
cfe/trunk/test/Driver/x86-target-features.c
cfe/trunk/test/Preprocessor/predefined-arch-macros.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=331962&r1=331961&r2=331962&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Thu May 10 00:28:54 2018
@@ -1885,6 +1885,9 @@ TARGET_BUILTIN(__builtin_ia32_cldemote,
 TARGET_BUILTIN(__builtin_ia32_directstore_u32, "vUi*Ui", "n", "movdiri")
 TARGET_BUILTIN(__builtin_ia32_movdir64b, "vv*vC*", "n", "movdir64b")
 
+// PTWRITE
+TARGET_BUILTIN(__builtin_ia32_ptwrite32, "vUi", "n", "ptwrite")
+
 // MSVC
 TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_BitScanReverse, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86_64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86_64.def?rev=331962&r1=331961&r2=331962&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86_64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86_64.def Thu May 10 00:28:54 2018
@@ -95,6 +95,7 @@ TARGET_BUILTIN(__builtin_ia32_cvtsi2ss64
 TARGET_BUILTIN(__builtin_ia32_cvtusi2sd64, "V2dV2dULLiIi", "nc", "avx512f")
 TARGET_BUILTIN(__builtin_ia32_cvtusi2ss64, "V4fV4fULLiIi", "nc", "avx512f")
 TARGET_BUILTIN(__builtin_ia32_directstore_u64, "vULi*ULi", "n", "movdiri")
+TARGET_BUILTIN(__builtin_ia32_ptwrite64, "vULLi", "n", "ptwrite")
 
 #undef BUILTIN
 #undef TARGET_BUILTIN

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=331962&r1=331961&r2=331962&view=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Thu May 10 00:28:54 2018
@@ -2697,6 +2697,8 @@ def mprefetchwt1 : Flag<["-"], "mprefetc
 def mno_prefetchwt1 : Flag<["-"], "mno-prefetchwt1">, 
Group;
 def mprfchw : Flag<["-"], "mprfchw">, Group;
 def mno_prfchw : Flag<["-"], "mno-prfchw">, Group;
+def mptwrite : Flag<["-"], "mptwrite">, Group;
+def mno_ptwrite : Flag<["-"], "mno-ptwrite">, Group;
 def mrdpid : Flag<["-"], "mrdpid">, Group;
 def mno_rdpid : Flag<["-"], "mno-rdpid">, Group;
 def mrdrnd : Flag<["-"], "mrdrnd">, Group;

Modified: cfe/trunk/lib/Basic/Targets/X86.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.cpp?rev=331962&r1=331961&r2=331962&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/X86.cpp Thu May 10 00:28:54 2018
@@ -253,6 +253,7 @@ bool X86TargetInfo::initFeatureMap(
 setFeatureEnabledImpl(Features, "waitpkg", true);
 LLVM_FALLTHROUGH;
   case CK_GoldmontPlus:
+setFeatureEnabledImpl(Features, "ptwrite", true);
 setFeatureEnabledImpl(Features, "rdpid", true);
 setFeatureEnabledImpl(Features, "sgx", true);
 LLVM_FALLTHROUGH;
@@ -830,6 +831,8 @@ bool X86TargetInfo::handleTargetFeatures
   HasMOVDIR64B = true;
 } else if (Feature == "+pconfig") {
   HasPCONFIG = true;
+} else if (Feature == "+ptwrite") {
+  HasPTWRITE = true;
 }
 
 X86SSEEnum Level = llvm::StringSwitch(Feature)
@@ -1192,6 +1195,8 @@ void X86TargetInfo::getTargetDefines(con
 Builder.defineMacro("__MOVDIR64B__");
   if (HasPCONFIG)
 Builder.defineMacro("__PCONFIG__");
+  if (HasPTWRITE)
+Builder.defineMacro("__PTWRITE__");
 
   // Each case falls through to the previous one here.
   switch (SSELevel) {
@@ -1326,6 +1331,7 @@ bool X86TargetInfo::isValidFeatureName(S
   .Case("popcnt", true)
   .Case("prefetchwt1", true)
   .Case("prfchw", true)
+  .Case("ptwrite", true)
   .Case("rdpid", true)
   .Case("rdrnd", true)
   .Case("rdseed", true)

r332091 - [X86] Assume alignment of movdir64b dst argument

2018-05-11 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Fri May 11 07:22:04 2018
New Revision: 332091

URL: http://llvm.org/viewvc/llvm-project?rev=332091&view=rev
Log:
[X86] Assume alignment of movdir64b dst argument

Reviewers: craig.topper

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D46683

Modified:
cfe/trunk/lib/Headers/movdirintrin.h
cfe/trunk/test/CodeGen/builtin-movdir.c

Modified: cfe/trunk/lib/Headers/movdirintrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/movdirintrin.h?rev=332091&r1=332090&r2=332091&view=diff
==
--- cfe/trunk/lib/Headers/movdirintrin.h (original)
+++ cfe/trunk/lib/Headers/movdirintrin.h Fri May 11 07:22:04 2018
@@ -47,10 +47,15 @@ _directstoreu_u64 (void *__dst, unsigned
 
 #endif /* __x86_64__ */
 
-// Move 64 bytes as direct store
+/*
+ * movdir64b - Move 64 bytes as direct store.
+ * The destination must be 64 byte aligned, and the store is atomic.
+ * The source address has no alignment requirement, and the load from
+ * the source address is not atomic.
+ */
 static __inline__ void
 __attribute__((__always_inline__, __nodebug__,  __target__("movdir64b")))
-_movdir64b (void *__dst, const void *__src)
+_movdir64b (void *__dst __attribute__((align_value(64))), const void *__src)
 {
   __builtin_ia32_movdir64b(__dst, __src);
 }

Modified: cfe/trunk/test/CodeGen/builtin-movdir.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtin-movdir.c?rev=332091&r1=332090&r2=332091&view=diff
==
--- cfe/trunk/test/CodeGen/builtin-movdir.c (original)
+++ cfe/trunk/test/CodeGen/builtin-movdir.c Fri May 11 07:22:04 2018
@@ -1,5 +1,5 @@
 // RUN: %clang_cc1 -ffreestanding -Wall -pedantic -triple 
x86_64-unknown-unknown -target-feature +movdiri -target-feature +movdir64b %s 
-emit-llvm -o - | FileCheck %s --check-prefix=X86_64 --check-prefix=CHECK
-// RUN: %clang_cc1 -ffreestanding -Wall -pedantic -triple i386-unknown-unknown 
-target-feature +movdiri -target-feature +movdir64b %s -emit-llvm -o - | 
FileCheck %s --check-prefix=CHECK
+// RUN: %clang_cc1 -ffreestanding -Wall -pedantic -triple i386-unknown-unknown 
-target-feature +movdiri -target-feature +movdir64b %s -emit-llvm -o - | 
FileCheck %s --check-prefix=X86 --check-prefix=CHECK
 
 #include 
 #include 
@@ -22,6 +22,11 @@ void test_directstore64(void *dst, uint6
 
 void test_dir64b(void *dst, const void *src) {
   // CHECK-LABEL: test_dir64b
+  // CHECK: [[PTRINT1:%.+]] = ptrtoint
+  // X86: [[MASKEDPTR1:%.+]] = and i32 [[PTRINT1]], 63
+  // X86: [[MASKCOND1:%.+]] = icmp eq i32 [[MASKEDPTR1]], 0
+  // X86_64: [[MASKEDPTR1:%.+]] = and i64 [[PTRINT1]], 63
+  // X86_64: [[MASKCOND1:%.+]] = icmp eq i64 [[MASKEDPTR1]], 0
   // CHECK: call void @llvm.x86.movdir64b
   _movdir64b(dst, src);
 }


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r333160 - [X86] NFC Include immintrin.h in CodeGen tests

2018-05-24 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Thu May 24 00:09:08 2018
New Revision: 333160

URL: http://llvm.org/viewvc/llvm-project?rev=333160&view=rev
Log:
[X86] NFC Include immintrin.h in CodeGen tests

Following r333110:
"Move all Intel defined intrinsic includes into immintrin.h"

Modified:
cfe/trunk/test/CodeGen/adx-builtins.c
cfe/trunk/test/CodeGen/avx-builtins.c
cfe/trunk/test/CodeGen/avx2-builtins.c
cfe/trunk/test/CodeGen/bmi-builtins.c
cfe/trunk/test/CodeGen/bmi2-builtins.c
cfe/trunk/test/CodeGen/builtin-clflushopt.c
cfe/trunk/test/CodeGen/builtin-clwb.c
cfe/trunk/test/CodeGen/builtin-movdir.c
cfe/trunk/test/CodeGen/builtin-wbnoinvd.c
cfe/trunk/test/CodeGen/cldemote.c
cfe/trunk/test/CodeGen/f16c-builtins.c
cfe/trunk/test/CodeGen/fsgsbase-builtins.c
cfe/trunk/test/CodeGen/lzcnt-builtins.c
cfe/trunk/test/CodeGen/mmx-builtins.c
cfe/trunk/test/CodeGen/popcnt-builtins.c
cfe/trunk/test/CodeGen/ptwrite.c
cfe/trunk/test/CodeGen/rdpid-builtins.c
cfe/trunk/test/CodeGen/rdrand-builtins.c
cfe/trunk/test/CodeGen/sse-builtins.c
cfe/trunk/test/CodeGen/sse2-builtins.c
cfe/trunk/test/CodeGen/sse3-builtins.c
cfe/trunk/test/CodeGen/sse41-builtins.c
cfe/trunk/test/CodeGen/sse42-builtins.c
cfe/trunk/test/CodeGen/ssse3-builtins.c
cfe/trunk/test/CodeGen/waitpkg.c
cfe/trunk/test/CodeGen/x86-nontemporal.c
cfe/trunk/test/Headers/pconfigintin.c
cfe/trunk/test/Headers/sgxintrin.c

Modified: cfe/trunk/test/CodeGen/adx-builtins.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/adx-builtins.c?rev=333160&r1=333159&r2=333160&view=diff
==
--- cfe/trunk/test/CodeGen/adx-builtins.c (original)
+++ cfe/trunk/test/CodeGen/adx-builtins.c Thu May 24 00:09:08 2018
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ffreestanding 
-target-feature +adx -emit-llvm -o - %s | FileCheck %s
 
-#include 
+#include 
 
 unsigned char test_addcarryx_u32(unsigned char __cf, unsigned int __x,
  unsigned int __y, unsigned int *__p) {

Modified: cfe/trunk/test/CodeGen/avx-builtins.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx-builtins.c?rev=333160&r1=333159&r2=333160&view=diff
==
--- cfe/trunk/test/CodeGen/avx-builtins.c (original)
+++ cfe/trunk/test/CodeGen/avx-builtins.c Thu May 24 00:09:08 2018
@@ -2,7 +2,7 @@
 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin 
-target-feature +avx -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck 
%s
 
 
-#include 
+#include 
 
 // NOTE: This should match the tests in 
llvm/test/CodeGen/X86/sse-intrinsics-fast-isel.ll
 

Modified: cfe/trunk/test/CodeGen/avx2-builtins.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx2-builtins.c?rev=333160&r1=333159&r2=333160&view=diff
==
--- cfe/trunk/test/CodeGen/avx2-builtins.c (original)
+++ cfe/trunk/test/CodeGen/avx2-builtins.c Thu May 24 00:09:08 2018
@@ -2,7 +2,7 @@
 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin 
-target-feature +avx2 -fno-signed-char -emit-llvm -o - -Wall -Werror | 
FileCheck %s
 
 
-#include 
+#include 
 
 // NOTE: This should match the tests in 
llvm/test/CodeGen/X86/avx2-intrinsics-fast-isel.ll
 

Modified: cfe/trunk/test/CodeGen/bmi-builtins.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/bmi-builtins.c?rev=333160&r1=333159&r2=333160&view=diff
==
--- cfe/trunk/test/CodeGen/bmi-builtins.c (original)
+++ cfe/trunk/test/CodeGen/bmi-builtins.c Thu May 24 00:09:08 2018
@@ -1,7 +1,7 @@
 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin 
-target-feature +bmi -emit-llvm -o - -Wall -Werror | FileCheck %s
 
 
-#include 
+#include 
 
 // NOTE: This should match the tests in 
llvm/test/CodeGen/X86/bmi-intrinsics-fast-isel.ll
 

Modified: cfe/trunk/test/CodeGen/bmi2-builtins.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/bmi2-builtins.c?rev=333160&r1=333159&r2=333160&view=diff
==
--- cfe/trunk/test/CodeGen/bmi2-builtins.c (original)
+++ cfe/trunk/test/CodeGen/bmi2-builtins.c Thu May 24 00:09:08 2018
@@ -2,7 +2,7 @@
 // RUN: %clang_cc1 -ffreestanding %s -triple=i386-apple-darwin -target-feature 
+bmi2 -emit-llvm -o - | FileCheck %s --check-prefix=B32
 
 
-#include 
+#include 
 
 unsigned int test_bzhi_u32(unsigned int __X, unsigned int __Y) {
   // CHECK: @llvm.x86.bmi.bzhi.32

Modified: cfe/trunk/test/CodeGen/builtin-clflushopt.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtin-clflushopt.c?rev=333160&r1=333159&r2=333160&view=diff

r333256 - [x86] invpcid intrinsic

2018-05-24 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Thu May 24 23:34:42 2018
New Revision: 333256

URL: http://llvm.org/viewvc/llvm-project?rev=333256&view=rev
Log:
[x86] invpcid intrinsic

An intrinsic for an old instruction, as described in the Intel SDM.

Reviewers: craig.topper, rnk

Reviewed By: craig.topper, rnk

Differential Revision: https://reviews.llvm.org/D47142

Added:
cfe/trunk/lib/Headers/invpcidintrin.h   (with props)
cfe/trunk/test/CodeGen/invpcid.c   (with props)
Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Basic/Targets/X86.cpp
cfe/trunk/lib/Basic/Targets/X86.h
cfe/trunk/lib/Headers/CMakeLists.txt
cfe/trunk/lib/Headers/cpuid.h
cfe/trunk/lib/Headers/immintrin.h
cfe/trunk/lib/Headers/module.modulemap
cfe/trunk/test/Driver/x86-target-features.c
cfe/trunk/test/Preprocessor/predefined-arch-macros.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=333256&r1=333255&r2=333256&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Thu May 24 23:34:42 2018
@@ -1867,6 +1867,9 @@ TARGET_BUILTIN(__builtin_ia32_movdir64b,
 // PTWRITE
 TARGET_BUILTIN(__builtin_ia32_ptwrite32, "vUi", "n", "ptwrite")
 
+// INVPCID
+TARGET_BUILTIN(__builtin_ia32_invpcid, "vUiv*", "nc", "invpcid")
+
 // MSVC
 TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_BitScanReverse, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=333256&r1=333255&r2=333256&view=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Thu May 24 23:34:42 2018
@@ -2685,6 +2685,8 @@ def mfsgsbase : Flag<["-"], "mfsgsbase">
 def mno_fsgsbase : Flag<["-"], "mno-fsgsbase">, Group;
 def mfxsr : Flag<["-"], "mfxsr">, Group;
 def mno_fxsr : Flag<["-"], "mno-fxsr">, Group;
+def minvpcid : Flag<["-"], "minvpcid">, Group;
+def mno_invpcid : Flag<["-"], "mno-invpcid">, Group;
 def mgfni : Flag<["-"], "mgfni">, Group;
 def mno_gfni : Flag<["-"], "mno-gfni">, Group;
 def mlwp : Flag<["-"], "mlwp">, Group;

Modified: cfe/trunk/lib/Basic/Targets/X86.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.cpp?rev=333256&r1=333255&r2=333256&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/X86.cpp Thu May 24 23:34:42 2018
@@ -182,6 +182,7 @@ bool X86TargetInfo::initFeatureMap(
 setFeatureEnabledImpl(Features, "bmi", true);
 setFeatureEnabledImpl(Features, "bmi2", true);
 setFeatureEnabledImpl(Features, "fma", true);
+setFeatureEnabledImpl(Features, "invpcid", true);
 setFeatureEnabledImpl(Features, "movbe", true);
 LLVM_FALLTHROUGH;
   case CK_IvyBridge:
@@ -811,6 +812,8 @@ bool X86TargetInfo::handleTargetFeatures
   HasPCONFIG = true;
 } else if (Feature == "+ptwrite") {
   HasPTWRITE = true;
+} else if (Feature == "+invpcid") {
+  HasINVPCID = true;
 }
 
 X86SSEEnum Level = llvm::StringSwitch(Feature)
@@ -1173,6 +1176,8 @@ void X86TargetInfo::getTargetDefines(con
 Builder.defineMacro("__PCONFIG__");
   if (HasPTWRITE)
 Builder.defineMacro("__PTWRITE__");
+  if (HasINVPCID)
+Builder.defineMacro("__INVPCID__");
 
   // Each case falls through to the previous one here.
   switch (SSELevel) {
@@ -1293,6 +1298,7 @@ bool X86TargetInfo::isValidFeatureName(S
   .Case("fsgsbase", true)
   .Case("fxsr", true)
   .Case("gfni", true)
+  .Case("invpcid", true)
   .Case("lwp", true)
   .Case("lzcnt", true)
   .Case("mmx", true)
@@ -1370,6 +1376,7 @@ bool X86TargetInfo::hasFeature(StringRef
   .Case("fsgsbase", HasFSGSBASE)
   .Case("fxsr", HasFXSR)
   .Case("gfni", HasGFNI)
+  .Case("invpcid", HasINVPCID)
   .Case("lwp", HasLWP)
   .Case("lzcnt", HasLZCNT)
   .Case("mm3dnow", MMX3DNowLevel >= AMD3DNow)

Modified: cfe/trunk/lib/Basic/Targets/X86.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.h?rev=333256&r1=333255&r2=333256&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.h (original)
+++ cfe/trunk/lib/Basic/Targets/X86.h Thu May 24 23:34:42 2018
@@ -106,6 +106,7 @@ class LLVM_LIBRARY_VISIBILITY X86TargetI
   bool HasMOVDIRI = false;
   bool HasMOVDIR64B = false;
   bool HasPTWRITE = false;
+  bool HasINVPCID = false;
 
 protected:
   /// Enumeration of all 

r334174 - [CodeGen] Improve diagnostics related to target attributes

2018-06-07 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Thu Jun  7 01:48:36 2018
New Revision: 334174

URL: http://llvm.org/viewvc/llvm-project?rev=334174&view=rev
Log:
[CodeGen] Improve diagnostics related to target attributes

Summary:
When requirement imposed by __target__ attributes on functions
are not satisfied, prefer printing those requirements, which
are explicitly mentioned in the attributes.

This makes such messages more useful, e.g. printing avx512f instead of avx2
in the following scenario:

```
$ cat foo.c
static inline void __attribute__((__always_inline__, __target__("avx512f")))
x(void)
{
}

int main(void)
{
x();
}
$ clang foo.c
foo.c:7:2: error: always_inline function 'x' requires target feature 'avx2', 
but would be inlined into function 'main' that is compiled without support for 
'avx2'
x();
^
1 error generated.
```

bugzilla: https://bugs.llvm.org/show_bug.cgi?id=37338

Reviewers: craig.topper, echristo, dblaikie

Reviewed By: craig.topper, echristo

Differential Revision: https://reviews.llvm.org/D46541


Modified:
cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/test/CodeGen/target-features-error-2.c
cfe/trunk/test/CodeGen/target-features-error.c

Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.cpp?rev=334174&r1=334173&r2=334174&view=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenFunction.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenFunction.cpp Thu Jun  7 01:48:36 2018
@@ -2330,9 +2330,19 @@ void CodeGenFunction::checkTargetFeature
 
   } else if (TargetDecl->hasAttr()) {
 // Get the required features for the callee.
+
+const TargetAttr *TD = TargetDecl->getAttr();
+TargetAttr::ParsedTargetAttr ParsedAttr = 
CGM.filterFunctionTargetAttrs(TD);
+
 SmallVector ReqFeatures;
 llvm::StringMap CalleeFeatureMap;
 CGM.getFunctionFeatureMap(CalleeFeatureMap, TargetDecl);
+
+for (const auto &F : ParsedAttr.Features) {
+  if (F[0] == '+' && CalleeFeatureMap.lookup(F.substr(1)))
+ReqFeatures.push_back(StringRef(F).substr(1));
+}
+
 for (const auto &F : CalleeFeatureMap) {
   // Only positive features are "required".
   if (F.getValue())

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=334174&r1=334173&r2=334174&view=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Jun  7 01:48:36 2018
@@ -5033,22 +5033,28 @@ void CodeGenModule::AddVTableTypeMetadat
   }
 }
 
+TargetAttr::ParsedTargetAttr CodeGenModule::filterFunctionTargetAttrs(const 
TargetAttr *TD) {
+  assert(TD != nullptr);
+  TargetAttr::ParsedTargetAttr ParsedAttr = TD->parse();
+
+  ParsedAttr.Features.erase(
+  llvm::remove_if(ParsedAttr.Features,
+  [&](const std::string &Feat) {
+return !Target.isValidFeatureName(
+StringRef{Feat}.substr(1));
+  }),
+  ParsedAttr.Features.end());
+  return ParsedAttr;
+}
+
+
 // Fills in the supplied string map with the set of target features for the
 // passed in function.
 void CodeGenModule::getFunctionFeatureMap(llvm::StringMap &FeatureMap,
   const FunctionDecl *FD) {
   StringRef TargetCPU = Target.getTargetOpts().CPU;
   if (const auto *TD = FD->getAttr()) {
-// If we have a TargetAttr build up the feature map based on that.
-TargetAttr::ParsedTargetAttr ParsedAttr = TD->parse();
-
-ParsedAttr.Features.erase(
-llvm::remove_if(ParsedAttr.Features,
-[&](const std::string &Feat) {
-  return !Target.isValidFeatureName(
-  StringRef{Feat}.substr(1));
-}),
-ParsedAttr.Features.end());
+TargetAttr::ParsedTargetAttr ParsedAttr = filterFunctionTargetAttrs(TD);
 
 // Make a copy of the features as passed on the command line into the
 // beginning of the additional features from the function to override.

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=334174&r1=334173&r2=334174&view=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Thu Jun  7 01:48:36 2018
@@ -1089,6 +1089,10 @@ public:
   /// It's up to you to ensure that this is safe.
   void AddDefaultFnAttrs(llvm::Function &F);
 
+  /// Parses the target attributes passed in, and returns only the ones that 
are
+  /// valid feature names.
+  Targ

r335339 - [X86] Lower _mm[256|512]_cmp[.]_mask intrinsics to native llvm IR

2018-06-22 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Fri Jun 22 04:59:16 2018
New Revision: 335339

URL: http://llvm.org/viewvc/llvm-project?rev=335339&view=rev
Log:
[X86] Lower _mm[256|512]_cmp[.]_mask intrinsics to native llvm IR

Summary:
Lowering some vector comparision builtins to fcmp IR instructions.
This ignores the signaling behaviour specified in the predicate
argument of said builtins.

Affected AVX512 builtins:

__builtin_ia32_cmpps128_mask
__builtin_ia32_cmpps256_mask
__builtin_ia32_cmpps512_mask
__builtin_ia32_cmppd128_mask
__builtin_ia32_cmppd256_mask
__builtin_ia32_cmppd512_mask

Reviewers: craig.topper, uriel.k, RKSimon, andrew.w.kaylor, spatel, scanon, 
efriedma

Reviewed By: craig.topper, spatel, efriedma

Differential Revision: https://reviews.llvm.org/D45616

Modified:
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/test/CodeGen/avx-builtins.c
cfe/trunk/test/CodeGen/avx-cmp-builtins.c
cfe/trunk/test/CodeGen/avx2-builtins.c
cfe/trunk/test/CodeGen/avx512f-builtins.c
cfe/trunk/test/CodeGen/avx512vl-builtins.c

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=335339&r1=335338&r2=335339&view=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Fri Jun 22 04:59:16 2018
@@ -10120,44 +10120,7 @@ Value *CodeGenFunction::EmitX86BuiltinEx
 return Builder.CreateExtractValue(Call, 1);
   }
 
-  case X86::BI__builtin_ia32_cmpps128_mask:
-  case X86::BI__builtin_ia32_cmpps256_mask:
-  case X86::BI__builtin_ia32_cmpps512_mask:
-  case X86::BI__builtin_ia32_cmppd128_mask:
-  case X86::BI__builtin_ia32_cmppd256_mask:
-  case X86::BI__builtin_ia32_cmppd512_mask: {
-unsigned NumElts = Ops[0]->getType()->getVectorNumElements();
-Value *MaskIn = Ops[3];
-Ops.erase(&Ops[3]);
-
-Intrinsic::ID ID;
-switch (BuiltinID) {
-default: llvm_unreachable("Unsupported intrinsic!");
-case X86::BI__builtin_ia32_cmpps128_mask:
-  ID = Intrinsic::x86_avx512_mask_cmp_ps_128;
-  break;
-case X86::BI__builtin_ia32_cmpps256_mask:
-  ID = Intrinsic::x86_avx512_mask_cmp_ps_256;
-  break;
-case X86::BI__builtin_ia32_cmpps512_mask:
-  ID = Intrinsic::x86_avx512_mask_cmp_ps_512;
-  break;
-case X86::BI__builtin_ia32_cmppd128_mask:
-  ID = Intrinsic::x86_avx512_mask_cmp_pd_128;
-  break;
-case X86::BI__builtin_ia32_cmppd256_mask:
-  ID = Intrinsic::x86_avx512_mask_cmp_pd_256;
-  break;
-case X86::BI__builtin_ia32_cmppd512_mask:
-  ID = Intrinsic::x86_avx512_mask_cmp_pd_512;
-  break;
-}
-
-Value *Cmp = Builder.CreateCall(CGM.getIntrinsic(ID), Ops);
-return EmitX86MaskedCompareResult(*this, Cmp, NumElts, MaskIn);
-  }
-
-  // SSE packed comparison intrinsics
+  // packed comparison intrinsics
   case X86::BI__builtin_ia32_cmpeqps:
   case X86::BI__builtin_ia32_cmpeqpd:
 return getVectorFCmpIR(CmpInst::FCMP_OEQ);
@@ -10185,64 +10148,84 @@ Value *CodeGenFunction::EmitX86BuiltinEx
   case X86::BI__builtin_ia32_cmpps:
   case X86::BI__builtin_ia32_cmpps256:
   case X86::BI__builtin_ia32_cmppd:
-  case X86::BI__builtin_ia32_cmppd256: {
+  case X86::BI__builtin_ia32_cmppd256:
+  case X86::BI__builtin_ia32_cmpps128_mask:
+  case X86::BI__builtin_ia32_cmpps256_mask:
+  case X86::BI__builtin_ia32_cmpps512_mask:
+  case X86::BI__builtin_ia32_cmppd128_mask:
+  case X86::BI__builtin_ia32_cmppd256_mask:
+  case X86::BI__builtin_ia32_cmppd512_mask: {
+// Lowering vector comparisons to fcmp instructions, while
+// ignoring signalling behaviour requested
+// ignoring rounding mode requested
+// This is is only possible as long as FENV_ACCESS is not implemented.
+// See also: https://reviews.llvm.org/D45616
+
+// The third argument is the comparison condition, and integer in the
+// range [0, 31]
 unsigned CC = cast(Ops[2])->getZExtValue() & 0x1f;
-// If this one of the SSE immediates, we can use native IR.
-if (CC < 8) {
-  FCmpInst::Predicate Pred;
-  switch (CC) {
-  case 0: Pred = FCmpInst::FCMP_OEQ; break;
-  case 1: Pred = FCmpInst::FCMP_OLT; break;
-  case 2: Pred = FCmpInst::FCMP_OLE; break;
-  case 3: Pred = FCmpInst::FCMP_UNO; break;
-  case 4: Pred = FCmpInst::FCMP_UNE; break;
-  case 5: Pred = FCmpInst::FCMP_UGE; break;
-  case 6: Pred = FCmpInst::FCMP_UGT; break;
-  case 7: Pred = FCmpInst::FCMP_ORD; break;
-  }
-  return getVectorFCmpIR(Pred);
+
+// Lowering to IR fcmp instruction.
+// Ignoring requested signaling behaviour,
+// e.g. both _CMP_GT_OS & _CMP_GT_OQ are translated to FCMP_OGT.
+FCmpInst::Predicate Pred;
+switch (CC) {
+case 0x00: Pred = FCmpInst::FCMP_OEQ; break;
+case 0x01: Pred = FCmpInst::FCMP_OLT; break;
+case 0x02: Pred = FCmpInst::FCMP_OLE; break;
+case 0x03: Pred = FCmpInst::FCMP_UNO; break;
+ 

r329848 - [x86] wbnoinvd intrinsic

2018-04-12 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Wed Apr 11 13:09:09 2018
New Revision: 329848

URL: http://llvm.org/viewvc/llvm-project?rev=329848&view=rev
Log:
[x86] wbnoinvd intrinsic

The WBNOINVD instruction writes back all modified
cache lines in the processor’s internal cache to main memory
but does not invalidate (flush) the internal caches.

Reviewers: craig.topper, zvi, ashlykov

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D43817

Added:
cfe/trunk/lib/Headers/wbnoinvdintrin.h
cfe/trunk/test/CodeGen/builtin-wbnoinvd.c
Modified:
cfe/trunk/docs/ClangCommandLineReference.rst
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Basic/Targets/X86.cpp
cfe/trunk/lib/Basic/Targets/X86.h
cfe/trunk/lib/Headers/CMakeLists.txt
cfe/trunk/lib/Headers/cpuid.h
cfe/trunk/lib/Headers/x86intrin.h
cfe/trunk/test/CodeGen/builtins-x86.c
cfe/trunk/test/Driver/x86-target-features.c
cfe/trunk/test/Preprocessor/predefined-arch-macros.c

Modified: cfe/trunk/docs/ClangCommandLineReference.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ClangCommandLineReference.rst?rev=329848&r1=329847&r2=329848&view=diff
==
--- cfe/trunk/docs/ClangCommandLineReference.rst (original)
+++ cfe/trunk/docs/ClangCommandLineReference.rst Wed Apr 11 13:09:09 2018
@@ -2484,6 +2484,8 @@ X86
 
 .. option:: -mvpclmulqdq, -mno-vpclmulqdq
 
+.. option:: -mwbnoinvd, -mno-wbnoinvd
+
 .. option:: -mx87, -m80387, -mno-x87
 
 .. option:: -mxop, -mno-xop

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=329848&r1=329847&r2=329848&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Wed Apr 11 13:09:09 2018
@@ -679,6 +679,9 @@ TARGET_BUILTIN(__builtin_ia32_clflushopt
 //CLWB
 TARGET_BUILTIN(__builtin_ia32_clwb, "vvC*", "", "clwb")
 
+//WBNOINVD
+TARGET_BUILTIN(__builtin_ia32_wbnoinvd, "v", "", "wbnoinvd")
+
 // ADX
 TARGET_BUILTIN(__builtin_ia32_addcarryx_u32, "UcUcUiUiUi*", "", "adx")
 TARGET_BUILTIN(__builtin_ia32_addcarry_u32, "UcUcUiUiUi*", "", "")

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=329848&r1=329847&r2=329848&view=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Wed Apr 11 13:09:09 2018
@@ -2598,6 +2598,8 @@ def mclflushopt : Flag<["-"], "mclflusho
 def mno_clflushopt : Flag<["-"], "mno-clflushopt">, 
Group;
 def mclwb : Flag<["-"], "mclwb">, Group;
 def mno_clwb : Flag<["-"], "mno-clwb">, Group;
+def mwbnoinvd : Flag<["-"], "mwbnoinvd">, Group;
+def mno_wbnoinvd : Flag<["-"], "mno-wbnoinvd">, Group;
 def mclzero : Flag<["-"], "mclzero">, Group;
 def mno_clzero : Flag<["-"], "mno-clzero">, Group;
 def mcx16 : Flag<["-"], "mcx16">, Group;

Modified: cfe/trunk/lib/Basic/Targets/X86.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.cpp?rev=329848&r1=329847&r2=329848&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/X86.cpp Wed Apr 11 13:09:09 2018
@@ -154,6 +154,8 @@ bool X86TargetInfo::initFeatureMap(
 break;
 
   case CK_IcelakeServer:
+setFeatureEnabledImpl(Features, "wbnoinvd", true);
+LLVM_FALLTHROUGH;
   case CK_IcelakeClient:
 setFeatureEnabledImpl(Features, "vaes", true);
 setFeatureEnabledImpl(Features, "gfni", true);
@@ -792,6 +794,8 @@ bool X86TargetInfo::handleTargetFeatures
   HasCLFLUSHOPT = true;
 } else if (Feature == "+clwb") {
   HasCLWB = true;
+} else if (Feature == "+wbnoinvd") {
+  HasWBNOINVD = true;
 } else if (Feature == "+prefetchwt1") {
   HasPREFETCHWT1 = true;
 } else if (Feature == "+clzero") {
@@ -1134,6 +1138,8 @@ void X86TargetInfo::getTargetDefines(con
 Builder.defineMacro("__CLFLUSHOPT__");
   if (HasCLWB)
 Builder.defineMacro("__CLWB__");
+  if (HasWBNOINVD)
+Builder.defineMacro("__WBNOINVD__");
   if (HasMPX)
 Builder.defineMacro("__MPX__");
   if (HasSHSTK)
@@ -1297,6 +1303,7 @@ bool X86TargetInfo::isValidFeatureName(S
   .Case("tbm", true)
   .Case("vaes", true)
   .Case("vpclmulqdq", true)
+  .Case("wbnoinvd", true)
   .Case("x87", true)
   .Case("xop", true)
   .Case("xsave", true)
@@ -1371,6 +1378,7 @@ bool X86TargetInfo::hasFeature(StringRef
   .Case("tbm", HasTBM)
   .Case("vaes", HasVAES)
   .Case("vpclmulqdq", HasVPCLMULQDQ)
+  .Case("wbnoinvd", HasWBNOINVD)
   .Case("x86", true)
   

r329932 - NFC - Indentation fixes in predefined-arch-macros.c

2018-04-12 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Thu Apr 12 11:15:39 2018
New Revision: 329932

URL: http://llvm.org/viewvc/llvm-project?rev=329932&view=rev
Log:
NFC - Indentation fixes in predefined-arch-macros.c

Consistently separating tests with empty lines.
Helps while navigating this file.

Reviewers: craig.topper

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D45561

Modified:
cfe/trunk/test/Preprocessor/predefined-arch-macros.c

Modified: cfe/trunk/test/Preprocessor/predefined-arch-macros.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/predefined-arch-macros.c?rev=329932&r1=329931&r2=329932&view=diff
==
--- cfe/trunk/test/Preprocessor/predefined-arch-macros.c (original)
+++ cfe/trunk/test/Preprocessor/predefined-arch-macros.c Thu Apr 12 11:15:39 
2018
@@ -1,5 +1,5 @@
 // Begin X86/GCC/Linux tests 
-//
+
 // RUN: %clang -march=i386 -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_I386_M32
@@ -11,7 +11,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_I386_M64
 // CHECK_I386_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=i486 -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_I486_M32
@@ -25,7 +25,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_I486_M64
 // CHECK_I486_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=i586 -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_I586_M32
@@ -42,7 +42,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_I586_M64
 // CHECK_I586_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=pentium -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M32
@@ -59,7 +59,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M64
 // CHECK_PENTIUM_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=pentium-mmx -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_MMX_M32
@@ -79,7 +79,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_MMX_M64
 // CHECK_PENTIUM_MMX_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=winchip-c6 -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP_C6_M32
@@ -94,7 +94,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP_C6_M64
 // CHECK_WINCHIP_C6_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=winchip2 -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP2_M32
@@ -110,7 +110,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP2_M64
 // CHECK_WINCHIP2_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=c3 -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_M32
@@ -126,7 +126,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_M64
 // CHECK_C3_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=c3-2 -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_2_M32
@@ -146,7 +146,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_2_M64
 // CHECK_C3_2_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=i686 -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_I686_M32
@@ -163,7 +163,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_I686_M64
 // CHECK_I686_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=pentiumpro -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUMPRO_M32
@@ -180,7 +180,7 @@
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUMPRO_M64
 // CHECK_PENTIUMPRO_M64: error: {{.*}}
-//
+
 // RUN: %clang -march=pentium2 -m32 -E -dM %s -o - 2>&1 \
 // RUN: -target i386-unknown-linux \
 // RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM2_M

r329937 - [X86] Introduce wbinvd intrinsic

2018-04-12 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Thu Apr 12 11:42:02 2018
New Revision: 329937

URL: http://llvm.org/viewvc/llvm-project?rev=329937&view=rev
Log:
[X86] Introduce wbinvd intrinsic

A previously missing intrinsic for an old instruction.

Reviewers: craig.topper, echristo

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D45311

Added:
cfe/trunk/test/CodeGen/builtin-wbinvd.c   (with props)
Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/lib/Headers/ia32intrin.h

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=329937&r1=329936&r2=329937&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Thu Apr 12 11:42:02 2018
@@ -679,7 +679,8 @@ TARGET_BUILTIN(__builtin_ia32_clflushopt
 //CLWB
 TARGET_BUILTIN(__builtin_ia32_clwb, "vvC*", "", "clwb")
 
-//WBNOINVD
+//WB[NO]INVD
+TARGET_BUILTIN(__builtin_ia32_wbinvd, "v", "", "")
 TARGET_BUILTIN(__builtin_ia32_wbnoinvd, "v", "", "wbnoinvd")
 
 // ADX

Modified: cfe/trunk/lib/Headers/ia32intrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/ia32intrin.h?rev=329937&r1=329936&r2=329937&view=diff
==
--- cfe/trunk/lib/Headers/ia32intrin.h (original)
+++ cfe/trunk/lib/Headers/ia32intrin.h Thu Apr 12 11:42:02 2018
@@ -70,4 +70,9 @@ __rdtscp(unsigned int *__A) {
 
 #define _rdpmc(A) __rdpmc(A)
 
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+_wbinvd(void) {
+  return __builtin_ia32_wbinvd();
+}
+
 #endif /* __IA32INTRIN_H */

Added: cfe/trunk/test/CodeGen/builtin-wbinvd.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtin-wbinvd.c?rev=329937&view=auto
==
--- cfe/trunk/test/CodeGen/builtin-wbinvd.c (added)
+++ cfe/trunk/test/CodeGen/builtin-wbinvd.c Thu Apr 12 11:42:02 2018
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown -emit-llvm 
-o - -Wall -Werror | FileCheck %s
+// RUN: %clang_cc1 %s -ffreestanding -triple=i386-unknown-unknown -emit-llvm 
-o - -Wall -Werror | FileCheck %s
+
+#include 
+
+void test_wbinvd(void) {
+  //CHECK-LABEL: @test_wbinvd
+  //CHECK: call void @llvm.x86.wbinvd()
+  _wbinvd();
+}

Propchange: cfe/trunk/test/CodeGen/builtin-wbinvd.c
--
svn:eol-style = native

Propchange: cfe/trunk/test/CodeGen/builtin-wbinvd.c
--
svn:keywords = Author Date Id Rev URL

Propchange: cfe/trunk/test/CodeGen/builtin-wbinvd.c
--
svn:mime-type = text/plain


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r329995 - [X86] Fix cldemote builtin signature

2018-04-13 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Fri Apr 13 01:14:21 2018
New Revision: 329995

URL: http://llvm.org/viewvc/llvm-project?rev=329995&view=rev
Log:
[X86] Fix cldemote builtin signature

Fix for r329993

Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=329995&r1=329994&r2=329995&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Fri Apr 13 01:14:21 2018
@@ -1884,7 +1884,7 @@ TARGET_BUILTIN(__builtin_ia32_mwaitx, "v
 TARGET_BUILTIN(__builtin_ia32_clzero, "vv*", "", "clzero")
 
 // CLDEMOTE
-TARGET_BUILTIN(__builtin_ia32_cldemote, "vCv*", "", "cldemote")
+TARGET_BUILTIN(__builtin_ia32_cldemote, "vvC*", "", "cldemote")
 
 // MSVC
 TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r329993 - [X86] Introduce cldemote intrinsic

2018-04-13 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Fri Apr 13 00:37:24 2018
New Revision: 329993

URL: http://llvm.org/viewvc/llvm-project?rev=329993&view=rev
Log:
[X86] Introduce cldemote intrinsic

Reviewers: craig.topper, zvi

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D45257

Added:
cfe/trunk/lib/Headers/cldemoteintrin.h   (with props)
cfe/trunk/test/CodeGen/cldemote.c   (with props)
Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Basic/Targets/X86.cpp
cfe/trunk/lib/Basic/Targets/X86.h
cfe/trunk/lib/Headers/CMakeLists.txt
cfe/trunk/lib/Headers/cpuid.h
cfe/trunk/lib/Headers/x86intrin.h
cfe/trunk/test/CodeGen/builtins-x86.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=329993&r1=329992&r2=329993&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Fri Apr 13 00:37:24 2018
@@ -1883,6 +1883,9 @@ TARGET_BUILTIN(__builtin_ia32_mwaitx, "v
 // CLZERO
 TARGET_BUILTIN(__builtin_ia32_clzero, "vv*", "", "clzero")
 
+// CLDEMOTE
+TARGET_BUILTIN(__builtin_ia32_cldemote, "vCv*", "", "cldemote")
+
 // MSVC
 TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_BitScanReverse, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=329993&r1=329992&r2=329993&view=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Fri Apr 13 00:37:24 2018
@@ -2599,6 +2599,8 @@ def mbmi : Flag<["-"], "mbmi">, Group, Group;
 def mbmi2 : Flag<["-"], "mbmi2">, Group;
 def mno_bmi2 : Flag<["-"], "mno-bmi2">, Group;
+def mcldemote : Flag<["-"], "mcldemote">, Group;
+def mno_cldemote : Flag<["-"], "mno-cldemote">, Group;
 def mclflushopt : Flag<["-"], "mclflushopt">, Group;
 def mno_clflushopt : Flag<["-"], "mno-clflushopt">, 
Group;
 def mclwb : Flag<["-"], "mclwb">, Group;

Modified: cfe/trunk/lib/Basic/Targets/X86.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.cpp?rev=329993&r1=329992&r2=329993&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/X86.cpp Fri Apr 13 00:37:24 2018
@@ -800,6 +800,8 @@ bool X86TargetInfo::handleTargetFeatures
   HasPREFETCHWT1 = true;
 } else if (Feature == "+clzero") {
   HasCLZERO = true;
+} else if (Feature == "+cldemote") {
+  HasCLDEMOTE = true;
 } else if (Feature == "+rdpid") {
   HasRDPID = true;
 } else if (Feature == "+retpoline") {
@@ -1154,6 +1156,8 @@ void X86TargetInfo::getTargetDefines(con
 Builder.defineMacro("__CLZERO__");
   if (HasRDPID)
 Builder.defineMacro("__RDPID__");
+  if (HasCLDEMOTE)
+Builder.defineMacro("__CLDEMOTE__");
 
   // Each case falls through to the previous one here.
   switch (SSELevel) {
@@ -1263,6 +1267,7 @@ bool X86TargetInfo::isValidFeatureName(S
   .Case("avx512ifma", true)
   .Case("bmi", true)
   .Case("bmi2", true)
+  .Case("cldemote", true)
   .Case("clflushopt", true)
   .Case("clwb", true)
   .Case("clzero", true)
@@ -1334,6 +1339,7 @@ bool X86TargetInfo::hasFeature(StringRef
   .Case("avx512ifma", HasAVX512IFMA)
   .Case("bmi", HasBMI)
   .Case("bmi2", HasBMI2)
+  .Case("cldemote", HasCLDEMOTE)
   .Case("clflushopt", HasCLFLUSHOPT)
   .Case("clwb", HasCLWB)
   .Case("clzero", HasCLZERO)

Modified: cfe/trunk/lib/Basic/Targets/X86.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.h?rev=329993&r1=329992&r2=329993&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.h (original)
+++ cfe/trunk/lib/Basic/Targets/X86.h Fri Apr 13 00:37:24 2018
@@ -91,6 +91,7 @@ class LLVM_LIBRARY_VISIBILITY X86TargetI
   bool HasXSAVES = false;
   bool HasMWAITX = false;
   bool HasCLZERO = false;
+  bool HasCLDEMOTE = false;
   bool HasPKU = false;
   bool HasCLFLUSHOPT = false;
   bool HasCLWB = false;

Modified: cfe/trunk/lib/Headers/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/CMakeLists.txt?rev=329993&r1=329992&r2=329993&view=diff
==
--- cfe/trunk/lib/Headers/CMakeLists.txt (original)
+++ cfe/trunk/lib/Headers/CMakeLists.txt Fri Apr 13 00:37:24 2018
@@ -40,6 +40,7 @@ set(files
   __clang_cuda_math_forward_declares.h
   __clang_cuda_runtime_wrapper.h

r330110 - [X86] Introduce archs: goldmont-plus & tremont

2018-04-16 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Mon Apr 16 01:10:10 2018
New Revision: 330110

URL: http://llvm.org/viewvc/llvm-project?rev=330110&view=rev
Log:
[X86] Introduce archs: goldmont-plus & tremont

Reviewers: craig.topper

Reviewed By: craig.topper

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D45613

Modified:
cfe/trunk/include/clang/Basic/X86Target.def
cfe/trunk/lib/Basic/Targets/X86.cpp
cfe/trunk/test/Driver/x86-march.c
cfe/trunk/test/Misc/target-invalid-cpu-note.c
cfe/trunk/test/Preprocessor/predefined-arch-macros.c

Modified: cfe/trunk/include/clang/Basic/X86Target.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/X86Target.def?rev=330110&r1=330109&r2=330110&view=diff
==
--- cfe/trunk/include/clang/Basic/X86Target.def (original)
+++ cfe/trunk/include/clang/Basic/X86Target.def Mon Apr 16 01:10:10 2018
@@ -104,6 +104,9 @@ PROC_WITH_FEAT(Silvermont, "silvermont",
 PROC_ALIAS(Silvermont, "slm")
 
 PROC(Goldmont, "goldmont", PROC_64_BIT)
+PROC(GoldmontPlus, "goldmont-plus", PROC_64_BIT)
+
+PROC(Tremont, "tremont", PROC_64_BIT)
 //@}
 
 /// \name Nehalem

Modified: cfe/trunk/lib/Basic/Targets/X86.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.cpp?rev=330110&r1=330109&r2=330110&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/X86.cpp Mon Apr 16 01:10:10 2018
@@ -244,6 +244,14 @@ bool X86TargetInfo::initFeatureMap(
 setFeatureEnabledImpl(Features, "fxsr", true);
 break;
 
+  case CK_Tremont:
+setFeatureEnabledImpl(Features, "cldemote", true);
+setFeatureEnabledImpl(Features, "gfni", true);
+LLVM_FALLTHROUGH;
+  case CK_GoldmontPlus:
+setFeatureEnabledImpl(Features, "rdpid", true);
+setFeatureEnabledImpl(Features, "sgx", true);
+LLVM_FALLTHROUGH;
   case CK_Goldmont:
 setFeatureEnabledImpl(Features, "sha", true);
 setFeatureEnabledImpl(Features, "rdseed", true);
@@ -930,6 +938,12 @@ void X86TargetInfo::getTargetDefines(con
   case CK_Goldmont:
 defineCPUMacros(Builder, "goldmont");
 break;
+  case CK_GoldmontPlus:
+defineCPUMacros(Builder, "goldmont_plus");
+break;
+  case CK_Tremont:
+defineCPUMacros(Builder, "tremont");
+break;
   case CK_Nehalem:
   case CK_Westmere:
   case CK_SandyBridge:

Modified: cfe/trunk/test/Driver/x86-march.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/x86-march.c?rev=330110&r1=330109&r2=330110&view=diff
==
--- cfe/trunk/test/Driver/x86-march.c (original)
+++ cfe/trunk/test/Driver/x86-march.c Mon Apr 16 01:10:10 2018
@@ -84,6 +84,14 @@
 // RUN:   | FileCheck %s -check-prefix=goldmont
 // goldmont: "-target-cpu" "goldmont"
 //
+// RUN: %clang -target x86_64-unknown-unknown -c -### %s -march=goldmont-plus 
2>&1 \
+// RUN:   | FileCheck %s -check-prefix=goldmont-plus
+// goldmont-plus: "-target-cpu" "goldmont-plus"
+//
+// RUN: %clang -target x86_64-unknown-unknown -c -### %s -march=tremont 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=tremont
+// tremont: "-target-cpu" "tremont"
+//
 // RUN: %clang -target x86_64-unknown-unknown -c -### %s -march=k8 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=k8
 // k8: "-target-cpu" "k8"

Modified: cfe/trunk/test/Misc/target-invalid-cpu-note.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/target-invalid-cpu-note.c?rev=330110&r1=330109&r2=330110&view=diff
==
--- cfe/trunk/test/Misc/target-invalid-cpu-note.c (original)
+++ cfe/trunk/test/Misc/target-invalid-cpu-note.c Mon Apr 16 01:10:10 2018
@@ -13,7 +13,7 @@
 // X86: note: valid target CPU values are: i386, i486, winchip-c6, winchip2, 
c3,
 // X86-SAME: i586, pentium, pentium-mmx, pentiumpro, i686, pentium2, pentium3,
 // X86-SAME: pentium3m, pentium-m, c3-2, yonah, pentium4, pentium4m, prescott,
-// X86-SAME: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont,
+// X86-SAME: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, 
goldmont-plus, tremont,
 // X86-SAME: nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge,
 // X86-SAME: core-avx-i, haswell, core-avx2, broadwell, skylake, 
skylake-avx512,
 // X86-SAME: skx, cannonlake, icelake-client, icelake-server, knl, knm, 
lakemont, k6, k6-2, k6-3,
@@ -25,7 +25,7 @@
 // RUN: not %clang_cc1 -triple x86_64--- -target-cpu not-a-cpu -fsyntax-only 
%s 2>&1 | FileCheck %s --check-prefix X86_64
 // X86_64: error: unknown target CPU 'not-a-cpu'
 // X86_64: note: valid target CPU values are: nocona, core2, penryn, bonnell,
-// X86_64-SAME: atom, silvermont, slm, goldmont, nehalem, corei7, westmere,
+// X86_64-SAME: atom, silvermont, slm, goldmont, goldmont-plus, tremont, 
nehalem, corei7, w

r330463 - [X86] WaitPKG intrinsics

2018-04-20 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Fri Apr 20 11:44:33 2018
New Revision: 330463

URL: http://llvm.org/viewvc/llvm-project?rev=330463&view=rev
Log:
[X86] WaitPKG intrinsics

Reviewers: craig.topper, zvi

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D45254

Added:
cfe/trunk/lib/Headers/waitpkgintrin.h   (with props)
cfe/trunk/test/CodeGen/waitpkg.c   (with props)
Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Basic/Targets/X86.cpp
cfe/trunk/lib/Basic/Targets/X86.h
cfe/trunk/lib/Headers/CMakeLists.txt
cfe/trunk/lib/Headers/cpuid.h
cfe/trunk/lib/Headers/x86intrin.h
cfe/trunk/test/Driver/x86-target-features.c
cfe/trunk/test/Preprocessor/predefined-arch-macros.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=330463&r1=330462&r2=330463&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Fri Apr 20 11:44:33 2018
@@ -1880,6 +1880,11 @@ TARGET_BUILTIN(__builtin_ia32_selectpd_5
 TARGET_BUILTIN(__builtin_ia32_monitorx, "vv*UiUi", "", "mwaitx")
 TARGET_BUILTIN(__builtin_ia32_mwaitx, "vUiUiUi", "", "mwaitx")
 
+// WAITPKG
+TARGET_BUILTIN(__builtin_ia32_umonitor, "vv*", "", "waitpkg")
+TARGET_BUILTIN(__builtin_ia32_umwait, "UcUiUiUi", "", "waitpkg")
+TARGET_BUILTIN(__builtin_ia32_tpause, "UcUiUiUi", "", "waitpkg")
+
 // CLZERO
 TARGET_BUILTIN(__builtin_ia32_clzero, "vv*", "", "clzero")
 

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=330463&r1=330462&r2=330463&view=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Fri Apr 20 11:44:33 2018
@@ -2680,6 +2680,8 @@ def mvaes : Flag<["-"], "mvaes">, Group<
 def mno_vaes : Flag<["-"], "mno-vaes">, Group;
 def mvpclmulqdq : Flag<["-"], "mvpclmulqdq">, Group;
 def mno_vpclmulqdq : Flag<["-"], "mno-vpclmulqdq">, 
Group;
+def mwaitpkg : Flag<["-"], "mwaitpkg">, Group;
+def mno_waitpkg : Flag<["-"], "mno-waitpkg">, Group;
 def mxop : Flag<["-"], "mxop">, Group;
 def mno_xop : Flag<["-"], "mno-xop">, Group;
 def mxsave : Flag<["-"], "mxsave">, Group;

Modified: cfe/trunk/lib/Basic/Targets/X86.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.cpp?rev=330463&r1=330462&r2=330463&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/X86.cpp Fri Apr 20 11:44:33 2018
@@ -247,6 +247,7 @@ bool X86TargetInfo::initFeatureMap(
   case CK_Tremont:
 setFeatureEnabledImpl(Features, "cldemote", true);
 setFeatureEnabledImpl(Features, "gfni", true);
+setFeatureEnabledImpl(Features, "waitpkg", true);
 LLVM_FALLTHROUGH;
   case CK_GoldmontPlus:
 setFeatureEnabledImpl(Features, "rdpid", true);
@@ -818,6 +819,8 @@ bool X86TargetInfo::handleTargetFeatures
   HasRetpolineExternalThunk = true;
 } else if (Feature == "+sahf") {
   HasLAHFSAHF = true;
+} else if (Feature == "+waitpkg") {
+  HasWAITPKG = true;
 }
 
 X86SSEEnum Level = llvm::StringSwitch(Feature)
@@ -1172,6 +1175,8 @@ void X86TargetInfo::getTargetDefines(con
 Builder.defineMacro("__RDPID__");
   if (HasCLDEMOTE)
 Builder.defineMacro("__CLDEMOTE__");
+  if (HasWAITPKG)
+Builder.defineMacro("__WAITPKG__");
 
   // Each case falls through to the previous one here.
   switch (SSELevel) {
@@ -1323,6 +1328,7 @@ bool X86TargetInfo::isValidFeatureName(S
   .Case("vaes", true)
   .Case("vpclmulqdq", true)
   .Case("wbnoinvd", true)
+  .Case("waitpkg", true)
   .Case("x87", true)
   .Case("xop", true)
   .Case("xsave", true)
@@ -1399,6 +1405,7 @@ bool X86TargetInfo::hasFeature(StringRef
   .Case("vaes", HasVAES)
   .Case("vpclmulqdq", HasVPCLMULQDQ)
   .Case("wbnoinvd", HasWBNOINVD)
+  .Case("waitpkg", HasWAITPKG)
   .Case("x86", true)
   .Case("x86_32", getTriple().getArch() == llvm::Triple::x86)
   .Case("x86_64", getTriple().getArch() == llvm::Triple::x86_64)

Modified: cfe/trunk/lib/Basic/Targets/X86.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.h?rev=330463&r1=330462&r2=330463&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.h (original)
+++ cfe/trunk/lib/Basic/Targets/X86.h Fri Apr 20 11:44:33 2018
@@ -102,6 +102,7 @@ class LLVM_LIBRARY_VISIBILITY X86TargetI
   bool HasRetpolineExternalThunk = false;
   bool HasLAHFSAHF = false;
   bool HasWBNOINVD = false;
+  bool HasWAITPKG = false;
 
 pr

r331249 - [X86] directstore and movdir64b intrinsics

2018-05-01 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Tue May  1 03:05:42 2018
New Revision: 331249

URL: http://llvm.org/viewvc/llvm-project?rev=331249&view=rev
Log:
[X86] directstore and movdir64b intrinsics

Reviewers: spatel, craig.topper, RKSimon

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D45984

Added:
cfe/trunk/lib/Headers/movdirintrin.h   (with props)
cfe/trunk/test/CodeGen/builtin-movdir.c   (with props)
Modified:
cfe/trunk/docs/ClangCommandLineReference.rst
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/include/clang/Basic/BuiltinsX86_64.def
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Basic/Targets/X86.cpp
cfe/trunk/lib/Basic/Targets/X86.h
cfe/trunk/lib/Headers/CMakeLists.txt
cfe/trunk/lib/Headers/cpuid.h
cfe/trunk/lib/Headers/module.modulemap
cfe/trunk/lib/Headers/x86intrin.h
cfe/trunk/test/Driver/x86-target-features.c
cfe/trunk/test/Preprocessor/predefined-arch-macros.c

Modified: cfe/trunk/docs/ClangCommandLineReference.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ClangCommandLineReference.rst?rev=331249&r1=331248&r2=331249&view=diff
==
--- cfe/trunk/docs/ClangCommandLineReference.rst (original)
+++ cfe/trunk/docs/ClangCommandLineReference.rst Tue May  1 03:05:42 2018
@@ -2496,6 +2496,10 @@ X86
 
 .. option:: -mmovbe, -mno-movbe
 
+.. option:: -mmovdiri, -mno-movdiri
+
+.. option:: -mmovdir64b, -mno-movdir64b
+
 .. option:: -mmpx, -mno-mpx
 
 .. option:: -mmwaitx, -mno-mwaitx

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=331249&r1=331248&r2=331249&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Tue May  1 03:05:42 2018
@@ -1883,6 +1883,10 @@ TARGET_BUILTIN(__builtin_ia32_clzero, "v
 // CLDEMOTE
 TARGET_BUILTIN(__builtin_ia32_cldemote, "vvC*", "", "cldemote")
 
+// Direct Move
+TARGET_BUILTIN(__builtin_ia32_directstore_u32, "vUi*Ui", "", "movdiri")
+TARGET_BUILTIN(__builtin_ia32_movdir64b, "vv*vC*", "", "movdir64b")
+
 // MSVC
 TARGET_HEADER_BUILTIN(_BitScanForward, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_HEADER_BUILTIN(_BitScanReverse, "UcUNi*UNi", "nh", "intrin.h", 
ALL_MS_LANGUAGES, "")

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86_64.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86_64.def?rev=331249&r1=331248&r2=331249&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86_64.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86_64.def Tue May  1 03:05:42 2018
@@ -94,6 +94,7 @@ TARGET_BUILTIN(__builtin_ia32_cvtsi2sd64
 TARGET_BUILTIN(__builtin_ia32_cvtsi2ss64, "V4fV4fLLiIi","","avx512f")
 TARGET_BUILTIN(__builtin_ia32_cvtusi2sd64, "V2dV2dULLiIi","","avx512f")
 TARGET_BUILTIN(__builtin_ia32_cvtusi2ss64, "V4fV4fULLiIi","","avx512f")
+TARGET_BUILTIN(__builtin_ia32_directstore_u64, "vULi*ULi", "", "movdiri")
 
 #undef BUILTIN
 #undef TARGET_BUILTIN

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=331249&r1=331248&r2=331249&view=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Tue May  1 03:05:42 2018
@@ -2660,6 +2660,10 @@ def mlzcnt : Flag<["-"], "mlzcnt">, Grou
 def mno_lzcnt : Flag<["-"], "mno-lzcnt">, Group;
 def mmovbe : Flag<["-"], "mmovbe">, Group;
 def mno_movbe : Flag<["-"], "mno-movbe">, Group;
+def mmovdiri : Flag<["-"], "mmovdiri">, Group;
+def mno_movdiri : Flag<["-"], "mno-movdiri">, Group;
+def mmovdir64b : Flag<["-"], "mmovdir64b">, Group;
+def mno_movdir64b : Flag<["-"], "mno-movdir64b">, Group;
 def mmpx : Flag<["-"], "mmpx">, Group;
 def mno_mpx : Flag<["-"], "mno-mpx">, Group;
 def mmwaitx : Flag<["-"], "mmwaitx">, Group;

Modified: cfe/trunk/lib/Basic/Targets/X86.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.cpp?rev=331249&r1=331248&r2=331249&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/X86.cpp Tue May  1 03:05:42 2018
@@ -246,6 +246,8 @@ bool X86TargetInfo::initFeatureMap(
 
   case CK_Tremont:
 setFeatureEnabledImpl(Features, "cldemote", true);
+setFeatureEnabledImpl(Features, "movdiri", true);
+setFeatureEnabledImpl(Features, "movdir64b", true);
 setFeatureEnabledImpl(Features, "gfni", true);
 setFeatureEnabledImpl(Features, "waitpkg", true);
 LLVM_FALLTHROUGH;
@@ -821,6 +823,10 @@ bool X86TargetI

r331740 - [x86] Introduce the pconfig intrinsic

2018-05-07 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Mon May  7 23:49:41 2018
New Revision: 331740

URL: http://llvm.org/viewvc/llvm-project?rev=331740&view=rev
Log:
[x86] Introduce the pconfig intrinsic

Reviewers: craig.topper, zvi

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D46431

Added:
cfe/trunk/lib/Headers/pconfigintrin.h   (with props)
cfe/trunk/test/Headers/pconfigintin.c   (with props)
Modified:
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Basic/Targets/X86.cpp
cfe/trunk/lib/Basic/Targets/X86.h
cfe/trunk/lib/Headers/CMakeLists.txt
cfe/trunk/lib/Headers/cpuid.h
cfe/trunk/lib/Headers/module.modulemap
cfe/trunk/lib/Headers/x86intrin.h
cfe/trunk/test/Driver/x86-target-features.c
cfe/trunk/test/Preprocessor/predefined-arch-macros.c

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=331740&r1=331739&r2=331740&view=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Mon May  7 23:49:41 2018
@@ -2674,6 +2674,8 @@ def mpku : Flag<["-"], "mpku">, Group, Group;
 def mpclmul : Flag<["-"], "mpclmul">, Group;
 def mno_pclmul : Flag<["-"], "mno-pclmul">, Group;
+def mpconfig : Flag<["-"], "mpconfig">, Group;
+def mno_pconfig : Flag<["-"], "mno-pconfig">, Group;
 def mpopcnt : Flag<["-"], "mpopcnt">, Group;
 def mno_popcnt : Flag<["-"], "mno-popcnt">, Group;
 def mprefetchwt1 : Flag<["-"], "mprefetchwt1">, Group;

Modified: cfe/trunk/lib/Basic/Targets/X86.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.cpp?rev=331740&r1=331739&r2=331740&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/X86.cpp Mon May  7 23:49:41 2018
@@ -154,6 +154,7 @@ bool X86TargetInfo::initFeatureMap(
 break;
 
   case CK_IcelakeServer:
+setFeatureEnabledImpl(Features, "pconfig", true);
 setFeatureEnabledImpl(Features, "wbnoinvd", true);
 LLVM_FALLTHROUGH;
   case CK_IcelakeClient:
@@ -827,6 +828,8 @@ bool X86TargetInfo::handleTargetFeatures
   HasMOVDIRI = true;
 } else if (Feature == "+movdir64b") {
   HasMOVDIR64B = true;
+} else if (Feature == "+pconfig") {
+  HasPCONFIG = true;
 }
 
 X86SSEEnum Level = llvm::StringSwitch(Feature)
@@ -1187,6 +1190,8 @@ void X86TargetInfo::getTargetDefines(con
 Builder.defineMacro("__MOVDIRI__");
   if (HasMOVDIR64B)
 Builder.defineMacro("__MOVDIR64B__");
+  if (HasPCONFIG)
+Builder.defineMacro("__PCONFIG__");
 
   // Each case falls through to the previous one here.
   switch (SSELevel) {
@@ -1316,6 +1321,7 @@ bool X86TargetInfo::isValidFeatureName(S
   .Case("mpx", true)
   .Case("mwaitx", true)
   .Case("pclmul", true)
+  .Case("pconfig", true)
   .Case("pku", true)
   .Case("popcnt", true)
   .Case("prefetchwt1", true)
@@ -1394,6 +1400,7 @@ bool X86TargetInfo::hasFeature(StringRef
   .Case("mpx", HasMPX)
   .Case("mwaitx", HasMWAITX)
   .Case("pclmul", HasPCLMUL)
+  .Case("pconfig", HasPCONFIG)
   .Case("pku", HasPKU)
   .Case("popcnt", HasPOPCNT)
   .Case("prefetchwt1", HasPREFETCHWT1)

Modified: cfe/trunk/lib/Basic/Targets/X86.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.h?rev=331740&r1=331739&r2=331740&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.h (original)
+++ cfe/trunk/lib/Basic/Targets/X86.h Mon May  7 23:49:41 2018
@@ -92,6 +92,7 @@ class LLVM_LIBRARY_VISIBILITY X86TargetI
   bool HasMWAITX = false;
   bool HasCLZERO = false;
   bool HasCLDEMOTE = false;
+  bool HasPCONFIG = false;
   bool HasPKU = false;
   bool HasCLFLUSHOPT = false;
   bool HasCLWB = false;

Modified: cfe/trunk/lib/Headers/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/CMakeLists.txt?rev=331740&r1=331739&r2=331740&view=diff
==
--- cfe/trunk/lib/Headers/CMakeLists.txt (original)
+++ cfe/trunk/lib/Headers/CMakeLists.txt Mon May  7 23:49:41 2018
@@ -73,6 +73,7 @@ set(files
   opencl-c.h
   pkuintrin.h
   pmmintrin.h
+  pconfigintrin.h
   popcntintrin.h
   prfchwintrin.h
   rdseedintrin.h

Modified: cfe/trunk/lib/Headers/cpuid.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/cpuid.h?rev=331740&r1=331739&r2=331740&view=diff
==
--- cfe/trunk/lib/Headers/cpuid.h (original)
+++ cfe/trunk/lib/Headers/cpuid.h Mon May  7 23:49:41 2018
@@ -194,6 +194,7 @@
 /* Features in %edx for leaf 7 sub-leaf 0 */
 #define bit_AVX5124VNNIW  0x0004
 #define bit_AVX5124FMAPS  0x0008
+#define bit_PCONF

r331743 - [x86] Introduce the encl[u|s|v] intrinsics

2018-05-08 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Tue May  8 00:12:34 2018
New Revision: 331743

URL: http://llvm.org/viewvc/llvm-project?rev=331743&view=rev
Log:
[x86] Introduce the encl[u|s|v] intrinsics

Reviewers: craig.topper, zvi

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D46435

Added:
cfe/trunk/lib/Headers/sgxintrin.h   (with props)
cfe/trunk/test/Headers/sgxintrin.c   (with props)
Modified:
cfe/trunk/lib/Headers/CMakeLists.txt
cfe/trunk/lib/Headers/module.modulemap
cfe/trunk/lib/Headers/x86intrin.h

Modified: cfe/trunk/lib/Headers/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/CMakeLists.txt?rev=331743&r1=331742&r2=331743&view=diff
==
--- cfe/trunk/lib/Headers/CMakeLists.txt (original)
+++ cfe/trunk/lib/Headers/CMakeLists.txt Tue May  8 00:12:34 2018
@@ -78,6 +78,7 @@ set(files
   prfchwintrin.h
   rdseedintrin.h
   rtmintrin.h
+  sgxintrin.h
   s390intrin.h
   shaintrin.h
   smmintrin.h

Modified: cfe/trunk/lib/Headers/module.modulemap
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/module.modulemap?rev=331743&r1=331742&r2=331743&view=diff
==
--- cfe/trunk/lib/Headers/module.modulemap (original)
+++ cfe/trunk/lib/Headers/module.modulemap Tue May  8 00:12:34 2018
@@ -68,6 +68,7 @@ module _Builtin_intrinsics [system] [ext
 textual header "waitpkgintrin.h"
 textual header "movdirintrin.h"
 textual header "pconfigintrin.h"
+textual header "sgxintrin.h"
 
 explicit module mm_malloc {
   requires !freestanding

Added: cfe/trunk/lib/Headers/sgxintrin.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/sgxintrin.h?rev=331743&view=auto
==
--- cfe/trunk/lib/Headers/sgxintrin.h (added)
+++ cfe/trunk/lib/Headers/sgxintrin.h Tue May  8 00:12:34 2018
@@ -0,0 +1,70 @@
+/*=== sgxintrin.h - X86 SGX intrinsics configuration ---===
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to 
deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *===---===
+ */
+
+#ifndef __X86INTRIN_H
+#error "Never use  directly; include  instead."
+#endif
+
+#ifndef __SGXINTRIN_H
+#define __SGXINTRIN_H
+
+/* Define the default attributes for the functions in this file. */
+#define __DEFAULT_FN_ATTRS \
+  __attribute__((__always_inline__, __nodebug__,  __target__("sgx")))
+
+static __inline unsigned int __DEFAULT_FN_ATTRS
+_enclu_u32(unsigned int __leaf, __SIZE_TYPE__ __d[])
+{
+  unsigned int __result;
+  __asm__ ("enclu"
+   : "=a" (__result), "=b" (__d[0]), "=c" (__d[1]), "=d" (__d[2])
+   : "a" (__leaf), "b" (__d[0]), "c" (__d[1]), "d" (__d[2])
+   : "cc");
+  return __result;
+}
+
+static __inline unsigned int __DEFAULT_FN_ATTRS
+_encls_u32(unsigned int __leaf, __SIZE_TYPE__ __d[])
+{
+  unsigned int __result;
+  __asm__ ("encls"
+   : "=a" (__result), "=b" (__d[0]), "=c" (__d[1]), "=d" (__d[2])
+   : "a" (__leaf), "b" (__d[0]), "c" (__d[1]), "d" (__d[2])
+   : "cc");
+  return __result;
+}
+
+static __inline unsigned int __DEFAULT_FN_ATTRS
+_enclv_u32(unsigned int __leaf, __SIZE_TYPE__ __d[])
+{
+  unsigned int __result;
+  __asm__ ("enclv"
+   : "=a" (__result), "=b" (__d[0]), "=c" (__d[1]), "=d" (__d[2])
+   : "a" (__leaf), "b" (__d[0]), "c" (__d[1]), "d" (__d[2])
+   : "cc");
+  return __result;
+}
+
+#undef __DEFAULT_FN_ATTRS
+
+#endif

Propchange: cfe/trunk/lib/Headers/sgxintrin.h
--
svn:eol-style = native

Propchange: cfe/trunk/lib/Headers/sgxintrin.h
--
svn:keywords = Author Date Id Rev URL

Propchange: c

r336243 - NFC - typo fix in test/CodeGen/avx512f-builtins.c

2018-07-04 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Wed Jul  4 01:32:02 2018
New Revision: 336243

URL: http://llvm.org/viewvc/llvm-project?rev=336243&view=rev
Log:
NFC - typo fix in test/CodeGen/avx512f-builtins.c

Modified:
cfe/trunk/test/CodeGen/avx512f-builtins.c

Modified: cfe/trunk/test/CodeGen/avx512f-builtins.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512f-builtins.c?rev=336243&r1=336242&r2=336243&view=diff
==
--- cfe/trunk/test/CodeGen/avx512f-builtins.c (original)
+++ cfe/trunk/test/CodeGen/avx512f-builtins.c Wed Jul  4 01:32:02 2018
@@ -2757,12 +2757,12 @@ __m512d test_mm512_maskz_div_round_pd(__
   return _mm512_maskz_div_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | 
_MM_FROUND_NO_EXC); 
 }
 __m512d test_mm512_div_pd(__m512d __a, __m512d __b) {
-  // CHECK-LABLE: @test_mm512_div_pd
+  // CHECK-LABEL: @test_mm512_div_pd
   // CHECK: fdiv <8 x double>
   return _mm512_div_pd(__a,__b); 
 }
 __m512d test_mm512_mask_div_pd(__m512d __w, __mmask8 __u, __m512d __a, __m512d 
__b) {
-  // CHECK-LABLE: @test_mm512_mask_div_pd
+  // CHECK-LABEL: @test_mm512_mask_div_pd
   // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
   return _mm512_mask_div_pd(__w,__u,__a,__b); 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r336262 - NFC - Fix typo in test/Layout/itanium-pack-and-align.cpp

2018-07-04 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Wed Jul  4 04:21:44 2018
New Revision: 336262

URL: http://llvm.org/viewvc/llvm-project?rev=336262&view=rev
Log:
NFC - Fix typo in test/Layout/itanium-pack-and-align.cpp

Modified:
cfe/trunk/test/Layout/itanium-pack-and-align.cpp

Modified: cfe/trunk/test/Layout/itanium-pack-and-align.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Layout/itanium-pack-and-align.cpp?rev=336262&r1=336261&r2=336262&view=diff
==
--- cfe/trunk/test/Layout/itanium-pack-and-align.cpp (original)
+++ cfe/trunk/test/Layout/itanium-pack-and-align.cpp Wed Jul  4 04:21:44 2018
@@ -23,4 +23,4 @@ T t;
 // CHECK-NEXT:  0 |   char x
 // CHECK-NEXT:  1 |   int y
 // CHECK-NEXT:| [sizeof=8, dsize=8, align=8,
-// CHECK-NETX:|  nvsize=8, nvalign=8]
+// CHECK-NEXT:|  nvsize=8, nvalign=8]


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r336263 - NFC - Fix typo in test/CodeGenObjC/gnustep2-class.m

2018-07-04 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Wed Jul  4 04:26:09 2018
New Revision: 336263

URL: http://llvm.org/viewvc/llvm-project?rev=336263&view=rev
Log:
NFC - Fix typo in test/CodeGenObjC/gnustep2-class.m

Modified:
cfe/trunk/test/CodeGenObjC/gnustep2-class.m

Modified: cfe/trunk/test/CodeGenObjC/gnustep2-class.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/gnustep2-class.m?rev=336263&r1=336262&r2=336263&view=diff
==
--- cfe/trunk/test/CodeGenObjC/gnustep2-class.m (original)
+++ cfe/trunk/test/CodeGenObjC/gnustep2-class.m Wed Jul  4 04:26:09 2018
@@ -51,5 +51,5 @@
 // And check that we get a pointer to it in the right place
 // CHECK: @._OBJC_REF_CLASS_X = global 
 // CHECK-SAME: @._OBJC_CLASS_X
-// CHECK-SAMEsection "__objc_class_refs"
+// CHECK-SAME: section "__objc_class_refs"
 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r336264 - NFC - Fix type in builtins-ppc-p9vector.c test

2018-07-04 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Wed Jul  4 04:29:21 2018
New Revision: 336264

URL: http://llvm.org/viewvc/llvm-project?rev=336264&view=rev
Log:
NFC - Fix type in builtins-ppc-p9vector.c test

Modified:
cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c

Modified: cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c?rev=336264&r1=336263&r2=336264&view=diff
==
--- cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c (original)
+++ cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c Wed Jul  4 04:29:21 2018
@@ -983,7 +983,7 @@ vector bool int test86(void) {
 }
 vector bool long long test87(void) {
 // CHECK-BE: @llvm.ppc.vsx.xvtstdcdp(<2 x double> {{.+}}, i32 127)
-// CHECK-BE_NEXT: ret <2 x i64
+// CHECK-BE-NEXT: ret <2 x i64>
 // CHECK: @llvm.ppc.vsx.xvtstdcdp(<2 x double> {{.+}}, i32 127)
 // CHECK-NEXT: ret <2 x i64>
   return vec_test_data_class(vda, __VEC_CLASS_FP_NOT_NORMAL);


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r336355 - [X86] Fix some vector cmp builtins - TRUE/FALSE predicates

2018-07-05 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Thu Jul  5 07:26:56 2018
New Revision: 336355

URL: http://llvm.org/viewvc/llvm-project?rev=336355&view=rev
Log:
[X86] Fix some vector cmp builtins - TRUE/FALSE predicates

This patch removes on optimization used with the TRUE/FALSE
predicates, as was suggested in https://reviews.llvm.org/D45616
for r335339.
The optimization was buggy, since r335339 used it also
for *_mask builtins, without actually applying the mask -- the
mask argument was just ignored.

Reviewers: craig.topper, uriel.k, RKSimon, andrew.w.kaylor, spatel, scanon, 
efriedma

Reviewed By: spatel

Differential Revision: https://reviews.llvm.org/D48715


Modified:
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/test/CodeGen/avx-builtins.c
cfe/trunk/test/CodeGen/avx512f-builtins.c
cfe/trunk/test/CodeGen/avx512vl-builtins.c

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=336355&r1=336354&r2=336355&view=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Thu Jul  5 07:26:56 2018
@@ -10158,43 +10158,38 @@ Value *CodeGenFunction::EmitX86BuiltinEx
 // e.g. both _CMP_GT_OS & _CMP_GT_OQ are translated to FCMP_OGT.
 FCmpInst::Predicate Pred;
 switch (CC) {
-case 0x00: Pred = FCmpInst::FCMP_OEQ; break;
-case 0x01: Pred = FCmpInst::FCMP_OLT; break;
-case 0x02: Pred = FCmpInst::FCMP_OLE; break;
-case 0x03: Pred = FCmpInst::FCMP_UNO; break;
-case 0x04: Pred = FCmpInst::FCMP_UNE; break;
-case 0x05: Pred = FCmpInst::FCMP_UGE; break;
-case 0x06: Pred = FCmpInst::FCMP_UGT; break;
-case 0x07: Pred = FCmpInst::FCMP_ORD; break;
-case 0x08: Pred = FCmpInst::FCMP_UEQ; break;
-case 0x09: Pred = FCmpInst::FCMP_ULT; break;
-case 0x0a: Pred = FCmpInst::FCMP_ULE; break;
-case 0x0c: Pred = FCmpInst::FCMP_ONE; break;
-case 0x0d: Pred = FCmpInst::FCMP_OGE; break;
-case 0x0e: Pred = FCmpInst::FCMP_OGT; break;
-case 0x10: Pred = FCmpInst::FCMP_OEQ; break;
-case 0x11: Pred = FCmpInst::FCMP_OLT; break;
-case 0x12: Pred = FCmpInst::FCMP_OLE; break;
-case 0x13: Pred = FCmpInst::FCMP_UNO; break;
-case 0x14: Pred = FCmpInst::FCMP_UNE; break;
-case 0x15: Pred = FCmpInst::FCMP_UGE; break;
-case 0x16: Pred = FCmpInst::FCMP_UGT; break;
-case 0x17: Pred = FCmpInst::FCMP_ORD; break;
-case 0x18: Pred = FCmpInst::FCMP_UEQ; break;
-case 0x19: Pred = FCmpInst::FCMP_ULT; break;
-case 0x1a: Pred = FCmpInst::FCMP_ULE; break;
-case 0x1c: Pred = FCmpInst::FCMP_ONE; break;
-case 0x1d: Pred = FCmpInst::FCMP_OGE; break;
-case 0x1e: Pred = FCmpInst::FCMP_OGT; break;
-// _CMP_TRUE_UQ, _CMP_TRUE_US produce -1,-1... vector
-// on any input and _CMP_FALSE_OQ, _CMP_FALSE_OS produce 0, 0...
-case 0x0b: // FALSE_OQ
-case 0x1b: // FALSE_OS
-  return llvm::Constant::getNullValue(ConvertType(E->getType()));
-case 0x0f: // TRUE_UQ
-case 0x1f: // TRUE_US
-  return llvm::Constant::getAllOnesValue(ConvertType(E->getType()));
-
+case 0x00: Pred = FCmpInst::FCMP_OEQ;   break;
+case 0x01: Pred = FCmpInst::FCMP_OLT;   break;
+case 0x02: Pred = FCmpInst::FCMP_OLE;   break;
+case 0x03: Pred = FCmpInst::FCMP_UNO;   break;
+case 0x04: Pred = FCmpInst::FCMP_UNE;   break;
+case 0x05: Pred = FCmpInst::FCMP_UGE;   break;
+case 0x06: Pred = FCmpInst::FCMP_UGT;   break;
+case 0x07: Pred = FCmpInst::FCMP_ORD;   break;
+case 0x08: Pred = FCmpInst::FCMP_UEQ;   break;
+case 0x09: Pred = FCmpInst::FCMP_ULT;   break;
+case 0x0a: Pred = FCmpInst::FCMP_ULE;   break;
+case 0x0b: Pred = FCmpInst::FCMP_FALSE; break;
+case 0x0c: Pred = FCmpInst::FCMP_ONE;   break;
+case 0x0d: Pred = FCmpInst::FCMP_OGE;   break;
+case 0x0e: Pred = FCmpInst::FCMP_OGT;   break;
+case 0x0f: Pred = FCmpInst::FCMP_TRUE;  break;
+case 0x10: Pred = FCmpInst::FCMP_OEQ;   break;
+case 0x11: Pred = FCmpInst::FCMP_OLT;   break;
+case 0x12: Pred = FCmpInst::FCMP_OLE;   break;
+case 0x13: Pred = FCmpInst::FCMP_UNO;   break;
+case 0x14: Pred = FCmpInst::FCMP_UNE;   break;
+case 0x15: Pred = FCmpInst::FCMP_UGE;   break;
+case 0x16: Pred = FCmpInst::FCMP_UGT;   break;
+case 0x17: Pred = FCmpInst::FCMP_ORD;   break;
+case 0x18: Pred = FCmpInst::FCMP_UEQ;   break;
+case 0x19: Pred = FCmpInst::FCMP_ULT;   break;
+case 0x1a: Pred = FCmpInst::FCMP_ULE;   break;
+case 0x1b: Pred = FCmpInst::FCMP_FALSE; break;
+case 0x1c: Pred = FCmpInst::FCMP_ONE;   break;
+case 0x1d: Pred = FCmpInst::FCMP_OGE;   break;
+case 0x1e: Pred = FCmpInst::FCMP_OGT;   break;
+case 0x1f: Pred = FCmpInst::FCMP_TRUE;  break;
 default: llvm_unreachable("Unhandled CC");
 }
 

Modified: cfe/trunk/test/CodeGen/avx-builtins.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeG

[clang] 9c48c2f - [NFC] - Typo fix in test/CodeGenCXX/runtime-dllstorage.cpp

2019-12-12 Thread Gabor Buella via cfe-commits

Author: Gabor Buella
Date: 2019-12-12T11:26:54+01:00
New Revision: 9c48c2f9c477007234c5bdad0bc8c0969afa0724

URL: 
https://github.com/llvm/llvm-project/commit/9c48c2f9c477007234c5bdad0bc8c0969afa0724
DIFF: 
https://github.com/llvm/llvm-project/commit/9c48c2f9c477007234c5bdad0bc8c0969afa0724.diff

LOG: [NFC] - Typo fix in test/CodeGenCXX/runtime-dllstorage.cpp

Reviewed By: Jim

Differential Revision: https://reviews.llvm.org/D48921

Added: 


Modified: 
clang/test/CodeGenCXX/runtime-dllstorage.cpp

Removed: 




diff  --git a/clang/test/CodeGenCXX/runtime-dllstorage.cpp 
b/clang/test/CodeGenCXX/runtime-dllstorage.cpp
index c8692b7384be..864a1ab51d65 100644
--- a/clang/test/CodeGenCXX/runtime-dllstorage.cpp
+++ b/clang/test/CodeGenCXX/runtime-dllstorage.cpp
@@ -1,13 +1,13 @@
 // RUN: %clang_cc1 -triple i686-windows-msvc -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -emit-llvm -o - %s | FileCheck 
-allow-deprecated-dag-overlap %s -check-prefix CHECK-MS -check-prefix 
CHECK-MS-DYNAMIC
 // RUN: %clang_cc1 -triple i686-windows-msvc -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -flto-visibility-public-std 
-emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap %s -check-prefix 
CHECK-MS -check-prefix CHECK-MS-STATIC
 
-// RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -emit-llvm -o - %s | FileCheck 
-allow-deprecated-dag-overlap %s -check-prefix CHECK-IA -check-prefix 
CHECK-DYNAMIC-IA -check-prefix CHECK-DYNAMIC-NODECL-IA -check-prefix 
CHECK-DYANMIC-IA-CXA-ATEXIT
+// RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -emit-llvm -o - %s | FileCheck 
-allow-deprecated-dag-overlap %s -check-prefix CHECK-IA -check-prefix 
CHECK-DYNAMIC-IA -check-prefix CHECK-DYNAMIC-NODECL-IA -check-prefix 
CHECK-DYNAMIC-IA-CXA-ATEXIT
 // RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -flto-visibility-public-std 
-emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap %s -check-prefix 
CHECK-IA -check-prefix CHECK-STATIC-IA -check-prefix CHECK-STATIC-NODECL-IA 
-check-prefix CHECK-IA-STATIC-CXA-ATEXIT
-// RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -DIMPORT_DECLARATIONS 
-emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap %s -check-prefix 
CHECK-IA -check-prefix CHECK-DYNAMIC-IA -check-prefix CHECK-DYNAMIC-IMPORT-IA 
-check-prefix CHECK-DYANMIC-IA-CXA-ATEXIT
+// RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -DIMPORT_DECLARATIONS 
-emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap %s -check-prefix 
CHECK-IA -check-prefix CHECK-DYNAMIC-IA -check-prefix CHECK-DYNAMIC-IMPORT-IA 
-check-prefix CHECK-DYNAMIC-IA-CXA-ATEXIT
 // RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -flto-visibility-public-std 
-DIMPORT_DECLARATIONS -emit-llvm -o - %s | FileCheck 
-allow-deprecated-dag-overlap %s -check-prefix CHECK-IA -check-prefix 
CHECK-STATIC-IA -check-prefix CHECK-STATIC-IMPORT-IA -check-prefix 
CHECK-IA-STATIC-CXA-ATEXIT
-// RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -DEXPORT_DECLARATIONS 
-emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap %s -check-prefix 
CHECK-IA -check-prefix CHECK-DYNAMIC-IA -check-prefix 
CHECK-DYANMIC-IA-CXA-ATEXIT
+// RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -DEXPORT_DECLARATIONS 
-emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap %s -check-prefix 
CHECK-IA -check-prefix CHECK-DYNAMIC-IA -check-prefix 
CHECK-DYNAMIC-IA-CXA-ATEXIT
 // RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -flto-visibility-public-std 
-DEXPORT_DECLARATIONS -emit-llvm -o - %s | FileCheck 
-allow-deprecated-dag-overlap %s -check-prefix CHECK-IA -check-prefix 
CHECK-STATIC-IA -check-prefix CHECK-IA-STATIC-CXA-ATEXIT
-// RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -DDECL -emit-llvm -o - %s | 
FileCheck -allow-deprecated-dag-overlap %s -check-prefix CHECK-IA -check-prefix 
CHECK-DYNAMIC-IA -check-prefix CHECK-DYNAMIC-DECL-IA -check-prefix 
CHECK-DYANMIC-IA-CXA-ATEXIT
+// RUN: %clang_cc1 -triple i686-windows-itanium -std=c++11 -fdeclspec 
-fms-compatibility -fexceptions -fcxx-exceptions -DDECL -emit-llvm -o - %s | 
FileCheck -allow-deprecated-dag-overlap %s -check-prefix CHECK-IA -check-prefix 
CHECK-DYNAMIC-IA -check-prefix CHECK-DYNAMIC-DECL-IA -check-prefi

[clang] d8f4991 - [NFC] - Partially revert 9c48c2f9c477007234c

2019-12-12 Thread Gabor Buella via cfe-commits

Author: Gabor Buella
Date: 2019-12-12T12:46:17+01:00
New Revision: d8f49912847dd8a589e992e2e07d79ac77e61408

URL: 
https://github.com/llvm/llvm-project/commit/d8f49912847dd8a589e992e2e07d79ac77e61408
DIFF: 
https://github.com/llvm/llvm-project/commit/d8f49912847dd8a589e992e2e07d79ac77e61408.diff

LOG: [NFC] - Partially revert 9c48c2f9c477007234c

Added: 


Modified: 
clang/test/CodeGenCXX/runtime-dllstorage.cpp

Removed: 




diff  --git a/clang/test/CodeGenCXX/runtime-dllstorage.cpp 
b/clang/test/CodeGenCXX/runtime-dllstorage.cpp
index 864a1ab51d65..694a9b4ea368 100644
--- a/clang/test/CodeGenCXX/runtime-dllstorage.cpp
+++ b/clang/test/CodeGenCXX/runtime-dllstorage.cpp
@@ -134,7 +134,7 @@ void l() {
 // CHECK-DYNAMIC-NODECL-IA-DAG: declare dllimport void 
@__cxa_guard_release(i64*)
 // CHECK-DYNAMIC-IMPORT-IA-DAG: declare dllimport void 
@__cxa_guard_release(i64*)
 // CHECK-DYNAMIC-EXPORT-IA-DAG: declare dllimport void 
@__cxa_guard_release(i64*)
-// CHECK-DYNAMIC-IA-DAG: declare dllimport void @_ZSt9terminatev()
+// CHECK-DYANMIC-IA-DAG: declare dllimport void @_ZSt9terminatev()
 // CHECK-DYNAMIC-NODECL-IA-DAG: declare dso_local void @_ZSt9terminatev()
 // CHECK-DYNAMIC-IMPORT-IA-DAG: declare dllimport void @_ZSt9terminatev()
 // CHECK-DYNAMIC-EXPORT-IA-DAG: declare dso_local dllexport void 
@_ZSt9terminatev()



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r329689 - CodeGen tests - typo fixes NFC

2018-04-10 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Tue Apr 10 04:20:05 2018
New Revision: 329689

URL: http://llvm.org/viewvc/llvm-project?rev=329689&view=rev
Log:
CodeGen tests - typo fixes NFC

Modified:
cfe/trunk/test/CodeGen/avx512-reduceMinMaxIntrin.c
cfe/trunk/test/CodeGen/avx512f-builtins.c

Modified: cfe/trunk/test/CodeGen/avx512-reduceMinMaxIntrin.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512-reduceMinMaxIntrin.c?rev=329689&r1=329688&r2=329689&view=diff
==
--- cfe/trunk/test/CodeGen/avx512-reduceMinMaxIntrin.c (original)
+++ cfe/trunk/test/CodeGen/avx512-reduceMinMaxIntrin.c Tue Apr 10 04:20:05 2018
@@ -227,7 +227,7 @@ double test_mm512_reduce_max_pd(__m512d
 // CHECK:   [[TMP6:%.*]] = load <8 x i64>, <8 x i64>* [[__B_ADDR_I_I]], align 
64
 // CHECK:   store <8 x i64> zeroinitializer, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I_I]], align 64
 // CHECK:   [[TMP7:%.*]] = load <8 x i64>, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I_I]], align 64
-// CHECK:   [[TMP8:%.*]] = icmp sgt <8 x i64> [[TMP5]], [[TMP6]]
+// CHECK:   [[TMP8:%.*]] = icmp slt <8 x i64> [[TMP5]], [[TMP6]]
 // CHECK:   [[TMP9:%.*]] = select <8 x i1> [[TMP8]], <8 x i64> [[TMP5]], <8 x 
i64> [[TMP6]]
 // CHECK:   store <8 x i64> [[TMP9]], <8 x i64>* [[__V_ADDR_I]], align 64
 // CHECK:   [[TMP10:%.*]] = load <8 x i64>, <8 x i64>* [[__V_ADDR_I]], align 64
@@ -242,7 +242,7 @@ double test_mm512_reduce_max_pd(__m512d
 // CHECK:   [[TMP15:%.*]] = load <8 x i64>, <8 x i64>* [[__B_ADDR_I13_I]], 
align 64
 // CHECK:   store <8 x i64> zeroinitializer, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I11_I]], align 64
 // CHECK:   [[TMP16:%.*]] = load <8 x i64>, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I11_I]], align 64
-// CHECK:   [[TMP17:%.*]] = icmp sgt <8 x i64> [[TMP14]], [[TMP15]]
+// CHECK:   [[TMP17:%.*]] = icmp slt <8 x i64> [[TMP14]], [[TMP15]]
 // CHECK:   [[TMP18:%.*]] = select <8 x i1> [[TMP17]], <8 x i64> [[TMP14]], <8 
x i64> [[TMP15]]
 // CHECK:   store <8 x i64> [[TMP18]], <8 x i64>* [[__V_ADDR_I]], align 64
 // CHECK:   [[TMP19:%.*]] = load <8 x i64>, <8 x i64>* [[__V_ADDR_I]], align 64
@@ -257,14 +257,14 @@ double test_mm512_reduce_max_pd(__m512d
 // CHECK:   [[TMP24:%.*]] = load <8 x i64>, <8 x i64>* [[__B_ADDR_I10_I]], 
align 64
 // CHECK:   store <8 x i64> zeroinitializer, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I8_I]], align 64
 // CHECK:   [[TMP25:%.*]] = load <8 x i64>, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I8_I]], align 64
-// CHECK:   [[TMP26:%.*]] = icmp sgt <8 x i64> [[TMP23]], [[TMP24]]
+// CHECK:   [[TMP26:%.*]] = icmp slt <8 x i64> [[TMP23]], [[TMP24]]
 // CHECK:   [[TMP27:%.*]] = select <8 x i1> [[TMP26]], <8 x i64> [[TMP23]], <8 
x i64> [[TMP24]]
 // CHECK:   store <8 x i64> [[TMP27]], <8 x i64>* [[__V_ADDR_I]], align 64
 // CHECK:   [[TMP28:%.*]] = load <8 x i64>, <8 x i64>* [[__V_ADDR_I]], align 64
 // CHECK:   [[VECEXT_I:%.*]] = extractelement <8 x i64> [[TMP28]], i32 0
 // CHECK:   ret i64 [[VECEXT_I]]
 long long test_mm512_reduce_min_epi64(__m512i __W){
-  return _mm512_reduce_max_epi64(__W);
+  return _mm512_reduce_min_epi64(__W);
 }
 
 // CHECK-LABEL: define i64 @test_mm512_reduce_min_epu64(<8 x i64> %__W) #0 {
@@ -294,7 +294,7 @@ long long test_mm512_reduce_min_epi64(__
 // CHECK:   [[TMP6:%.*]] = load <8 x i64>, <8 x i64>* [[__B_ADDR_I_I]], align 
64
 // CHECK:   store <8 x i64> zeroinitializer, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I_I]], align 64
 // CHECK:   [[TMP7:%.*]] = load <8 x i64>, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I_I]], align 64
-// CHECK:   [[TMP8:%.*]] = icmp ugt <8 x i64> [[TMP5]], [[TMP6]]
+// CHECK:   [[TMP8:%.*]] = icmp ult <8 x i64> [[TMP5]], [[TMP6]]
 // CHECK:   [[TMP9:%.*]] = select <8 x i1> [[TMP8]], <8 x i64> [[TMP5]], <8 x 
i64> [[TMP6]]
 // CHECK:   store <8 x i64> [[TMP9]], <8 x i64>* [[__V_ADDR_I]], align 64
 // CHECK:   [[TMP10:%.*]] = load <8 x i64>, <8 x i64>* [[__V_ADDR_I]], align 64
@@ -309,7 +309,7 @@ long long test_mm512_reduce_min_epi64(__
 // CHECK:   [[TMP15:%.*]] = load <8 x i64>, <8 x i64>* [[__B_ADDR_I13_I]], 
align 64
 // CHECK:   store <8 x i64> zeroinitializer, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I11_I]], align 64
 // CHECK:   [[TMP16:%.*]] = load <8 x i64>, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I11_I]], align 64
-// CHECK:   [[TMP17:%.*]] = icmp ugt <8 x i64> [[TMP14]], [[TMP15]]
+// CHECK:   [[TMP17:%.*]] = icmp ult <8 x i64> [[TMP14]], [[TMP15]]
 // CHECK:   [[TMP18:%.*]] = select <8 x i1> [[TMP17]], <8 x i64> [[TMP14]], <8 
x i64> [[TMP15]]
 // CHECK:   store <8 x i64> [[TMP18]], <8 x i64>* [[__V_ADDR_I]], align 64
 // CHECK:   [[TMP19:%.*]] = load <8 x i64>, <8 x i64>* [[__V_ADDR_I]], align 64
@@ -324,14 +324,14 @@ long long test_mm512_reduce_min_epi64(__
 // CHECK:   [[TMP24:%.*]] = load <8 x i64>, <8 x i64>* [[__B_ADDR_I10_I]], 
align 64
 // CHECK:   store <8 x i64> zeroinitializer, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I8_I]], align 64
 // CHECK:   [[TMP25:%.*]] = load <8 x i64>, <8 x i64>* 
[[_COMPOUNDLITERAL_I_I8_I]], align 64
-// CHECK:  

r329701 - [X86] Disable SGX for Skylake Server

2018-04-10 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Tue Apr 10 07:04:21 2018
New Revision: 329701

URL: http://llvm.org/viewvc/llvm-project?rev=329701&view=rev
Log:
[X86] Disable SGX for Skylake Server

Reviewers: craig.topper, zvi, echristo

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D45058


Modified:
cfe/trunk/lib/Basic/Targets/X86.cpp

Modified: cfe/trunk/lib/Basic/Targets/X86.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.cpp?rev=329701&r1=329700&r2=329701&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/X86.cpp Tue Apr 10 07:04:21 2018
@@ -182,7 +182,8 @@ bool X86TargetInfo::initFeatureMap(
 setFeatureEnabledImpl(Features, "xsavec", true);
 setFeatureEnabledImpl(Features, "xsaves", true);
 setFeatureEnabledImpl(Features, "mpx", true);
-setFeatureEnabledImpl(Features, "sgx", true);
+if (Kind != CK_SkylakeServer) // SKX inherits all SKL features, except SGX
+  setFeatureEnabledImpl(Features, "sgx", true);
 setFeatureEnabledImpl(Features, "clflushopt", true);
 setFeatureEnabledImpl(Features, "rtm", true);
 LLVM_FALLTHROUGH;


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r329710 - [X86] Disable SGX for Skylake Server - CPP test

2018-04-10 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Tue Apr 10 08:03:03 2018
New Revision: 329710

URL: http://llvm.org/viewvc/llvm-project?rev=329710&view=rev
Log:
[X86] Disable SGX for Skylake Server - CPP test

Summary: Fix test case - corresponding to r329701

Reviewers: craig.topper, davezarzycki

Reviewed By: davezarzycki

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D45488

Modified:
cfe/trunk/test/Preprocessor/predefined-arch-macros.c

Modified: cfe/trunk/test/Preprocessor/predefined-arch-macros.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/predefined-arch-macros.c?rev=329710&r1=329709&r2=329710&view=diff
==
--- cfe/trunk/test/Preprocessor/predefined-arch-macros.c (original)
+++ cfe/trunk/test/Preprocessor/predefined-arch-macros.c Tue Apr 10 08:03:03 
2018
@@ -892,7 +892,7 @@
 // CHECK_SKX_M32: #define __RDRND__ 1
 // CHECK_SKX_M32: #define __RDSEED__ 1
 // CHECK_SKX_M32: #define __RTM__ 1
-// CHECK_SKX_M32: #define __SGX__ 1
+// CHECK_SKX_M32-NOT: #define __SGX__ 1
 // CHECK_SKX_M32: #define __SSE2__ 1
 // CHECK_SKX_M32: #define __SSE3__ 1
 // CHECK_SKX_M32: #define __SSE4_1__ 1
@@ -937,7 +937,7 @@
 // CHECK_SKX_M64: #define __RDRND__ 1
 // CHECK_SKX_M64: #define __RDSEED__ 1
 // CHECK_SKX_M64: #define __RTM__ 1
-// CHECK_SKX_M64: #define __SGX__ 1
+// CHECK_SKX_M64-NOT: #define __SGX__ 1
 // CHECK_SKX_M64: #define __SSE2_MATH__ 1
 // CHECK_SKX_M64: #define __SSE2__ 1
 // CHECK_SKX_M64: #define __SSE3__ 1


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r329741 - [X86] Split up -march=icelake to -client & -server

2018-04-10 Thread Gabor Buella via cfe-commits
Author: gbuella
Date: Tue Apr 10 11:58:26 2018
New Revision: 329741

URL: http://llvm.org/viewvc/llvm-project?rev=329741&view=rev
Log:
[X86] Split up -march=icelake to -client & -server

Reviewers: craig.topper, zvi, echristo

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D45056


Modified:
cfe/trunk/include/clang/Basic/X86Target.def
cfe/trunk/lib/Basic/Targets/X86.cpp
cfe/trunk/test/Driver/x86-march.c
cfe/trunk/test/Frontend/x86-target-cpu.c
cfe/trunk/test/Misc/target-invalid-cpu-note.c
cfe/trunk/test/Preprocessor/predefined-arch-macros.c

Modified: cfe/trunk/include/clang/Basic/X86Target.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/X86Target.def?rev=329741&r1=329740&r2=329741&view=diff
==
--- cfe/trunk/include/clang/Basic/X86Target.def (original)
+++ cfe/trunk/include/clang/Basic/X86Target.def Tue Apr 10 11:58:26 2018
@@ -149,7 +149,11 @@ PROC_WITH_FEAT(Cannonlake, "cannonlake",
 
 /// \name Icelake Client
 /// Icelake client microarchitecture based processors.
-PROC(Icelake, "icelake", PROC_64_BIT)
+PROC(IcelakeClient, "icelake-client", PROC_64_BIT)
+
+/// \name Icelake Server
+/// Icelake server microarchitecture based processors.
+PROC(IcelakeServer, "icelake-server", PROC_64_BIT)
 
 /// \name Knights Landing
 /// Knights Landing processor.

Modified: cfe/trunk/lib/Basic/Targets/X86.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/X86.cpp?rev=329741&r1=329740&r2=329741&view=diff
==
--- cfe/trunk/lib/Basic/Targets/X86.cpp (original)
+++ cfe/trunk/lib/Basic/Targets/X86.cpp Tue Apr 10 11:58:26 2018
@@ -153,7 +153,8 @@ bool X86TargetInfo::initFeatureMap(
 setFeatureEnabledImpl(Features, "mmx", true);
 break;
 
-  case CK_Icelake:
+  case CK_IcelakeServer:
+  case CK_IcelakeClient:
 setFeatureEnabledImpl(Features, "vaes", true);
 setFeatureEnabledImpl(Features, "gfni", true);
 setFeatureEnabledImpl(Features, "vpclmulqdq", true);
@@ -932,7 +933,8 @@ void X86TargetInfo::getTargetDefines(con
   case CK_SkylakeClient:
   case CK_SkylakeServer:
   case CK_Cannonlake:
-  case CK_Icelake:
+  case CK_IcelakeClient:
+  case CK_IcelakeServer:
 // FIXME: Historically, we defined this legacy name, it would be nice to
 // remove it at some point. We've never exposed fine-grained names for
 // recent primary x86 CPUs, and we should keep it that way.

Modified: cfe/trunk/test/Driver/x86-march.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/x86-march.c?rev=329741&r1=329740&r2=329741&view=diff
==
--- cfe/trunk/test/Driver/x86-march.c (original)
+++ cfe/trunk/test/Driver/x86-march.c Tue Apr 10 11:58:26 2018
@@ -60,9 +60,13 @@
 // RUN:   | FileCheck %s -check-prefix=cannonlake
 // cannonlake: "-target-cpu" "cannonlake"
 //
-// RUN: %clang -target x86_64-unknown-unknown -c -### %s -march=icelake 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=icelake
-// icelake: "-target-cpu" "icelake"
+// RUN: %clang -target x86_64-unknown-unknown -c -### %s -march=icelake-client 
2>&1 \
+// RUN:   | FileCheck %s -check-prefix=icelake-client
+// icelake-client: "-target-cpu" "icelake-client"
+//
+// RUN: %clang -target x86_64-unknown-unknown -c -### %s -march=icelake-server 
2>&1 \
+// RUN:   | FileCheck %s -check-prefix=icelake-server
+// icelake-server: "-target-cpu" "icelake-server"
 //
 // RUN: %clang -target x86_64-unknown-unknown -c -### %s -march=lakemont 2>&1 \
 // RUN:   | FileCheck %s -check-prefix=lakemont

Modified: cfe/trunk/test/Frontend/x86-target-cpu.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/x86-target-cpu.c?rev=329741&r1=329740&r2=329741&view=diff
==
--- cfe/trunk/test/Frontend/x86-target-cpu.c (original)
+++ cfe/trunk/test/Frontend/x86-target-cpu.c Tue Apr 10 11:58:26 2018
@@ -13,7 +13,8 @@
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu skylake-avx512 
-verify %s
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu skx -verify %s
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu cannonlake 
-verify %s
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu icelake -verify 
%s
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu icelake-client 
-verify %s
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu icelake-server 
-verify %s
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu knl -verify %s
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu knm -verify %s
 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-cpu bonnell -verify 
%s

Modified: cfe/trunk/test/Misc/target-invalid-cpu-note.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/