]> granicus.if.org Git - clang/commitdiff
Add XTEST intrinsic defined in TSX extension
authorMichael Liao <michael.liao@intel.com>
Fri, 29 Mar 2013 05:14:06 +0000 (05:14 +0000)
committerMichael Liao <michael.liao@intel.com>
Fri, 29 Mar 2013 05:14:06 +0000 (05:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178330 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/BuiltinsX86.def
lib/Headers/immintrin.h
test/CodeGen/rtm-builtins.c

index 5b46f8e6ad11975160eb74d82eef2b8e49601b54..c9f7b0583579aa8720f7dafc4f8e5f8912d494c5 100644 (file)
@@ -739,5 +739,6 @@ BUILTIN(__builtin_ia32_vfrczpd256, "V4dV4d", "")
 BUILTIN(__builtin_ia32_xbegin, "i", "")
 BUILTIN(__builtin_ia32_xend, "v", "")
 BUILTIN(__builtin_ia32_xabort, "vIc", "")
+BUILTIN(__builtin_ia32_xtest, "i", "")
 
 #undef BUILTIN
index cd733bfc71d343558ed9fe29dbd641c3c8b3bdb6..fea7c3ba29f1c1f628442d07151d88cc8e81d1ab 100644 (file)
@@ -102,4 +102,13 @@ _rdrand64_step(unsigned long long *__p)
 #include <rtmintrin.h>
 #endif
 
+/* FIXME: check __HLE__ as well when HLE is supported. */
+#if defined (__RTM__)
+static __inline__ int __attribute__((__always_inline__, __nodebug__))
+_xtest(void)
+{
+  return __builtin_ia32_xtest();
+}
+#endif
+
 #endif /* __IMMINTRIN_H */
index c4939a9a3d9fc4669b788f7513eae0fb498b51ae..5660d8e241430107145e0e02a42c871184afbee0 100644 (file)
@@ -21,3 +21,8 @@ test_xabort(void) {
   // CHECK: void @llvm.x86.xabort(i8 2)
   _xabort(2);
 }
+
+unsigned int test_xtest(void) {
+  // CHECK: i32 @llvm.x86.xtest()
+  return _xtest();
+}