* c-c++-common/Wrestrict.c (test_strcpy_range): Revert latest change.
[official-gcc.git] / libgomp / testsuite / libgomp.hsa.c / bits-insns.c
blob21cac72dac42d50592cf4d5fafe81f51d936051c
1 #include <math.h>
3 #define N 12
5 int main()
7 unsigned int arguments[N] = {0u, 1u, 2u, 3u, 111u, 333u, 444u, 0x80000000u, 0x0000ffffu, 0xf0000000u, 0xff000000u, 0xffffffffu};
8 int clrsb[N] = {};
9 int clz[N] = {};
10 int ctz[N] = {};
11 int ffs[N] = {};
12 int parity[N] = {};
13 int popcount[N] = {};
15 int ref_clrsb[N] = {};
16 int ref_clz[N] = {};
17 int ref_ctz[N] = {};
18 int ref_ffs[N] = {};
19 int ref_parity[N] = {};
20 int ref_popcount[N] = {};
22 for (unsigned i = 0; i < N; i++)
24 ref_clrsb[i] = __builtin_clrsb (arguments[i]);
25 ref_clz[i] = __builtin_clz (arguments[i]);
26 ref_ctz[i] = __builtin_ctz (arguments[i]);
27 ref_ffs[i] = __builtin_ffs (arguments[i]);
28 ref_parity[i] = __builtin_parity (arguments[i]);
29 ref_popcount[i] = __builtin_popcount (arguments[i]);
32 #pragma omp target map(from:clz, ctz, ffs, parity, popcount)
34 for (unsigned i = 0; i < N; i++)
36 clrsb[i] = __builtin_clrsb (arguments[i]);
37 clz[i] = __builtin_clz (arguments[i]);
38 ctz[i] = __builtin_ctz (arguments[i]);
39 ffs[i] = __builtin_ffs (arguments[i]);
40 parity[i] = __builtin_parity (arguments[i]);
41 popcount[i] = __builtin_popcount (arguments[i]);
45 for (unsigned i = 0; i < N; i++)
46 if (ref_clrsb[i] != clrsb[i])
47 __builtin_abort ();
49 /* CLZ of zero is undefined for zero. */
50 for (unsigned i = 1; i < N; i++)
51 if (ref_clz[i] != clz[i])
52 __builtin_abort ();
54 /* Likewise for ctz */
55 for (unsigned i = 1; i < N; i++)
56 if (ref_ctz[i] != ctz[i])
57 __builtin_abort ();
59 for (unsigned i = 0; i < N; i++)
60 if (ref_ffs[i] != ffs[i])
61 __builtin_abort ();
63 for (unsigned i = 0; i < N; i++)
64 if (ref_parity[i] != parity[i])
65 __builtin_abort ();
67 for (unsigned i = 0; i < N; i++)
68 if (ref_popcount[i] != popcount[i])
69 __builtin_abort ();
71 return 0;