zig
zig copied to clipboard
[priority_deque] simplify & optimize isMinLayer
LLVM has trouble compiling the old implementation, (presumably) because leading_zeros is thought to be a u7 rather than a u6, which means 63 - clz is not equivalent to 63 ^ clz, which means it can't deduce that the final condition can simply be flipped. (I am assuming usize is a u64 here for ease of understanding, but it's the same for any power of 2)
https://zig.godbolt.org/z/Pbj4P7ob3
The new version is slightly better too because isMinLayer(maxInt(usize)) is now well-defined behavior.