zig icon indicating copy to clipboard operation
zig copied to clipboard

[priority_deque] simplify & optimize isMinLayer

Open Validark opened this issue 2 years ago • 0 comments

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.

Validark avatar Jun 20 '23 23:06 Validark