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] |
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] |