gas: * config/tc-arm.c (struct arm_it): Add isreg field to operands. (THUMB_ASR, THUMB_ASL, THUMB_LSR): Delete. (BAD_HIREG): New canned diagnostic. (OP_RR_EX, OP_RL_iEX, OP_oRL_iEX): New operand parse codes. (parse_operands): Implement the latter two. Use BAD_HIREG throughout. (po_reg_or_fail): Set isreg field as well. (thumb_shift): Rename do_t_shift. Remove second argument. Use parse_operands. Leave patching of immediate value to md_apply_fix3. (do_t_asr, do_t_lsl, do_t_lsr): Delete. (tinsns): Use do_t_shift for asr, lsl, lsr. (md_apply_fix3 ): Handle 0 and 32 correctly. opcodes: * arm-dis.c (print_insn_thumb): New %s escape sequence. (thumb_opcodes): Use %s for asr and lsr.