From: Michael Liao Date: Fri, 29 Mar 2013 05:14:06 +0000 (+0000) Subject: Add XTEST intrinsic defined in TSX extension X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f91210d6f2596645f164684fb1fd804727c9fc0e;p=clang Add XTEST intrinsic defined in TSX extension git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178330 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/BuiltinsX86.def b/include/clang/Basic/BuiltinsX86.def index 5b46f8e6ad..c9f7b05835 100644 --- a/include/clang/Basic/BuiltinsX86.def +++ b/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/lib/Headers/immintrin.h b/lib/Headers/immintrin.h index cd733bfc71..fea7c3ba29 100644 --- a/lib/Headers/immintrin.h +++ b/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/test/CodeGen/rtm-builtins.c b/test/CodeGen/rtm-builtins.c index c4939a9a3d..5660d8e241 100644 --- a/test/CodeGen/rtm-builtins.c +++ b/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(); +}