1 /* { dg-do run } */
2 /* The checked bifs are only supported on 64-bit env. */
3 /* { dg-require-effective-target lp64 } */
4 /* { dg-require-effective-target power10_hw } */
5 /* { dg-options "-mdejagnu-cpu=power10 -O2 -ftree-vectorize -fno-vect-cost-model" } */
6
7 #include "p10-bifs-vectorize-1.h"
8
9 /* Check if vectorized built-in functions run expectedly. */
10
11 /* Make optimize (1) to avoid vectorization applied on check func. */
12
13 #define CHECK(name) \
14 __attribute__ ((optimize (1))) void check_##name () \
15 { \
16 test_##name (); \
17 for (int i = 0; i < N; i++) \
18 { \
19 uLL exp = __builtin_##name (ull_a[i], ull_b[i]); \
20 if (exp != ull_c[i]) \
21 __builtin_abort (); \
22 } \
23 }
24
25 CHECK (cfuged)
26 CHECK (cntlzdm)
27 CHECK (cnttzdm)
28 CHECK (pdepd)
29 CHECK (pextd)
30
31 int
32 main ()
33 {
34 for (int i = 0; i < N; i++)
35 {
36 ull_a[i] = 0x789a * (i * 11 - 5) - 0xcd1 * (i * 5 - 7);
37 ull_b[i] = 0xfedc * (i * 7 + 3) + 0x467 * (i * 7 - 11);
38 }
39
40 check_cfuged ();
41 check_cntlzdm ();
42 check_cnttzdm ();
43 check_pdepd ();
44 check_pextd ();
45
46 return 0;
47 }
48