[AArch64] Use aarch64_reg_or_imm instead of nonmemory_operand
authorRichard Sandiford <richard.sandiford@linaro.org>
Tue, 7 Nov 2017 16:08:47 +0000 (16:08 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 7 Nov 2017 16:08:47 +0000 (16:08 +0000)
commitf32c3adb8d77c0ebee112ecf26ae249c8574970e
tree5f2c9635d4a53a4d6b1b5fb91ec16b1e94e1d25d
parent56ccfbd6085be730876ebab31f865e4499b27067
[AArch64] Use aarch64_reg_or_imm instead of nonmemory_operand

Some of the shift expanders accepted nonmemory_operands but were only
able to handle register_operands or CONST_INTs.  This is probably
academic without SVE, since we're not likely to see shifts by other
types of constant (const_wide_ints, consts, etc).  But for SVE,
it's possible for a vectorised shift induction to have a CONST_POLY_INT
shift amount.

This patch makes the expanders use aarch64_reg_or_imm instead.

2017-11-07  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* config/aarch64/aarch64.md (ashl<mode>3, ashr<mode>3, lshr<mode>3)
(rotr<mode>3, rotl<mode>3): Use aarch64_reg_or_imm instead of
nonmmory_operand.

From-SVN: r254499
gcc/ChangeLog
gcc/config/aarch64/aarch64.md