Hi, This patch implements support for the MVE VMULL[BT] instruction. This instruction presents a new challenge to the implementation of GAS as depending on architecture the same mnemonic can be split in different ways because of condition codes. In a NEON context 'vmullt' should be parsed as a 'vmul' instruction with 'lt' condition code, whereas in a MVE context this same mnemonic should be parsed as a 'vmullt' instruction. The way we implement this is to catch any 'vmullt' in 'do_mve_vmull' and if we detect we are dealing with a NEON context, we set the correct condition code, encoding, and call the neon encoding function. gas/ChangeLog: 2019-05-01 Andre Vieira * config/tc-arm.c (BAD_MVE_AUTO): New error message. (BAD_MVE_SRCDEST): Likewise. (mark_feature_used): Diagnose MVE only instructions when in auto-detection mode or -march=all. (enum operand_parse_code): Define new operand. (parse_operands): Handle new operand. (M_MNEM_vmullt, M_MNEM_vmullb): New encodings. (mve_encode_qqq): New encoding helper function. (do_mve_vmull): New encoding function. (insns): * testsuite/gas/arm/mve-vmullbt-bad.d: New test. * testsuite/gas/arm/mve-vmullbt-bad.l: New test. * testsuite/gas/arm/mve-vmullbt-bad.s: New test.