Previously only return shl non-zero if the shift value was 1. We
can expand this if we have some bounds on the shift count.
For example:
%cnt = and %c, 16 ; Max cnt == 16 %val = or %v, 4 ; val[2] is known one %shl = shl %val, %cnt ; (val.known.one << cnt.maxval) != 0
Isn't this going to assert if the max value is wider than the bit width?