unroll first iter of checked_ilog loop to save one multiplication · model-checking/verify-rust-std@ad38f9b (original) (raw)

Skip to content

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Appearance settings

Commit ad38f9b

unroll first iter of checked_ilog loop to save one multiplication

File tree

1 file changed

lines changed

1 file changed

lines changed

Lines changed: 5 additions & 2 deletions

Original file line number Diff line number Diff line change
@@ -1093,9 +1093,12 @@ macro_rules! uint_impl {
1093 1093 pub const fn checked_ilog(self, base: Self) -> Option<u32> {
1094 1094 if self <= 0 |
1095 1095 None
1096 +} else if self < base {
1097 +Some(0)
1096 1098 } else {
1097 -let mut n = 0;
1098 -let mut r = 1;
1099 +// Since base >= self, n >= 1
1100 +let mut n = 1;
1101 +let mut r = base;
1099 1102
1100 1103 // Optimization for 128 bit wide integers.
1101 1104 if Self::BITS == 128 {