diff options
author | Craig Topper <craig.topper@gmail.com> | 2013-10-03 04:21:19 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2013-10-03 04:21:19 +0000 |
commit | d867805739ae4444bc7fd5a6dd8001b6704feb9f (patch) | |
tree | 4df0b7dd952ba383961a9ef2009e4064c4b5c094 | |
parent | b01cd1aa747e333b6e60e5f8abec953f9ca9b0e1 (diff) | |
download | bcm5719-llvm-d867805739ae4444bc7fd5a6dd8001b6704feb9f.tar.gz bcm5719-llvm-d867805739ae4444bc7fd5a6dd8001b6704feb9f.zip |
Change __builtin_ia32_bextri_u64 to take an i64imm to match up with LLVM backend changes.
An explicit cast is still needed in tbmintrin.h to convert any big integer down to i32imm.
Patch from Yunzhong Gao.
llvm-svn: 191872
-rw-r--r-- | clang/include/clang/Basic/BuiltinsX86.def | 2 | ||||
-rw-r--r-- | clang/lib/Headers/tbmintrin.h | 2 | ||||
-rw-r--r-- | clang/test/CodeGen/tbm-builtins.c | 5 |
3 files changed, 7 insertions, 2 deletions
diff --git a/clang/include/clang/Basic/BuiltinsX86.def b/clang/include/clang/Basic/BuiltinsX86.def index b86e1a372d2..dea1cc6b16d 100644 --- a/clang/include/clang/Basic/BuiltinsX86.def +++ b/clang/include/clang/Basic/BuiltinsX86.def @@ -644,7 +644,7 @@ BUILTIN(__builtin_ia32_pext_di, "ULLiULLiULLi", "") // TBM BUILTIN(__builtin_ia32_bextri_u32, "UiUiIUi", "") -BUILTIN(__builtin_ia32_bextri_u64, "ULLiULLiIUi", "") +BUILTIN(__builtin_ia32_bextri_u64, "ULLiULLiIULLi", "") BUILTIN(__builtin_ia32_blcfill_u32, "UiUi", "") BUILTIN(__builtin_ia32_blcfill_u64, "ULLiULLi", "") BUILTIN(__builtin_ia32_blci_u32, "UiUi", "") diff --git a/clang/lib/Headers/tbmintrin.h b/clang/lib/Headers/tbmintrin.h index 51c83f258ff..56e13be9cff 100644 --- a/clang/lib/Headers/tbmintrin.h +++ b/clang/lib/Headers/tbmintrin.h @@ -35,7 +35,7 @@ #define __bextri_u32(a, b) (__builtin_ia32_bextri_u32((a), (b))) #ifdef __x86_64__ -#define __bextri_u64(a, b) (__builtin_ia32_bextri_u64((a), (b))) +#define __bextri_u64(a, b) (__builtin_ia32_bextri_u64((a), (int)(b))) #endif static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) diff --git a/clang/test/CodeGen/tbm-builtins.c b/clang/test/CodeGen/tbm-builtins.c index b879e76ae2e..109c7f897a2 100644 --- a/clang/test/CodeGen/tbm-builtins.c +++ b/clang/test/CodeGen/tbm-builtins.c @@ -15,6 +15,11 @@ unsigned long long test__bextri_u64(unsigned long long a) { return __bextri_u64(a, 2); } +unsigned long long test__bextri_u64_bigint(unsigned long long a) { + // CHECK: call i64 @llvm.x86.tbm.bextri.u64 + return __bextri_u64(a, 0x7fffffffffLL); +} + unsigned int test__blcfill_u32(unsigned int a) { // CHECK: call i32 @llvm.x86.tbm.blcfill.u32 return __blcfill_u32(a); |