]> granicus.if.org Git - clang/commitdiff
Change __builtin_ia32_bextri_u64 to take an i64imm to match up with LLVM backend...
authorCraig Topper <craig.topper@gmail.com>
Thu, 3 Oct 2013 04:21:19 +0000 (04:21 +0000)
committerCraig Topper <craig.topper@gmail.com>
Thu, 3 Oct 2013 04:21:19 +0000 (04:21 +0000)
An explicit cast is still needed in tbmintrin.h to convert any big integer down to i32imm.

Patch from Yunzhong Gao.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191872 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/BuiltinsX86.def
lib/Headers/tbmintrin.h
test/CodeGen/tbm-builtins.c

index b86e1a372d2053e44da932e71d50b41fdf0c7c3b..dea1cc6b16d5c08a9d0f6f33d9f64f2e7c4576e1 100644 (file)
@@ -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", "")
index 51c83f258ff39065adac0063b72f3eda04e7b719..56e13be9cffbd6ee39bf28f7015d565a102296de 100644 (file)
@@ -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__))
index b879e76ae2e523a65a117f69487df6178f89ccaa..109c7f897a2c5f7aa668a826308406df2755ccd3 100644 (file)
@@ -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);