]> granicus.if.org Git - clang/commitdiff
[X86] Add 'pause' builtin that's already in llvm and use it instead of inline assembl...
authorCraig Topper <craig.topper@gmail.com>
Wed, 11 Nov 2015 08:13:33 +0000 (08:13 +0000)
committerCraig Topper <craig.topper@gmail.com>
Wed, 11 Nov 2015 08:13:33 +0000 (08:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252712 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/BuiltinsX86.def
lib/Headers/emmintrin.h
test/CodeGen/sse-builtins.c

index b4c010ed83736ea62eef99039116eb38210ac4f4..cd682f1cf18acbf348a71566f1f9efabaf421346 100644 (file)
@@ -336,6 +336,7 @@ TARGET_BUILTIN(__builtin_ia32_cvttps2dq, "V4iV4f", "", "sse2")
 TARGET_BUILTIN(__builtin_ia32_clflush, "vvC*", "", "sse2")
 TARGET_BUILTIN(__builtin_ia32_lfence, "v", "", "sse2")
 TARGET_BUILTIN(__builtin_ia32_mfence, "v", "", "sse2")
+TARGET_BUILTIN(__builtin_ia32_pause, "v", "", "sse2")
 TARGET_BUILTIN(__builtin_ia32_storedqu, "vc*V16c", "", "sse2")
 TARGET_BUILTIN(__builtin_ia32_pmuludq128, "V2LLiV4iV4i", "", "sse2")
 TARGET_BUILTIN(__builtin_ia32_psraw128, "V8sV8sV8s", "", "sse2")
index 114aa0f3511dd03ef6efdd7a406e11df12d46149..cfc2c7161460849ad139b67d3d9ee74d1a96d06d 100644 (file)
@@ -1481,7 +1481,7 @@ _mm_castsi128_pd(__m128i __a)
 static __inline__ void __DEFAULT_FN_ATTRS
 _mm_pause(void)
 {
-  __asm__ volatile ("pause");
+  __builtin_ia32_pause();
 }
 
 #undef __DEFAULT_FN_ATTRS
index fce57b665f2fb875ea076fe1384452191fcb65ff..0f964e8055997354601dc57e1d2014dbdeb5511a 100644 (file)
@@ -513,3 +513,9 @@ __m64 test_mm_mul_su32(__m64 __a, __m64 __b) {
   // CHECK @llvm.x86.mmx.pmulu.dq(x86_mmx %{{.*}}, x86_mmx %{{.*}})
   return _mm_mul_su32(__a, __b);
 }
+
+void test_mm_pause() {
+  // CHECK-LABEL: @test_mm_pause
+  // CHECK @llvm.x86.sse2.pause()
+  return _mm_pause();
+}