RE: r354915 - [X86] Add 'znver2' and 'cascadelake' to the __builtin_cpu_is test.

2019-02-26 Thread Topper, Craig via cfe-commits
You're right. It was already there after Ganesh's patch this morning. I hadn't 
updated my clang tree so I thought it was missing. Sorry.

-Original Message-
From: Roman Lebedev [mailto:lebedev...@gmail.com] 
Sent: Tuesday, February 26, 2019 11:29 AM
To: Topper, Craig 
Cc: cfe-commits@lists.llvm.org
Subject: Re: r354915 - [X86] Add 'znver2' and 'cascadelake' to the 
__builtin_cpu_is test.

Doesn't look like this patch added 'znver2'?

On Tue, Feb 26, 2019 at 10:20 PM Craig Topper via cfe-commits
 wrote:
>
> Author: ctopper
> Date: Tue Feb 26 11:20:04 2019
> New Revision: 354915
>
> URL: http://llvm.org/viewvc/llvm-project?rev=354915&view=rev
> Log:
> [X86] Add 'znver2' and 'cascadelake' to the __builtin_cpu_is test.
>
> These are supported by at least libgcc trunk so we can include them now.
>
> Modified:
> cfe/trunk/test/CodeGen/target-builtin-noerror.c
>
> Modified: cfe/trunk/test/CodeGen/target-builtin-noerror.c
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/target-builtin-noerror.c?rev=354915&r1=354914&r2=354915&view=diff
> ==
> --- cfe/trunk/test/CodeGen/target-builtin-noerror.c (original)
> +++ cfe/trunk/test/CodeGen/target-builtin-noerror.c Tue Feb 26 11:20:04 2019
> @@ -98,6 +98,7 @@ void verifycpustrings() {
>(void)__builtin_cpu_is("btver1");
>(void)__builtin_cpu_is("btver2");
>(void)__builtin_cpu_is("cannonlake");
> +  (void)__builtin_cpu_is("cascadelake");
>(void)__builtin_cpu_is("core2");
>(void)__builtin_cpu_is("corei7");
>(void)__builtin_cpu_is("goldmont");
>
>
> ___
> cfe-commits mailing list
> cfe-commits@lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


RE: r351391 - Recommit r351160 "[X86] Make _xgetbv/_xsetbv on non-windows platforms"

2019-01-18 Thread Topper, Craig via cfe-commits
I just committed a change to go back to only definining 
_XCR_XFEATURE_ENABLED_MASK when clang is in MSVC compatibility mode. I don’t 
think I meant to define it outside of that since it doesn’t appear gcc does.

For the other two files, I assume you’re getting a collision of names similar 
to what Benjamin Kramer reported on V8?

From: Jordan Rupprecht [mailto:ruppre...@google.com]
Sent: Friday, January 18, 2019 9:30 AM
To: Topper, Craig 
Cc: cfe-commits@lists.llvm.org
Subject: Re: r351391 - Recommit r351160 "[X86] Make _xgetbv/_xsetbv on 
non-windows platforms"

Hi Craig,
We're seeing issues building a few other things now; notably this part in 
opencv: 
https://github.com/opencv/opencv/blob/master/modules/core/src/system.cpp#L422
#ifdef _XCR_XFEATURE_ENABLED_MASK // requires immintrin.h
xcr0 = (int)_xgetbv(_XCR_XFEATURE_ENABLED_MASK);
=> error: '__builtin_ia32_xgetbv' needs target feature xsave
We can workaround by building with -mavx... but we also have code running on 
non-avx machines that pull in this dependency. (It likely doesn't actually 
*use* the code, but still depends on it compiling as a transitive dep).
Is there a more accurate preprocessor macro (e.g. one that says if xsave is 
available) we could use to selectively disable this?

There are similar breakages here:
https://chromium.googlesource.com/aosp/platform/external/libchrome/+/master/base/cpu.cc#82
https://github.com/google/sling/blob/master/third_party/jit/cpu.cc#L58
Advice there too would be appreciated, if possible :)

On Wed, Jan 16, 2019 at 3:00 PM Craig Topper via cfe-commits 
mailto:cfe-commits@lists.llvm.org>> wrote:
Author: ctopper
Date: Wed Jan 16 14:56:25 2019
New Revision: 351391

