We end up emitting the left-shift and the right-shift. It's pretty bad.
I think that I know how to do this without doing anything asm.js-specific. I think that my general approach will benefit a lot of coding styles. It's going to be done by implementing a bunch of different optimizations. Each one is cheap. I'll file bugs for the individual optimizations and relate them to this one.