This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

[AArch64] Fully support rotate on logical operations


This patch fixes an issue where only some rotate immediate operations
are merged with logical operations during combine.  The problem is due
to canonicalization.  The architecture only has a rotate-right
operation, so rotate-left has to be converted into rotate-right.  To
avoid fighting the mid-end canonicalization rules, the only way to do
this is during final assembly output.

This patch adds the two necessary patterns to make this happen.  It also
corrects an oversight in the rtx_cost infrastructure in that we didn't
recognize any rotate operations on logical instructions.  We now treat
rotate in the same way as any other shift operation.

I'll apply this to trunk once stage-1 opens.

R.

	* aarch64.md (<optab>_rol<mode>3): New pattern.
	(<optab>_rolsi3_uxtw): Likewise.
	* aarch64.c (aarch64_strip_shift): Handle ROTATE and ROTATERT.

Attachment: patch
Description: Text document


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