7 unsigned int arguments
[N
] = {0u, 1u, 2u, 3u, 111u, 333u, 444u, 0x80000000u
, 0x0000ffffu
, 0xf0000000u
, 0xff000000u
, 0xffffffffu
};
15 int ref_clrsb
[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
])
49 /* CLZ of zero is undefined for zero. */
50 for (unsigned i
= 1; i
< N
; i
++)
51 if (ref_clz
[i
] != clz
[i
])
54 /* Likewise for ctz */
55 for (unsigned i
= 1; i
< N
; i
++)
56 if (ref_ctz
[i
] != ctz
[i
])
59 for (unsigned i
= 0; i
< N
; i
++)
60 if (ref_ffs
[i
] != ffs
[i
])
63 for (unsigned i
= 0; i
< N
; i
++)
64 if (ref_parity
[i
] != parity
[i
])
67 for (unsigned i
= 0; i
< N
; i
++)
68 if (ref_popcount
[i
] != popcount
[i
])