The semantics of all shifts in B3 include a mask with either 31 or 63. So if we do a shift by a constant greater than that, we should do the mask directly on the constant. This would provide some useful canonicalization, reduce the need to materialize large constants, and could outright delete the shift if after the mask the constant is 0.
Created attachment 366129 [details] Patch