From 6a72cb46b22baf7fbb3f5c2eff0b44b37da1487c Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Wed, 2 Dec 2009 05:48:18 +0000 Subject: ABM popcount intrinsics. * config/i386/abmintrin.h (_mm_popcnt_u32): New. (_mm_popcnt_u64): New. From-SVN: r154894 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/abmintrin.h | 15 +++++++++++++++ 2 files changed, 20 insertions(+) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0125322..d04fb61 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2009-12-01 Sebastian Pop + * config/i386/abmintrin.h (_mm_popcnt_u32): New. + (_mm_popcnt_u64): New. + +2009-12-01 Sebastian Pop + * config/i386/abmintrin.h: New. * config/i386/i386-c.c (ix86_target_macros_internal): Defined __ABM__. * config/i386/x86intrin.h: Include abmintrin.h when __ABM__ is defined. 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 */ -- cgit v1.1