1#include "sse4_2-check.h"
2
3#include <nmmintrin.h>
4
5#define NUM 1024
6
7static int
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
21static 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