This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH][binutils][Arm] Removed unsigned variants of VQ(R)DMLAH and VQ(R)DMLASH instructions.


Hello,

This patch removes the unsigned variants of the VQ(R)DMLAH and VQ(R)DMLASH MVE instructions.

Previously GAS would accept .u32, .u16 and .u8 suffixes to the VQ(R)DMLAH and VQ(R)DMLASH
instructions, however the Armv8.1-M Mainline specification states that these functions only
have signed variations (.s32, .s16 and .s8 suffixes).
This is documented here:
https://static.docs.arm.com/ddi0553/bh/DDI0553B_h_armv8m_arm.pdf?_ga=2.143079093.1892401233.1563295591-999473562.1560847439#page=1183

This is due to an update in the specification, for which we believe no hardware exists yet, so we do not need to support both unsigned
and signed variants, and can just support the (correct) signed variants.

Fixed this by marking the instructions as only having signed variations in GAS
and by masking out the unsigned variations in opcodes.

Added testcases to verify that the error is thrown when the .u32/.u16/.u8 suffix is given to the instructions as
well as updating the positive tests to remove the unsigned variations.

Cross compiled and regtested on arm-none-eabi and arm-none-linux-gnueabihf.

I don't have write access, so if it's OK then could someone commit on my behalf?

Regards,
Barney

gas/ChangeLog:

2019-07-29  Barnaby Wilks  <barnaby.wilks@arm.com>

	* config/tc-arm.c (do_mve_vqdmlah): Use N_S_32 macro.
	(do_neon_qrdmlah): Use N_S_32 macro.
	* testsuite/gas/arm/mve-vqdmlah-bad.d: New test.
	* testsuite/gas/arm/mve-vqdmlah-bad.l: New test.
	* testsuite/gas/arm/mve-vqdmlah-bad.s: New test.
	* testsuite/gas/arm/mve-vqdmlah.d: Remove unsigned instruction tests.
	* testsuite/gas/arm/mve-vqdmlah.s: Remove unsigned instruction tests.
	* testsuite/gas/arm/mve-vqdmlash-bad.d: New test.
	* testsuite/gas/arm/mve-vqdmlash-bad.l: New test.
	* testsuite/gas/arm/mve-vqdmlash-bad.s: New test.
	* testsuite/gas/arm/mve-vqdmlash.d: Remove unsigned instruction tests.
	* testsuite/gas/arm/mve-vqdmlash.s: Remove unsigned instruction tests.

opcodes/ChangeLog:

2019-07-29  Barnaby Wilks  <barnaby.wilks@arm.com>

	* arm-dis.c: Only accept signed variants of VQ(R)DMLAH and VQ(R)DMLASH
	instructions.

Attachment: arm-remove-unsigned-instructions.txt
Description: arm-remove-unsigned-instructions.txt


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]