[AArch64] Tweak operand choice for SVE predicate AND
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 15 Aug 2019 08:55:00 +0000 (08:55 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 15 Aug 2019 08:55:00 +0000 (08:55 +0000)
commit2d2388f82f2e7f2fd1da063192ba98be45f099d2
tree588378ba2fecfeb6906604a46709aa9c4c2733e7
parent139df05a29eb71075e42f502978dea4d00a99708
[AArch64] Tweak operand choice for SVE predicate AND

SVE defines an assembly alias:

   MOV pa.B, pb/Z, pc.B  ->  AND pa.B. pb/Z, pc.B, pc.B

Our and<mode>3 pattern was instead using the functionally-equivalent:

   AND pa.B. pb/Z, pb.B, pc.B
                   ^^^^
This patch duplicates pc.B instead so that the alias can be seen
in disassembly.

I wondered about using the alias in the pattern instead, but using AND
explicitly seems to fit better with the pattern name and surrounding code.

2019-08-15  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/aarch64-sve.md (and<PRED_ALL:mode>3): Make the
operand order match the MOV /Z alias.

From-SVN: r274521
gcc/ChangeLog
gcc/config/aarch64/aarch64-sve.md