These functions were extremely similar:
- emitADD
- emitADDS
- emitCMN
Refactor them a little, introducing a more generic emitInstr function to do most of the work.
Also add support for the immediate + shifted register addressing modes in each of them.
Update select-uaddo.mir to show that selecing ADDS now supports folding immediates + shifts. (I don't think this can impact CMN, because the CMN checks require a G_SUB with a non-constant on the RHS.)
This is around a 0.02% code size improvement on CTMark at -O3.
This needs a more descriptive name and doc for the table, e.g. what the rows and columns mean.