[cfe-commits] r98323 - in /cfe/trunk: include/clang/Basic/BuiltinsX86.def lib/Headers/smmintrin.h

Eric Christopher echristo at apple.com
Thu Mar 11 17:22:34 PST 2010


Author: echristo
Date: Thu Mar 11 19:22:33 2010
New Revision: 98323

URL: http://llvm.org/viewvc/llvm-project?rev=98323&view=rev
Log:
Add SSE4 packed integer comparisons and corresponding intrinsics.

Modified:
    cfe/trunk/include/clang/Basic/BuiltinsX86.def
    cfe/trunk/lib/Headers/smmintrin.h

Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=98323&r1=98322&r2=98323&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Thu Mar 11 19:22:33 2010
@@ -287,6 +287,9 @@
 BUILTIN(__builtin_ia32_dpps, "V4fV4fV4fi", "")
 BUILTIN(__builtin_ia32_dppd, "V2dV2dV2di", "")
 BUILTIN(__builtin_ia32_movntdqa, "V2LLiV2LLi*", "")
+BUILTIN(__builtin_ia32_ptestz128, "iV2LLiV2LLi", "")
+BUILTIN(__builtin_ia32_ptestc128, "iV2LLiV2LLi", "")
+BUILTIN(__builtin_ia32_ptestnzc128, "iV2LLiV2LLi", "")
 
 
 #undef BUILTIN

Modified: cfe/trunk/lib/Headers/smmintrin.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/smmintrin.h?rev=98323&r1=98322&r2=98323&view=diff
==============================================================================
--- cfe/trunk/lib/Headers/smmintrin.h (original)
+++ cfe/trunk/lib/Headers/smmintrin.h Thu Mar 11 19:22:33 2010
@@ -223,6 +223,29 @@
                                                   __a[N];}))
 #endif /* __x86_64 */
 
+/* SSE4 128-bit Packed Integer Comparisons.  */
+static inline int __attribute__((__always_inline__, __nodebug__))
+_mm_testz_si128(__m128i __M, __m128i __V)
+{
+  return __builtin_ia32_ptestz128((__v2di)__M, (__v2di)__V);
+}
+
+static inline int __attribute__((__always_inline__, __nodebug__))
+_mm_testc_si128(__m128i __M, __m128i __V)
+{
+  return __builtin_ia32_ptestc128((__v2di)__M, (__v2di)__V);
+}
+
+static inline int __attribute__((__always_inline__, __nodebug__))
+_mm_testnzc_si128(__m128i __M, __m128i __V)
+{
+  return __builtin_ia32_ptestnzc128((__v2di)__M, (__v2di)__V);
+}
+
+#define _mm_test_all_ones(V) _mm_testc_si128((V), _mm_cmpeq_epi32((V), (V)))
+#define _mm_test_mix_ones_zeros(M, V) _mm_testnzc_si128((M), (V))
+#define _mm_test_all_zeros(M, V) _mm_testz_si128 ((V), (V))
+
 #endif /* __SSE4_1__ */
 
 #endif /* _SMMINTRIN_H */





More information about the cfe-commits mailing list