From 4442f796a419fea9f714aaeeb39c7a6f54af2f67 Mon Sep 17 00:00:00 2001 From: Michael Liao Date: Fri, 29 Mar 2013 05:14:06 +0000 Subject: [PATCH] Add XTEST intrinsic defined in TSX extension llvm-svn: 178330 --- clang/include/clang/Basic/BuiltinsX86.def | 1 + clang/lib/Headers/immintrin.h | 9 +++++++++ clang/test/CodeGen/rtm-builtins.c | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/clang/include/clang/Basic/BuiltinsX86.def b/clang/include/clang/Basic/BuiltinsX86.def index 5b46f8e..c9f7b05 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 cd733bf..fea7c3b 100644 --- a/clang/lib/Headers/immintrin.h +++ b/clang/lib/Headers/immintrin.h @@ -102,4 +102,13 @@ _rdrand64_step(unsigned long long *__p) #include #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 c4939a9..5660d8e 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(); +} -- 2.7.4