URL: http://llvm.org/viewvc/llvm-project?rev=351391&view=rev
Log:
Recommit r351160 "[X86] Make _xgetbv/_xsetbv on non-windows platforms"

V8 has been fixed now.

Modified:
cfe/trunk/include/clang/Basic/BuiltinsX86.def
cfe/trunk/lib/CodeGen/CGBuiltin.cpp
cfe/trunk/lib/Headers/immintrin.h
cfe/trunk/lib/Headers/intrin.h
cfe/trunk/lib/Headers/xsaveintrin.h
cfe/trunk/test/CodeGen/builtins-x86.c
cfe/trunk/test/CodeGen/x86_32-xsave.c
cfe/trunk/test/CodeGen/x86_64-xsave.c
cfe/trunk/test/Headers/ms-intrin.cpp

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=351391&r1=351390&r2=351391&view=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Wed Jan 16 14:56:25 2019
@@ -693,6 +693,10 @@ TARGET_BUILTIN(__builtin_ia32_fxsave, "v
 // XSAVE
 TARGET_BUILTIN(__builtin_ia32_xsave, "vv*ULLi", "n", "xsave")
 TARGET_BUILTIN(__builtin_ia32_xrstor, "vv*ULLi", "n", "xsave")
+TARGET_BUILTIN(__builtin_ia32_xgetbv, "ULLiUi", "n", "xsave")
+TARGET_HEADER_BUILTIN(_xgetbv, "UWiUi", "nh", "immintrin.h", ALL_MS_LANGUAGES, 
"")
+TARGET_BUILTIN(__builtin_ia32_xsetbv, "vUiULLi", "n", "xsave")
+TARGET_HEADER_BUILTIN(_xsetbv, "vUiUWi", "nh", "immintrin.h", 
ALL_MS_LANGUAGES, "")
 TARGET_BUILTIN(__builtin_ia32_xsaveopt, "vv*ULLi", "n", "xsaveopt")
 TARGET_BUILTIN(__builtin_ia32_xrstors, "vv*ULLi", "n", "xsaves")
 TARGET_BUILTIN(__builtin_ia32_xsavec, "vv*ULLi", "n", "xsavec")

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=351391&r1=351390&r2=351391&view=diff
==
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Wed Jan 16 14:56:25 2019
@@ -9833,7 +9833,9 @@ Value *CodeGenFunction::EmitX86BuiltinEx
   case X86::BI__builtin_ia32_xsavec:
   case X86::BI__builtin_ia32_xsavec64:
   case X86::BI__builtin_ia32_xsaves:
-  case X86::BI__builtin_ia32_xsaves64: {
+  case X86::BI__builtin_ia32_xsaves64:
+  case X86::BI__builtin_ia32_xsetbv:
+  case X86::BI_xsetbv: {
 Intrinsic::ID ID;
 #define INTRINSIC_X86_XSAVE_ID(NAME) \
 case X86::BI__builtin_ia32_##NAME: \
@@ -9853,6 +9855,10 @@ Value *CodeGenFunction::EmitX86BuiltinEx
 INTRINSIC_X86_XSAVE_ID(xsavec64);
 INTRINSIC_X86_XSAVE_ID(xsaves);
 INTRINSIC_X86_XSAVE_ID(xsaves64);
+INTRINSIC_X86_XSAVE_ID(xsetbv);
+case X86::BI_xsetbv:
+  ID = Intrinsic::x86_xsetbv;
+  break;
 }
 #undef INTRINSIC_X86_XSAVE_ID
 Value *Mhi = Builder.CreateTrunc(
@@ -9862,6 +9868,9 @@ Value *CodeGenFunction::EmitX86BuiltinEx
 Ops.push_back(Mlo);
 return Builder.CreateCall(CGM.getIntrinsic(ID), Ops);
   }
+  case X86::BI__builtin_ia32_xgetbv:
+  case X86::BI_xgetbv:
+return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_xgetbv), Ops);
   case X86::BI__builtin_ia32_storedqudi128_mask:
   case X86::BI__builtin_ia32_storedqusi128_mask:
   case X86::BI__builtin_ia32_storedquhi128_mask:

Modified: cfe/trunk/lib/Headers/immi