count_leading_zeros.rs 555 B

1234567891011121314151617181920212223
  1. extern crate compiler_builtins;
  2. use compiler_builtins::int::__clzsi2;
  3. #[test]
  4. fn __clzsi2_test() {
  5. let mut i: usize = core::usize::MAX;
  6. // Check all values above 0
  7. while i > 0 {
  8. assert_eq!(__clzsi2(i) as u32, i.leading_zeros());
  9. i >>= 1;
  10. }
  11. // check 0 also
  12. i = 0;
  13. assert_eq!(__clzsi2(i) as u32, i.leading_zeros());
  14. // double check for bit patterns that aren't just solid 1s
  15. i = 1;
  16. for _ in 0..63 {
  17. assert_eq!(__clzsi2(i) as u32, i.leading_zeros());
  18. i <<= 2;
  19. i += 1;
  20. }
  21. }