[AArch64] Add a "y" constraint for V0-V7
authorRichard Sandiford <richard.sandiford@arm.com>
Tue, 13 Aug 2019 09:49:36 +0000 (09:49 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 13 Aug 2019 09:49:36 +0000 (09:49 +0000)
commit163b1f6ab2950553e1cc1b39a6b49293b3390e46
treeccad3fb1c6f81d456a008c3a5f1234025aa95a3b
parent3e2751ce5591dc8f3b5f4ffd3dacf0fb8f789395
[AArch64] Add a "y" constraint for V0-V7

Some indexed SVE FCMLA operations have a 3-bit register field that
requires one of Z0-Z7.  This patch adds a public "y" constraint for that.

The patch also documents "x", which is again intended to be a public
constraint.

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

gcc/
* doc/md.texi: Document the x and y constraints for AArch64.
* config/aarch64/aarch64.h (FP_LO8_REGNUM_P): New macro.
(FP_LO8_REGS): New reg_class.
(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add an entry for FP_LO8_REGS.
* config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
(aarch64_regno_regclass, aarch64_class_max_nregs): Handle FP_LO8_REGS.
* config/aarch64/predicates.md (aarch64_simd_register): Use
FP_REGNUM_P instead of checking the classes manually.
* config/aarch64/constraints.md (y): New constraint.

gcc/testsuite/
* gcc.target/aarch64/asm-x-constraint-1.c: New test.
* gcc.target/aarch64/asm-y-constraint-1.c: Likewise.

From-SVN: r274367
gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.h
gcc/config/aarch64/constraints.md
gcc/config/aarch64/predicates.md
gcc/doc/md.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/asm-x-constraint-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/asm-y-constraint-1.c [new file with mode: 0644]