Don't expand a SDIV with an immediate that is a power of 2 if we optimise for minimum code size. For example:
sdiv %1, i32 4
this gets cleverly expanded to a sequence of 3 instructions: ASR, ADD (with a LSR in the addressing mode) and another ASR. But this is suboptimial for minimum code size, so instead we just generate a MOV and a SDIV.
Instead of isVector() should this be based on operation legality? Promotion/expansion could be just as (or more?) expensive as the pow2 expansion. i64 on 32-bits targets for instance.