diff options
Diffstat (limited to 'vendor/half/src/leading_zeros.rs')
-rw-r--r-- | vendor/half/src/leading_zeros.rs | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/vendor/half/src/leading_zeros.rs b/vendor/half/src/leading_zeros.rs deleted file mode 100644 index 6c73148..0000000 --- a/vendor/half/src/leading_zeros.rs +++ /dev/null @@ -1,62 +0,0 @@ -// https://doc.rust-lang.org/std/primitive.u16.html#method.leading_zeros - -#[cfg(not(any(all( - target_arch = "spirv", - not(all( - target_feature = "IntegerFunctions2INTEL", - target_feature = "SPV_INTEL_shader_integer_functions2" - )) -))))] -pub(crate) const fn leading_zeros_u16(x: u16) -> u32 { - x.leading_zeros() -} - -#[cfg(all( - target_arch = "spirv", - not(all( - target_feature = "IntegerFunctions2INTEL", - target_feature = "SPV_INTEL_shader_integer_functions2" - )) -))] -pub(crate) const fn leading_zeros_u16(x: u16) -> u32 { - leading_zeros_u16_fallback(x) -} - -#[cfg(any( - test, - all( - target_arch = "spirv", - not(all( - target_feature = "IntegerFunctions2INTEL", - target_feature = "SPV_INTEL_shader_integer_functions2" - )) - ) -))] -const fn leading_zeros_u16_fallback(mut x: u16) -> u32 { - use crunchy::unroll; - let mut c = 0; - let msb = 1 << 15; - unroll! { for i in 0 .. 16 { - if x & msb == 0 { - c += 1; - } else { - return c; - } - #[allow(unused_assignments)] - if i < 15 { - x <<= 1; - } - }} - c -} - -#[cfg(test)] -mod test { - - #[test] - fn leading_zeros_u16_fallback() { - for x in [44, 97, 304, 1179, 23571] { - assert_eq!(super::leading_zeros_u16_fallback(x), x.leading_zeros()); - } - } -} |