I'm the author of the fastest .NET version. Ask me anything about the implementation. The code is very short and simple.
> Extending short => int is more expensive than short => ushort => uint => int
Can you explain why
[1] https://sharplab.io/#v2:C4LghgzgtgPgAgJgIwFgBQcDMACR2DC2A3ut...
EDIT: Ah, the other reply notes that this is likely only visible in a method that also does calculations and thus keeps those values in registers.