Require equal shift amounts for IFN_DIV_POW2
authorRichard Sandiford <richard.sandiford@arm.com>
Mon, 6 Jan 2020 18:00:15 +0000 (18:00 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 6 Jan 2020 18:00:15 +0000 (18:00 +0000)
commita0643f028e43aa2a5b09907295ecaadedac2d295
treebe2c3cd841d6c76521bace096462f0309b2d060f
parent8a0ae3c130cd1e6beb0087a6967d33d8203f0dce
Require equal shift amounts for IFN_DIV_POW2

IFN_DIV_POW2 currently requires all elements to be shifted by the
same amount, in a similar way as for WIDEN_LSHIFT_EXPR.  This patch
enforces that when building the SLP tree.

If in future targets want to support IFN_DIV_POW2 without this
restriction, we'll probably need the kind of vector-vector/
vector-scalar split that we already have for normal shifts.

2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-slp.c (vect_build_slp_tree_1): Require all shifts
in an IFN_DIV_POW2 node to be equal.

gcc/testsuite/
* gcc.target/aarch64/sve/asrdiv_1.c: Remove trailing %s.
* gcc.target/aarch64/sve/asrdiv_2.c: New test.
* gcc.target/aarch64/sve/asrdiv_3.c: Likewise.

From-SVN: r279908
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/sve/asrdiv_1.c
gcc/testsuite/gcc.target/aarch64/sve/asrdiv_2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/asrdiv_3.c [new file with mode: 0644]
gcc/tree-vect-slp.c