From: spop Date: Wed, 2 Dec 2009 05:48:18 +0000 (+0000) Subject: ABM popcount intrinsics. X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=77a98d79ce8bd485073b09bc09722da2c46660d6;hp=91d1d675bf395ab453b7f147f7fcd36b5ced49f5 ABM popcount intrinsics. * config/i386/abmintrin.h (_mm_popcnt_u32): New. (_mm_popcnt_u64): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154894 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 01253227d52..d04fb611187 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 6c77b3c205a..317bb98d5ea 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 */