whose fucking idea was it to require the shift amount to have the same width as the value to be shifted? is this purposefully designed to torture compiler developers??