Hi, AArch32 MOV Rd, #imm should accept all immediates which can be encoded into available encoding, A1/A2 for ARM, T1/T2/T3 for Thumb/Thumb2, and MOV is the preferred disassembly syntax. See latest ARM Architecture Reference Manual for ARMv8-A, section F6.1.108 and for ARMv8-M, section C2.4.89. The same for MOV.W under Thumb mode. It should try all possible 32-bit Thumb encoding instead of T2 only. This patch let MOV/MOV.W accept more immediate formats while their currently supported immediate formats are not affected, so there is no backward compatibility issue, also this patch haven't touched the disassembler. I think this patch brings GAS closer to ARM Architecture Reference Manual. OK for master? gas/ 2016-11-01 Jiong Wang * config/tc-arm.c (SBIT_SHIFT): New. (T2_SBIT_SHIFT): Likewise. (t32_insn_ok): Return TRUE for MOV in ARMv8-M Baseline. (md_apply_fix): Try UINT16 encoding when ARM/Thumb modified immediate encoding failed. * testsuite/gas/arm/archv6t2-bad.s: New error case. * testsuite/gas/arm/archv6t2-bad.l: New error match. * testsuite/gas/arm/archv6t2.s: New testcase. * testsuite/gas/arm/archv6t2.d: New expected result. * testsuite/gas/arm/archv8m.s: New testcase * testsuite/gas/arm/archv8m-base.d: New expected result. * testsuite/gas/arm/archv8m-main.d: Likewise. * testsuite/gas/arm/archv8m-main-dsp-1.d: Likewise.