compiler-builtins-zynq/testcrate/tests/count_leading_zeros.rs

26 lines
591 B
Rust
Raw Normal View History

2019-01-03 09:50:11 +08:00
#![feature(compiler_builtins_lib)]
extern crate compiler_builtins;
use compiler_builtins::int::__clzsi2;
#[test]
fn __clzsi2_test() {
2019-05-15 05:33:08 +08:00
let mut i: usize = core::usize::MAX;
// Check all values above 0
while i > 0 {
assert_eq!(__clzsi2(i) as u32, i.leading_zeros());
i >>= 1;
}
// check 0 also
i = 0;
2019-01-03 09:50:11 +08:00
assert_eq!(__clzsi2(i) as u32, i.leading_zeros());
2019-05-15 05:33:08 +08:00
// double check for bit patterns that aren't just solid 1s
i = 1;
for _ in 0..63 {
assert_eq!(__clzsi2(i) as u32, i.leading_zeros());
i <<= 2;
i += 1;
}
2019-01-03 09:50:11 +08:00
}