[PATCH] [2/2] Change tbm bextr builtin function to take an i64imm parameter instead of i32imm.

Yunzhong Gao Yunzhong_Gao at playstation.sony.com
Wed Oct 2 13:32:04 PDT 2013


ygao added you to the CC list for the revision "[2/2] Change tbm bextr builtin function to take an i64imm parameter instead of i32imm.".

This makes the backend TableGen patterns slightly cleaner. An explicit cast is still needed in tbmintrin.h to convert any big integer down to i32imm. The llvm backend portion of the patch is located here: http://llvm-reviews.chandlerc.com/D1788
- Gao.

http://llvm-reviews.chandlerc.com/D1814

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

Index: lib/Headers/tbmintrin.h
===================================================================
--- lib/Headers/tbmintrin.h
+++ 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__))
Index: test/CodeGen/tbm-builtins.c
===================================================================
--- test/CodeGen/tbm-builtins.c
+++ test/CodeGen/tbm-builtins.c
@@ -15,6 +15,11 @@
   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);
Index: include/clang/Basic/BuiltinsX86.def
===================================================================
--- include/clang/Basic/BuiltinsX86.def
+++ include/clang/Basic/BuiltinsX86.def
@@ -644,7 +644,7 @@
 
 // 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", "")
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D1814.1.patch
Type: text/x-patch
Size: 1529 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131002/91fd2f05/attachment.bin>


More information about the cfe-commits mailing list