The lack of variable-length shifts has been a blocker for a number of optimisations and improvements. This issue is about adding variable-length shifts to [asm](https://github.com/CakeML/cakeml/blob/master/compiler/encoders/asm/asmScript.sml) and supporting them in all target encoders. This will help issues: - #274 - #246 I expect most of the work will be in updating the encoder proofs. This issue can be closed once variable-length shift are available as allowed instructions in the lower end of the CakeML compiler.