Re: r310191 - [X86] Enable isel to use the PAUSE instruction even when SSE2 is disabled. Clang part

2017-08-07 Thread Hans Wennborg via cfe-commits
On Sat, Aug 5, 2017 at 4:35 PM, Craig Topper via cfe-commits
 wrote:
> Author: ctopper
> Date: Sat Aug  5 16:35:54 2017
> New Revision: 310191
>
> URL: http://llvm.org/viewvc/llvm-project?rev=310191=rev
> Log:
> [X86] Enable isel to use the PAUSE instruction even when SSE2 is disabled. 
> Clang part
>
> Summary:
> On older processors this instruction encoding is treated as a NOP.
>
> MSVC doesn't disable intrinsics based on features the way clang/gcc does. 
> Because the PAUSE instruction encoding doesn't crash older processors, some 
> software out there uses these intrinsics without checking for SSE2.
>
> This change also seems to also be consistent with gcc behavior.
>
> Fixes PR34079
>
> Reviewers: RKSimon, zvi
>
> Reviewed By: RKSimon
>
> Subscribers: cfe-commits
>
> Differential Revision: https://reviews.llvm.org/D36362

Merged to 5.0 in r310294.
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r310191 - [X86] Enable isel to use the PAUSE instruction even when SSE2 is disabled. Clang part

2017-08-05 Thread Craig Topper via cfe-commits
Author: ctopper
Date: Sat Aug  5 16:35:54 2017
New Revision: 310191

URL: http://llvm.org/viewvc/llvm-project?rev=310191=rev
Log:
[X86] Enable isel to use the PAUSE instruction even when SSE2 is disabled. 
Clang part

Summary:
On older processors this instruction encoding is treated as a NOP.

MSVC doesn't disable intrinsics based on features the way clang/gcc does. 
Because the PAUSE instruction encoding doesn't crash older processors, some 
software out there uses these intrinsics without checking for SSE2.

This change also seems to also be consistent with gcc behavior.

Fixes PR34079

Reviewers: RKSimon, zvi

Reviewed By: RKSimon

Subscribers: cfe-commits

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

Added:
cfe/trunk/test/CodeGen/pause.c
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=310191=310190=310191=diff
==
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Sat Aug  5 16:35:54 2017
@@ -338,8 +338,8 @@ TARGET_BUILTIN(__builtin_ia32_lfence, "v
 TARGET_HEADER_BUILTIN(_mm_lfence, "v", "h", "emmintrin.h", ALL_LANGUAGES, 
"sse2")
 TARGET_BUILTIN(__builtin_ia32_mfence, "v", "", "sse2")
 TARGET_HEADER_BUILTIN(_mm_mfence, "v", "h", "emmintrin.h", ALL_LANGUAGES, 
"sse2")
-TARGET_BUILTIN(__builtin_ia32_pause, "v", "", "sse2")
-TARGET_HEADER_BUILTIN(_mm_pause, "v", "h", "emmintrin.h", ALL_LANGUAGES, 
"sse2")
+TARGET_BUILTIN(__builtin_ia32_pause, "v", "", "")
+TARGET_HEADER_BUILTIN(_mm_pause, "v", "h", "emmintrin.h", ALL_LANGUAGES, "")
 TARGET_BUILTIN(__builtin_ia32_pmuludq128, "V2LLiV4iV4i", "", "sse2")
 TARGET_BUILTIN(__builtin_ia32_psraw128, "V8sV8sV8s", "", "sse2")
 TARGET_BUILTIN(__builtin_ia32_psrad128, "V4iV4iV4i", "", "sse2")

Added: cfe/trunk/test/CodeGen/pause.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/pause.c?rev=310191=auto
==
--- cfe/trunk/test/CodeGen/pause.c (added)
+++ cfe/trunk/test/CodeGen/pause.c Sat Aug  5 16:35:54 2017
@@ -0,0 +1,11 @@
+// RUN: %clang_cc1 -ffreestanding %s -triple=i386-pc-win32 -target-feature 
-sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s
+// RUN: %clang_cc1 -ffreestanding %s -triple=i386-pc-win32 -target-feature 
+sse2 -emit-llvm -o - -Wall -Werror | FileCheck %s
+
+
+#include 
+
+void test_mm_pause() {
+  // CHECK-LABEL: test_mm_pause
+  // CHECK: call void @llvm.x86.sse2.pause()
+  return _mm_pause();
+}


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