Add remainder of Em16 restrictions for AArch64 gas.
authorTamar Christina <tamar.christina@arm.com>
Thu, 12 Jul 2018 09:28:46 +0000 (10:28 +0100)
committerTamar Christina <tamar.christina@arm.com>
Thu, 12 Jul 2018 09:30:35 +0000 (10:30 +0100)
commit45a28947f3fe5693560e9a1d6373807a9e82c04a
tree7d8a0b177e7b96c89a94a5011eccca687b6b3f09
parent55cc53e98b86d9be559073c4f062735e2099d1fb
Add remainder of Em16 restrictions for AArch64 gas.

This adds the missing Em16 constraints the rest of the instructions requiring them
and also adds a testcase to test all the instructions so these are checked from
now on.

The Em16 operand constrains the valid registers to the lower 16 registers when used
with a half precision qualifier.

The list has been cross checked (by hand) through the Arm ARM version Ca.

opcodes/

PR binutils/23192
* aarch64-tbl.h (sqdmlal, sqdmlal2, smlsl, smlsl2, sqdmlsl, sqdmlsl2,
mul, smull, smull2, sqdmull, sqdmull2, sqdmulh, sqrdmulh, mla, umlal,
umlal2, mls, umlsl, umlsl2, umull, umull2, sqdmlal, sqdmlsl, sqdmull,
sqdmulh, sqrdmulh): Use Em16.

gas/

PR binutils/23192
* testsuite/gas/aarch64/illegal-by-element.s: New.
* testsuite/gas/aarch64/illegal-by-element.d: New.
* testsuite/gas/aarch64/illegal-by-element.l: New.
gas/ChangeLog
gas/testsuite/gas/aarch64/illegal-by-element.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/illegal-by-element.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/illegal-by-element.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/aarch64-tbl.h