summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Liao <michael.liao@intel.com>2013-03-29 05:14:06 +0000
committerMichael Liao <michael.liao@intel.com>2013-03-29 05:14:06 +0000
commit4442f796a419fea9f714aaeeb39c7a6f54af2f67 (patch)
treec142929a16c275393933bc053ea7a30416bd2f24
parent60f6b28c583435aa82590d88643580f6106bd074 (diff)
downloadbcm5719-llvm-4442f796a419fea9f714aaeeb39c7a6f54af2f67.tar.gz
bcm5719-llvm-4442f796a419fea9f714aaeeb39c7a6f54af2f67.zip
Add XTEST intrinsic defined in TSX extension
llvm-svn: 178330
-rw-r--r--clang/include/clang/Basic/BuiltinsX86.def1
-rw-r--r--clang/lib/Headers/immintrin.h9
-rw-r--r--clang/test/CodeGen/rtm-builtins.c5
3 files changed, 15 insertions, 0 deletions
diff --git a/clang/include/clang/Basic/BuiltinsX86.def b/clang/include/clang/Basic/BuiltinsX86.def
index 5b46f8e6ad1..c9f7b058357 100644
--- a/clang/include/clang/Basic/BuiltinsX86.def
+++ b/clang/include/clang/Basic/BuiltinsX86.def
@@ -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
diff --git a/clang/lib/Headers/immintrin.h b/clang/lib/Headers/immintrin.h
index cd733bfc71d..fea7c3ba29f 100644
--- a/clang/lib/Headers/immintrin.h
+++ b/clang/lib/Headers/immintrin.h
@@ -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 */
diff --git a/clang/test/CodeGen/rtm-builtins.c b/clang/test/CodeGen/rtm-builtins.c
index c4939a9a3d9..5660d8e2414 100644
--- a/clang/test/CodeGen/rtm-builtins.c
+++ b/clang/test/CodeGen/rtm-builtins.c
@@ -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();
+}
OpenPOWER on IntegriCloud