Use explicit encodings for simple permutes
authorRichard Sandiford <richard.sandiford@linaro.org>
Tue, 2 Jan 2018 18:27:05 +0000 (18:27 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 2 Jan 2018 18:27:05 +0000 (18:27 +0000)
commitd980067b1e9394b2b8482b3fc888ac5e8e3ebe59
treeebde117c5d31c80df9b86ffd24c029b7dfc3f5db
parent736d0f28783f12fa042892bc186866dd5101088f
Use explicit encodings for simple permutes

This patch makes users of vec_perm_builders use the compressed encoding
where possible.  This means that they work with variable-length vectors.

2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* optabs.c (expand_vec_perm_var): Use an explicit encoding for
the broadcast of the low byte.
(expand_mult_highpart): Use an explicit encoding for the permutes.
* optabs-query.c (can_mult_highpart_p): Likewise.
* tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
* tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
(vectorizable_bswap): Likewise.
* tree-vect-data-refs.c (vect_grouped_store_supported): Use an
explicit encoding for the power-of-2 permutes.
(vect_permute_store_chain): Likewise.
(vect_grouped_load_supported): Likewise.
(vect_permute_load_chain): Likewise.

From-SVN: r256097
gcc/ChangeLog
gcc/optabs-query.c
gcc/optabs.c
gcc/tree-vect-data-refs.c
gcc/tree-vect-loop.c
gcc/tree-vect-stmts.c