1 /* { dg-options "-std=gnu99" } */
6 extern void abort (void);
8 #define DEFTEST1(T,FX) \
11 return countls##FX (x); \
14 int test1_u##FX (unsigned T x) \
16 return countlsu##FX (x); \
19 DEFTEST1 (short fract
, hr
)
21 DEFTEST1 (long fract
, lr
)
22 DEFTEST1 (long long fract
, llr
)
24 DEFTEST1 (short accum
, hk
)
26 DEFTEST1 (long accum
, lk
)
27 DEFTEST1 (long long accum
, llk
)
30 #define TEST2P(FX, VAL, DD) \
32 if (countls##FX (FX##bits (VAL)) != 8 * sizeof (0##FX) - DD) \
35 if (countlsu##FX (u##FX##bits (VAL)) != 8 * sizeof (0u##FX) + 1 - DD) \
40 #define TEST2M(FX, VAL, DD) \
42 if (countls##FX (FX##bits (VAL)) != 8 * sizeof (0##FX) - (DD)) \
45 if (countlsu##FX (u##FX##bits (VAL)) != 0) \
50 #define TEST2PX(VAL, DD) \
51 TEST2P (hr, VAL, DD); \
52 TEST2P (r, VAL, DD); \
53 TEST2P (lr, VAL, DD); \
55 TEST2P (hk, VAL, DD); \
56 TEST2P (k, VAL, DD); \
57 TEST2P (lk, VAL, DD); \
60 #define TEST2MX(VAL, DD) \
61 TEST2M (hr, VAL, DD); \
62 TEST2M (r, VAL, DD); \
63 TEST2M (lr, VAL, DD); \
65 TEST2M (hk, VAL, DD); \
66 TEST2M (k, VAL, DD); \
67 TEST2M (lk, VAL, DD); \