aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/abmintrin.h
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2009-12-02 05:48:18 +0000
committerSebastian Pop <spop@gcc.gnu.org>2009-12-02 05:48:18 +0000
commit6a72cb46b22baf7fbb3f5c2eff0b44b37da1487c (patch)
tree646a88cd9f58037518ca2e63da3b65f92dcb01a4 /gcc/config/i386/abmintrin.h
parent13c0eb433cca19bb71e0c3591f487a4696d449c0 (diff)
downloadgcc-6a72cb46b22baf7fbb3f5c2eff0b44b37da1487c.zip
gcc-6a72cb46b22baf7fbb3f5c2eff0b44b37da1487c.tar.gz
gcc-6a72cb46b22baf7fbb3f5c2eff0b44b37da1487c.tar.bz2
ABM popcount intrinsics.
* config/i386/abmintrin.h (_mm_popcnt_u32): New. (_mm_popcnt_u64): New. From-SVN: r154894
Diffstat (limited to 'gcc/config/i386/abmintrin.h')
-rw-r--r--gcc/config/i386/abmintrin.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/config/i386/abmintrin.h b/gcc/config/i386/abmintrin.h
index 6c77b3c..317bb98 100644
--- a/gcc/config/i386/abmintrin.h
+++ b/gcc/config/i386/abmintrin.h
@@ -33,4 +33,19 @@
#define _ABMINTRIN_H_INCLUDED
+/* Calculate a number of bits set to 1. */
+extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_popcnt_u32 (unsigned int __X)
+{
+ return __builtin_popcount (__X);
+}
+
+#ifdef __x86_64__
+extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_popcnt_u64 (unsigned long long __X)
+{
+ return __builtin_popcountll (__X);
+}
+#endif
+
#endif /* _ABMINTRIN_H_INCLUDED */