1 #include "sse4_2-check.h" 2 3 #include <nmmintrin.h> 4 5 #define NUM 1024 6 7 static int compute_popcnt(TYPE v)8compute_popcnt (TYPE v) 9 { 10 int ret; 11 int i; 12 13 ret = 0; 14 for (i = 0; i < sizeof(v) * 8; i++) 15 if ((v & ((TYPE)1 << (TYPE) i))) 16 ret++; 17 18 return ret; 19 } 20 21 static void sse4_2_test(void)22sse4_2_test (void) 23 { 24 int i; 25 TYPE vals[NUM]; 26 TYPE res; 27 28 for (i = 0; i < NUM; i++) 29 { 30 vals[i] = rand (); 31 if (sizeof (TYPE) > 4) 32 vals[i] |= (TYPE)rand() << (TYPE)(sizeof (TYPE) * 4); 33 } 34 35 for (i=0; i < NUM; i++) 36 { 37 res = POPCNT (vals[i]); 38 if (res != compute_popcnt (vals[i])) 39 abort (); 40 } 41 } 42