Move the test to be a standard test.

master
Lokathor 2019-01-02 18:50:11 -07:00
parent 828c5c6d5f
commit 2e8b85439f
2 changed files with 25 additions and 8 deletions

View File

@ -775,14 +775,6 @@ fn main() {
(builtins::int::udiv::__udivmodti4(a, b, Some(&mut r)), r)
}");
}
// count leading zeros
gen(|a: MyU64| {
Some((a.0 as usize).leading_zeros())
},
"{
builtins::int::__clzsi2(a as usize) as u32
}");
}
macro_rules! gen_float {

View File

@ -0,0 +1,25 @@
#![feature(compiler_builtins_lib)]
extern crate compiler_builtins;
use compiler_builtins::int::__clzsi2;
#[test]
fn __clzsi2_test() {
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;
assert_eq!(__clzsi2(i) as u32, i.leading_zeros());
// 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;
}
}