[AArch64] Use aarch64_reg_or_imm instead of nonmemory_operand
commit0a1e59e30f4f05689d363e66a8beb4d4a5bbaef0
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Nov 2017 16:08:47 +0000 (7 16:08 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Nov 2017 16:08:47 +0000 (7 16:08 +0000)
tree5f2c9635d4a53a4d6b1b5fb91ec16b1e94e1d25d
parent12f26ffdef5b4913f163a25b798db0d02304970f
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254499 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/aarch64/aarch64.md