Add tests for builtin core functions
This commit is contained in:
1 parent
ae8c3e5300
commit
b040bc411f
1 file changed
+36
@@ -465,6 +465,41 @@ static void test_move_default(void)
|
|||||||
assert(x2.c == 0);
|
assert(x2.c == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_builtin(void)
|
||||||
|
{
|
||||||
|
assert(m_core_clz32(0) == 32);
|
||||||
|
for(unsigned i = 0; i < 31; i++) {
|
||||||
|
assert(m_core_clz32(1UL<<i) == 31U - i);
|
||||||
|
assert(m_core_clz32((1UL<<i) | 1) == 31U - i);
|
||||||
|
}
|
||||||
|
|
||||||
|
assert(m_core_clz64(0) == 64);
|
||||||
|
for(unsigned i = 0; i < 63; i++) {
|
||||||
|
assert(m_core_clz64(1ULL<<i) == 63U - i);
|
||||||
|
assert(m_core_clz64((1ULL<<i) | 1) == 63U - i);
|
||||||
|
}
|
||||||
|
|
||||||
|
assert ( m_core_roundpow2(0) == 0);
|
||||||
|
for(unsigned i = 0; i < 62; i++) {
|
||||||
|
assert ( m_core_roundpow2(1ULL<<i) == 1ULL<<i);
|
||||||
|
assert ( m_core_roundpow2((1ULL<<i)+1) == 1ULL<<(i+1) );
|
||||||
|
}
|
||||||
|
|
||||||
|
for(unsigned i = 0; i < 3000; i++) {
|
||||||
|
assert( m_core_rotl32a(i, 1) == i * 2);
|
||||||
|
assert( m_core_rotl32a(i, 2) == i * 4);
|
||||||
|
assert( m_core_rotl32a((1UL<<31) + i, 1) == i * 2 + 1);
|
||||||
|
assert( m_core_rotl32a((1UL<<31) + i, 2) == i * 4 + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(unsigned i = 0; i < 3000; i++) {
|
||||||
|
assert( m_core_rotl64a(i, 1) == i * 2);
|
||||||
|
assert( m_core_rotl64a(i, 2) == i * 4);
|
||||||
|
assert( m_core_rotl64a((1ULL<<63) + i, 1) == i * 2 + 1);
|
||||||
|
assert( m_core_rotl64a((1ULL<<63) + i, 2) == i * 4 + 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
test_cat();
|
test_cat();
|
||||||
@@ -485,5 +520,6 @@ int main(void)
|
|||||||
test_reduce();
|
test_reduce();
|
||||||
test_parse_standard_c_type();
|
test_parse_standard_c_type();
|
||||||
test_move_default();
|
test_move_default();
|
||||||
|
test_builtin();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user