[PATCH] D15568: [X86] Add signed aliases for popcnt intrinsics
Michael Kuperstein via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 16 06:13:17 PST 2015
mkuper updated this revision to Diff 42999.
mkuper added a comment.
And now, with a test that actually checks what it ought to check.
http://reviews.llvm.org/D15568
Files:
lib/Headers/popcntintrin.h
test/CodeGen/popcnt-builtins.c
Index: lib/Headers/popcntintrin.h
===================================================================
--- lib/Headers/popcntintrin.h
+++ lib/Headers/popcntintrin.h
@@ -33,12 +33,24 @@
return __builtin_popcount(__A);
}
+static __inline__ int __DEFAULT_FN_ATTRS
+_popcnt32(int __A)
+{
+ return __builtin_popcount(__A);
+}
+
#ifdef __x86_64__
static __inline__ long long __DEFAULT_FN_ATTRS
_mm_popcnt_u64(unsigned long long __A)
{
return __builtin_popcountll(__A);
}
+
+static __inline__ long long __DEFAULT_FN_ATTRS
+_popcnt64(long long __A)
+{
+ return __builtin_popcountll(__A);
+}
#endif /* __x86_64__ */
#undef __DEFAULT_FN_ATTRS
Index: test/CodeGen/popcnt-builtins.c
===================================================================
--- test/CodeGen/popcnt-builtins.c
+++ test/CodeGen/popcnt-builtins.c
@@ -6,11 +6,21 @@
#include <x86intrin.h>
unsigned int test_mm_popcnt_u32(unsigned int __X) {
- // CHECK: @llvm.ctpop.i32
+ //CHECK: call i32 @llvm.ctpop.i32
return _mm_popcnt_u32(__X);
}
+unsigned int test_popcnt_32(int __X) {
+ //CHECK: call i32 @llvm.ctpop.i32
+ return _popcnt32(__X);
+}
+
unsigned long long test_mm_popcnt_u64(unsigned long long __X) {
- // CHECK: @llvm.ctpop.i64
+ //CHECK: call i64 @llvm.ctpop.i64
return _mm_popcnt_u64(__X);
}
+
+unsigned long long test_popcnt_64(long long __X) {
+ //CHECK: call i64 @llvm.ctpop.i64
+ return _popcnt64(__X);
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D15568.42999.patch
Type: text/x-patch
Size: 1467 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151216/552efbc7/attachment.bin>
More information about the llvm-commits
mailing list