diff options
author | Michael Liao <michael.liao@intel.com> | 2013-03-29 05:14:06 +0000 |
---|---|---|
committer | Michael Liao <michael.liao@intel.com> | 2013-03-29 05:14:06 +0000 |
commit | 4442f796a419fea9f714aaeeb39c7a6f54af2f67 (patch) | |
tree | c142929a16c275393933bc053ea7a30416bd2f24 | |
parent | 60f6b28c583435aa82590d88643580f6106bd074 (diff) | |
download | bcm5719-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.def | 1 | ||||
-rw-r--r-- | clang/lib/Headers/immintrin.h | 9 | ||||
-rw-r--r-- | clang/test/CodeGen/rtm-builtins.c | 5 |
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(); +} |