E.g. ```c# Span<byte> span = ... nint n = span.Length / 8; // or any constant that is a power of two ``` produces [integer division by consant](https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEBDAzgWwB8ABAJgEYBYAKGIGYACMhgYQYG8aHunGA7AJZ8MDALLkAFAGUADtj4AeYAE8MMAHwNccvgEoGAXk3b5AOgAyMPgHMMACwYB6BgA4A3Fx70Gg4WNLSOkqqGlo6+kYMEr4YuiZ8Fla2Ds7untzefACuQiKidIHywWrG4Yaa0TnCcTqJNvZOrh7UPLw+VXkohYoqJWHyERXZuboSHTVmlvUpTTQAvkA) (Also tested with .NET 6 RC 1, and didn't find an issue or PR that addressed this.) JIT should be able to recnogize that `.Length` isn't negative, so produce code that is equivalent to ```c# nint n = (nint)(uint)span.Length / 8; ``` which produces (on x86) ```asm shr rax, 3 ``` This pattern is quite common, so it's tedious and a bit unreadable to have the "cast-hacks". category:cq theme:expression-opts skill-level:intermediate cost:small impact:small