summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2013-10-03 04:21:19 +0000
committerCraig Topper <craig.topper@gmail.com>2013-10-03 04:21:19 +0000
commitd867805739ae4444bc7fd5a6dd8001b6704feb9f (patch)
tree4df0b7dd952ba383961a9ef2009e4064c4b5c094
parentb01cd1aa747e333b6e60e5f8abec953f9ca9b0e1 (diff)
downloadbcm5719-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.def2
-rw-r--r--clang/lib/Headers/tbmintrin.h2
-rw-r--r--clang/test/CodeGen/tbm-builtins.c5
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);
OpenPOWER on IntegriCloud