• Akinobu Mita's avatar
    x86, core: Optimize hweight32() · 39d997b5
    Akinobu Mita authored
    Optimize hweight32 by using the same technique in hweight64.
    
    The proof of this technique can be found in the commit log for
    f9b41929 ("bitops: hweight()
    speedup").
    
    The userspace benchmark on x86_32 showed 20% speedup with
    bitmap_weight() which uses hweight32 to count bits for each
    unsigned long on 32bit architectures.
    
     int main(void)
     {
    	#define SZ (1024 * 1024 * 512)
    
    	static DECLARE_BITMAP(bitmap, SZ) = {
    	        [0 ... 100] = 1,
    	};
    
    	return bitmap_weight(bitmap, SZ);
     }
    Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    LKML-Reference: <1258603932-4590-1-git-send-email-akinobu.mita@gmail.com>
    [ only x86 sets ARCH_HAS_FAST_MULTIPLIER so we do this via the x86 tree]
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    39d997b5
hweight.c 1.81 KB