t_bitops: Show the bad results on failure.

This commit is contained in:
riastradh 2023-07-13 20:39:24 +00:00
parent 78e3dd62e3
commit 07b9e924e1
1 changed files with 208 additions and 165 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: t_bitops.c,v 1.20 2018/07/25 22:00:32 kamil Exp $ */
/* $NetBSD: t_bitops.c,v 1.21 2023/07/13 20:39:24 riastradh Exp $ */
/*-
* Copyright (c) 2011, 2012 The NetBSD Foundation, Inc.
@ -29,7 +29,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
__RCSID("$NetBSD: t_bitops.c,v 1.20 2018/07/25 22:00:32 kamil Exp $");
__RCSID("$NetBSD: t_bitops.c,v 1.21 2023/07/13 20:39:24 riastradh Exp $");
#include <atf-c.h>
@ -72,31 +72,36 @@ ATF_TC_HEAD(bitmap_basic, tc)
ATF_TC_BODY(bitmap_basic, tc)
{
size_t n;
__BITMAP_TYPE(, uint32_t, 65536) bm;
__BITMAP_ZERO(&bm);
ATF_REQUIRE(__BITMAP_SIZE(uint32_t, 65536) == 2048);
ATF_CHECK_EQ_MSG((n = __BITMAP_SIZE(uint32_t, 65536)), 2048,
"n=%zu", n);
ATF_REQUIRE(__BITMAP_SHIFT(uint32_t) == 5);
ATF_CHECK_EQ_MSG((n = __BITMAP_SHIFT(uint32_t)), 5, "n=%zu", n);
ATF_REQUIRE(__BITMAP_MASK(uint32_t) == 31);
ATF_CHECK_EQ_MSG((n = __BITMAP_MASK(uint32_t)), 31, "n=%zu", n);
for (size_t i = 0; i < 65536; i += 2)
__BITMAP_SET(i, &bm);
for (size_t i = 0; i < 2048; i++)
ATF_REQUIRE(bm._b[i] == 0x55555555);
for (size_t i = 0; i < 2048; i++) {
ATF_CHECK_EQ_MSG(bm._b[i], 0x55555555, "bm._b[%zu]=0x%"PRIx32,
i, bm._b[i]);
}
for (size_t i = 0; i < 65536; i++)
if (i & 1)
ATF_REQUIRE(!__BITMAP_ISSET(i, &bm));
ATF_CHECK_MSG(!__BITMAP_ISSET(i, &bm), "i=%zu", i);
else {
ATF_REQUIRE(__BITMAP_ISSET(i, &bm));
ATF_CHECK_MSG(__BITMAP_ISSET(i, &bm), "i=%zu", i);
__BITMAP_CLR(i, &bm);
}
for (size_t i = 0; i < 65536; i += 2)
ATF_REQUIRE(!__BITMAP_ISSET(i, &bm));
ATF_CHECK_MSG(!__BITMAP_ISSET(i, &bm), "i=%zu", i);
}
ATF_TC(fast_divide32);
@ -118,7 +123,14 @@ ATF_TC_BODY(fast_divide32, tc)
q = fast_divide32(a, b, m, s1, s2);
r = fast_remainder32(a, b, m, s1, s2);
ATF_REQUIRE(q == 0x1111 && r == 0);
ATF_CHECK_EQ_MSG(q, 0x1111,
"q=%"PRIu32"; a=%"PRIu32" b=%"PRIu32" a/b=%"PRIu32";"
" m=%"PRIu32" s1=%"PRIu8" s2=%"PRIu8,
q, a, b, a / b, m, s1, s2);
ATF_CHECK_EQ_MSG(r, 0,
"q=%"PRIu32", a=%"PRIu32", b=%"PRIu32", a%%b=%"PRIu32";"
" m=%"PRIu32" s1=%"PRIu8" s2=%"PRIu8,
q, a, b, a % b, m, s1, s2);
for (i = 1; i < __arraycount(bits); i++) {
@ -130,8 +142,14 @@ ATF_TC_BODY(fast_divide32, tc)
q = fast_divide32(a, b, m, s1, s2);
r = fast_remainder32(a, b, m, s1, s2);
ATF_REQUIRE(q == a / b);
ATF_REQUIRE(r == a % b);
ATF_CHECK_EQ_MSG(q, a / b,
"q=%"PRIu32"; a=%"PRIu32" b=%"PRIu32" a/b=%"PRIu32";"
" m=%"PRIu32" s1=%"PRIu8" s2=%"PRIu8,
q, a, b, a / b, m, s1, s2);
ATF_CHECK_EQ_MSG(r, a % b,
"q=%"PRIu32", a=%"PRIu32", b=%"PRIu32", a%%b=%"PRIu32";"
" m=%"PRIu32" s1=%"PRIu8" s2=%"PRIu8,
q, a, b, a % b, m, s1, s2);
}
}
@ -144,33 +162,54 @@ ATF_TC_HEAD(ffsfls, tc)
ATF_TC_BODY(ffsfls, tc)
{
uint8_t i;
int n, m;
ATF_REQUIRE(ffs32(0) == 0x00);
ATF_REQUIRE(fls32(0) == 0x00);
ATF_REQUIRE(ffs64(0) == 0x00);
ATF_REQUIRE(fls64(0) == 0x00);
ATF_CHECK_EQ_MSG((n = ffs32(0)), 0x00, "n=%d", n);
ATF_CHECK_EQ_MSG((n = fls32(0)), 0x00, "n=%d", n);
ATF_CHECK_EQ_MSG((n = ffs64(0)), 0x00, "n=%d", n);
ATF_CHECK_EQ_MSG((n = fls64(0)), 0x00, "n=%d", n);
ATF_REQUIRE(ffs32(UINT32_MAX) == 0x01);
ATF_REQUIRE(fls32(UINT32_MAX) == 0x20);
ATF_REQUIRE(ffs64(UINT64_MAX) == 0x01);
ATF_REQUIRE(fls64(UINT64_MAX) == 0x40);
ATF_CHECK_EQ_MSG((n = ffs32(UINT32_MAX)), 0x01, "n=%d", n);
ATF_CHECK_EQ_MSG((n = fls32(UINT32_MAX)), 0x20, "n=%d", n);
ATF_CHECK_EQ_MSG((n = ffs64(UINT64_MAX)), 0x01, "n=%d", n);
ATF_CHECK_EQ_MSG((n = fls64(UINT64_MAX)), 0x40, "n=%d", n);
for (i = 1; i < __arraycount(bits); i++) {
ATF_REQUIRE(ffs32(bits[i].val) == bits[i].ffs);
ATF_REQUIRE(fls32(bits[i].val) == bits[i].fls);
ATF_REQUIRE(ffs64(bits[i].val) == bits[i].ffs);
ATF_REQUIRE(fls64(bits[i].val) == bits[i].fls);
ATF_CHECK_EQ_MSG((n = ffs32(bits[i].val)), (m = bits[i].ffs),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_CHECK_EQ_MSG((n = fls32(bits[i].val)), (m = bits[i].fls),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_CHECK_EQ_MSG((n = ffs64(bits[i].val)), (m = bits[i].ffs),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_CHECK_EQ_MSG((n = fls64(bits[i].val)), (m = bits[i].fls),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_REQUIRE(ffs32(bits[i].val << 1) == bits[i].ffs + 1);
ATF_REQUIRE(fls32(bits[i].val << 1) == bits[i].fls + 1);
ATF_REQUIRE(ffs64(bits[i].val << 1) == bits[i].ffs + 1);
ATF_REQUIRE(fls64(bits[i].val << 1) == bits[i].fls + 1);
ATF_CHECK_EQ_MSG((n = ffs32(bits[i].val << 1)),
(m = bits[i].ffs + 1),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_CHECK_EQ_MSG((n = fls32(bits[i].val << 1)),
(m = bits[i].fls + 1),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_CHECK_EQ_MSG((n = ffs64(bits[i].val << 1)),
(m = bits[i].ffs + 1),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_CHECK_EQ_MSG((n = fls64(bits[i].val << 1)),
(m = bits[i].fls + 1),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_REQUIRE(ffs32(bits[i].val << 9) == bits[i].ffs + 9);
ATF_REQUIRE(fls32(bits[i].val << 9) == bits[i].fls + 9);
ATF_REQUIRE(ffs64(bits[i].val << 9) == bits[i].ffs + 9);
ATF_REQUIRE(fls64(bits[i].val << 9) == bits[i].fls + 9);
ATF_CHECK_EQ_MSG((n = ffs32(bits[i].val << 9)),
(m = bits[i].ffs + 9),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_CHECK_EQ_MSG((n = fls32(bits[i].val << 9)),
(m = bits[i].fls + 9),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_CHECK_EQ_MSG((n = ffs64(bits[i].val << 9)),
(m = bits[i].ffs + 9),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
ATF_CHECK_EQ_MSG((n = fls64(bits[i].val << 9)),
(m = bits[i].fls + 9),
"[i=%"PRIu8"] n=%d m=%d", i, n, m);
}
}
@ -182,12 +221,13 @@ ATF_TC_HEAD(ilog2_32bit, tc)
ATF_TC_BODY(ilog2_32bit, tc)
{
int i;
int i, L;
uint32_t x;
for (i = 0; i < 32; i++) {
x = 1U << i;
ATF_REQUIRE(ilog2(x) == i);
ATF_CHECK_EQ_MSG((L = ilog2(x)), i, "i=%d x=0x%"PRIx32" L=%d",
i, x, L);
}
}
@ -199,12 +239,13 @@ ATF_TC_HEAD(ilog2_64bit, tc)
ATF_TC_BODY(ilog2_64bit, tc)
{
int i;
int i, L;
uint64_t x;
for (i = 0; i < 64; i++) {
x = ((uint64_t)1) << i;
ATF_REQUIRE(ilog2(x) == i);
x = (uint64_t)1 << i;
ATF_CHECK_EQ_MSG((L = ilog2(x)), i, "i=%d x=0x%"PRIx64" L=%d",
i, x, L);
}
}
@ -216,138 +257,140 @@ ATF_TC_HEAD(ilog2_const, tc)
ATF_TC_BODY(ilog2_const, tc)
{
int L;
/*
* These inlines test __builtin_constant_p() part of ilog2()
* at compile time, so don't change it to loop. PR lib/49745
*/
ATF_REQUIRE(ilog2(0x0000000000000001ULL) == 0);
ATF_REQUIRE(ilog2(0x0000000000000002ULL) == 1);
ATF_REQUIRE(ilog2(0x0000000000000004ULL) == 2);
ATF_REQUIRE(ilog2(0x0000000000000008ULL) == 3);
ATF_REQUIRE(ilog2(0x0000000000000010ULL) == 4);
ATF_REQUIRE(ilog2(0x0000000000000020ULL) == 5);
ATF_REQUIRE(ilog2(0x0000000000000040ULL) == 6);
ATF_REQUIRE(ilog2(0x0000000000000080ULL) == 7);
ATF_REQUIRE(ilog2(0x0000000000000100ULL) == 8);
ATF_REQUIRE(ilog2(0x0000000000000200ULL) == 9);
ATF_REQUIRE(ilog2(0x0000000000000400ULL) == 10);
ATF_REQUIRE(ilog2(0x0000000000000800ULL) == 11);
ATF_REQUIRE(ilog2(0x0000000000001000ULL) == 12);
ATF_REQUIRE(ilog2(0x0000000000002000ULL) == 13);
ATF_REQUIRE(ilog2(0x0000000000004000ULL) == 14);
ATF_REQUIRE(ilog2(0x0000000000008000ULL) == 15);
ATF_REQUIRE(ilog2(0x0000000000010000ULL) == 16);
ATF_REQUIRE(ilog2(0x0000000000020000ULL) == 17);
ATF_REQUIRE(ilog2(0x0000000000040000ULL) == 18);
ATF_REQUIRE(ilog2(0x0000000000080000ULL) == 19);
ATF_REQUIRE(ilog2(0x0000000000100000ULL) == 20);
ATF_REQUIRE(ilog2(0x0000000000200000ULL) == 21);
ATF_REQUIRE(ilog2(0x0000000000400000ULL) == 22);
ATF_REQUIRE(ilog2(0x0000000000800000ULL) == 23);
ATF_REQUIRE(ilog2(0x0000000001000000ULL) == 24);
ATF_REQUIRE(ilog2(0x0000000002000000ULL) == 25);
ATF_REQUIRE(ilog2(0x0000000004000000ULL) == 26);
ATF_REQUIRE(ilog2(0x0000000008000000ULL) == 27);
ATF_REQUIRE(ilog2(0x0000000010000000ULL) == 28);
ATF_REQUIRE(ilog2(0x0000000020000000ULL) == 29);
ATF_REQUIRE(ilog2(0x0000000040000000ULL) == 30);
ATF_REQUIRE(ilog2(0x0000000080000000ULL) == 31);
ATF_REQUIRE(ilog2(0x0000000100000000ULL) == 32);
ATF_REQUIRE(ilog2(0x0000000200000000ULL) == 33);
ATF_REQUIRE(ilog2(0x0000000400000000ULL) == 34);
ATF_REQUIRE(ilog2(0x0000000800000000ULL) == 35);
ATF_REQUIRE(ilog2(0x0000001000000000ULL) == 36);
ATF_REQUIRE(ilog2(0x0000002000000000ULL) == 37);
ATF_REQUIRE(ilog2(0x0000004000000000ULL) == 38);
ATF_REQUIRE(ilog2(0x0000008000000000ULL) == 39);
ATF_REQUIRE(ilog2(0x0000010000000000ULL) == 40);
ATF_REQUIRE(ilog2(0x0000020000000000ULL) == 41);
ATF_REQUIRE(ilog2(0x0000040000000000ULL) == 42);
ATF_REQUIRE(ilog2(0x0000080000000000ULL) == 43);
ATF_REQUIRE(ilog2(0x0000100000000000ULL) == 44);
ATF_REQUIRE(ilog2(0x0000200000000000ULL) == 45);
ATF_REQUIRE(ilog2(0x0000400000000000ULL) == 46);
ATF_REQUIRE(ilog2(0x0000800000000000ULL) == 47);
ATF_REQUIRE(ilog2(0x0001000000000000ULL) == 48);
ATF_REQUIRE(ilog2(0x0002000000000000ULL) == 49);
ATF_REQUIRE(ilog2(0x0004000000000000ULL) == 50);
ATF_REQUIRE(ilog2(0x0008000000000000ULL) == 51);
ATF_REQUIRE(ilog2(0x0010000000000000ULL) == 52);
ATF_REQUIRE(ilog2(0x0020000000000000ULL) == 53);
ATF_REQUIRE(ilog2(0x0040000000000000ULL) == 54);
ATF_REQUIRE(ilog2(0x0080000000000000ULL) == 55);
ATF_REQUIRE(ilog2(0x0100000000000000ULL) == 56);
ATF_REQUIRE(ilog2(0x0200000000000000ULL) == 57);
ATF_REQUIRE(ilog2(0x0400000000000000ULL) == 58);
ATF_REQUIRE(ilog2(0x0800000000000000ULL) == 59);
ATF_REQUIRE(ilog2(0x1000000000000000ULL) == 60);
ATF_REQUIRE(ilog2(0x2000000000000000ULL) == 61);
ATF_REQUIRE(ilog2(0x4000000000000000ULL) == 62);
ATF_REQUIRE(ilog2(0x8000000000000000ULL) == 63);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000001ULL)), 0, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000002ULL)), 1, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000004ULL)), 2, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000008ULL)), 3, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000010ULL)), 4, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000020ULL)), 5, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000040ULL)), 6, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000080ULL)), 7, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000100ULL)), 8, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000200ULL)), 9, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000400ULL)), 10, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000800ULL)), 11, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000001000ULL)), 12, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000002000ULL)), 13, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000004000ULL)), 14, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000008000ULL)), 15, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000010000ULL)), 16, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000020000ULL)), 17, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000040000ULL)), 18, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000080000ULL)), 19, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000100000ULL)), 20, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000200000ULL)), 21, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000400000ULL)), 22, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000800000ULL)), 23, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000001000000ULL)), 24, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000002000000ULL)), 25, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000004000000ULL)), 26, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000008000000ULL)), 27, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000010000000ULL)), 28, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000020000000ULL)), 29, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000040000000ULL)), 30, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000080000000ULL)), 31, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000100000000ULL)), 32, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000200000000ULL)), 33, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000400000000ULL)), 34, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000800000000ULL)), 35, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000001000000000ULL)), 36, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000002000000000ULL)), 37, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000004000000000ULL)), 38, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000008000000000ULL)), 39, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000010000000000ULL)), 40, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000020000000000ULL)), 41, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000040000000000ULL)), 42, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000080000000000ULL)), 43, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000100000000000ULL)), 44, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000200000000000ULL)), 45, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000400000000000ULL)), 46, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000800000000000ULL)), 47, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0001000000000000ULL)), 48, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0002000000000000ULL)), 49, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0004000000000000ULL)), 50, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0008000000000000ULL)), 51, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0010000000000000ULL)), 52, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0020000000000000ULL)), 53, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0040000000000000ULL)), 54, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0080000000000000ULL)), 55, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0100000000000000ULL)), 56, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0200000000000000ULL)), 57, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0400000000000000ULL)), 58, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0800000000000000ULL)), 59, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x1000000000000000ULL)), 60, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x2000000000000000ULL)), 61, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x4000000000000000ULL)), 62, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x8000000000000000ULL)), 63, "L=%d", L);
ATF_REQUIRE(ilog2(0x0000000000000003ULL) == 1);
ATF_REQUIRE(ilog2(0x0000000000000007ULL) == 2);
ATF_REQUIRE(ilog2(0x000000000000000fULL) == 3);
ATF_REQUIRE(ilog2(0x000000000000001fULL) == 4);
ATF_REQUIRE(ilog2(0x000000000000003fULL) == 5);
ATF_REQUIRE(ilog2(0x000000000000007fULL) == 6);
ATF_REQUIRE(ilog2(0x00000000000000ffULL) == 7);
ATF_REQUIRE(ilog2(0x00000000000001ffULL) == 8);
ATF_REQUIRE(ilog2(0x00000000000003ffULL) == 9);
ATF_REQUIRE(ilog2(0x00000000000007ffULL) == 10);
ATF_REQUIRE(ilog2(0x0000000000000fffULL) == 11);
ATF_REQUIRE(ilog2(0x0000000000001fffULL) == 12);
ATF_REQUIRE(ilog2(0x0000000000003fffULL) == 13);
ATF_REQUIRE(ilog2(0x0000000000007fffULL) == 14);
ATF_REQUIRE(ilog2(0x000000000000ffffULL) == 15);
ATF_REQUIRE(ilog2(0x000000000001ffffULL) == 16);
ATF_REQUIRE(ilog2(0x000000000003ffffULL) == 17);
ATF_REQUIRE(ilog2(0x000000000007ffffULL) == 18);
ATF_REQUIRE(ilog2(0x00000000000fffffULL) == 19);
ATF_REQUIRE(ilog2(0x00000000001fffffULL) == 20);
ATF_REQUIRE(ilog2(0x00000000003fffffULL) == 21);
ATF_REQUIRE(ilog2(0x00000000007fffffULL) == 22);
ATF_REQUIRE(ilog2(0x0000000000ffffffULL) == 23);
ATF_REQUIRE(ilog2(0x0000000001ffffffULL) == 24);
ATF_REQUIRE(ilog2(0x0000000003ffffffULL) == 25);
ATF_REQUIRE(ilog2(0x0000000007ffffffULL) == 26);
ATF_REQUIRE(ilog2(0x000000000fffffffULL) == 27);
ATF_REQUIRE(ilog2(0x000000001fffffffULL) == 28);
ATF_REQUIRE(ilog2(0x000000003fffffffULL) == 29);
ATF_REQUIRE(ilog2(0x000000007fffffffULL) == 30);
ATF_REQUIRE(ilog2(0x00000000ffffffffULL) == 31);
ATF_REQUIRE(ilog2(0x00000001ffffffffULL) == 32);
ATF_REQUIRE(ilog2(0x00000003ffffffffULL) == 33);
ATF_REQUIRE(ilog2(0x00000007ffffffffULL) == 34);
ATF_REQUIRE(ilog2(0x0000000fffffffffULL) == 35);
ATF_REQUIRE(ilog2(0x0000001fffffffffULL) == 36);
ATF_REQUIRE(ilog2(0x0000003fffffffffULL) == 37);
ATF_REQUIRE(ilog2(0x0000007fffffffffULL) == 38);
ATF_REQUIRE(ilog2(0x000000ffffffffffULL) == 39);
ATF_REQUIRE(ilog2(0x000001ffffffffffULL) == 40);
ATF_REQUIRE(ilog2(0x000003ffffffffffULL) == 41);
ATF_REQUIRE(ilog2(0x000007ffffffffffULL) == 42);
ATF_REQUIRE(ilog2(0x00000fffffffffffULL) == 43);
ATF_REQUIRE(ilog2(0x00001fffffffffffULL) == 44);
ATF_REQUIRE(ilog2(0x00003fffffffffffULL) == 45);
ATF_REQUIRE(ilog2(0x00007fffffffffffULL) == 46);
ATF_REQUIRE(ilog2(0x0000ffffffffffffULL) == 47);
ATF_REQUIRE(ilog2(0x0001ffffffffffffULL) == 48);
ATF_REQUIRE(ilog2(0x0003ffffffffffffULL) == 49);
ATF_REQUIRE(ilog2(0x0007ffffffffffffULL) == 50);
ATF_REQUIRE(ilog2(0x000fffffffffffffULL) == 51);
ATF_REQUIRE(ilog2(0x001fffffffffffffULL) == 52);
ATF_REQUIRE(ilog2(0x003fffffffffffffULL) == 53);
ATF_REQUIRE(ilog2(0x007fffffffffffffULL) == 54);
ATF_REQUIRE(ilog2(0x00ffffffffffffffULL) == 55);
ATF_REQUIRE(ilog2(0x01ffffffffffffffULL) == 56);
ATF_REQUIRE(ilog2(0x03ffffffffffffffULL) == 57);
ATF_REQUIRE(ilog2(0x07ffffffffffffffULL) == 58);
ATF_REQUIRE(ilog2(0x0fffffffffffffffULL) == 59);
ATF_REQUIRE(ilog2(0x1fffffffffffffffULL) == 60);
ATF_REQUIRE(ilog2(0x3fffffffffffffffULL) == 61);
ATF_REQUIRE(ilog2(0x7fffffffffffffffULL) == 62);
ATF_REQUIRE(ilog2(0xffffffffffffffffULL) == 63);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000003ULL)), 1, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000007ULL)), 2, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000000000000fULL)), 3, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000000000001fULL)), 4, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000000000003fULL)), 5, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000000000007fULL)), 6, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000000000000ffULL)), 7, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000000000001ffULL)), 8, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000000000003ffULL)), 9, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000000000007ffULL)), 10, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000000fffULL)), 11, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000001fffULL)), 12, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000003fffULL)), 13, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000007fffULL)), 14, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000000000ffffULL)), 15, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000000001ffffULL)), 16, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000000003ffffULL)), 17, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000000007ffffULL)), 18, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000000000fffffULL)), 19, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000000001fffffULL)), 20, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000000003fffffULL)), 21, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000000007fffffULL)), 22, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000000ffffffULL)), 23, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000001ffffffULL)), 24, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000003ffffffULL)), 25, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000007ffffffULL)), 26, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000000fffffffULL)), 27, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000001fffffffULL)), 28, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000003fffffffULL)), 29, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000007fffffffULL)), 30, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000000ffffffffULL)), 31, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000001ffffffffULL)), 32, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000003ffffffffULL)), 33, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000007ffffffffULL)), 34, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000000fffffffffULL)), 35, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000001fffffffffULL)), 36, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000003fffffffffULL)), 37, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000007fffffffffULL)), 38, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000000ffffffffffULL)), 39, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000001ffffffffffULL)), 40, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000003ffffffffffULL)), 41, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000007ffffffffffULL)), 42, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00000fffffffffffULL)), 43, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00001fffffffffffULL)), 44, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00003fffffffffffULL)), 45, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00007fffffffffffULL)), 46, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0000ffffffffffffULL)), 47, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0001ffffffffffffULL)), 48, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0003ffffffffffffULL)), 49, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0007ffffffffffffULL)), 50, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x000fffffffffffffULL)), 51, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x001fffffffffffffULL)), 52, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x003fffffffffffffULL)), 53, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x007fffffffffffffULL)), 54, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x00ffffffffffffffULL)), 55, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x01ffffffffffffffULL)), 56, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x03ffffffffffffffULL)), 57, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x07ffffffffffffffULL)), 58, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x0fffffffffffffffULL)), 59, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x1fffffffffffffffULL)), 60, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x3fffffffffffffffULL)), 61, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0x7fffffffffffffffULL)), 62, "L=%d", L);
ATF_CHECK_EQ_MSG((L = ilog2(0xffffffffffffffffULL)), 63, "L=%d", L);
}
ATF_TP_ADD_TCS(tp)