Refactor expand_vec_perm
authorRichard Sandiford <richard.sandiford@linaro.org>
Tue, 2 Jan 2018 18:26:16 +0000 (18:26 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 2 Jan 2018 18:26:16 +0000 (18:26 +0000)
commit279b805713fd498afb7986698a2e3406bc947d87
tree93129a39bf65aef7a97f30ca8329f00826514d79
parent7ac7e2868d450dfb9080166ddc4abcc21b86fab3
Refactor expand_vec_perm

This patch splits the variable handling out of expand_vec_perm into
a subroutine, so that the next patch can use a different interface
for expanding constant permutes.  expand_vec_perm now does all the
CONST_VECTOR handling directly and defers to expand_vec_perm_var
for other rtx codes.  Handling CONST_VECTORs includes handling the
fallback to variable permutes.

The patch also adds an assert for valid optab modes to expand_vec_perm_1,
so that we get it when using optabs for CONST_VECTORs.  The MODE_VECTOR_INT
part was previously in expand_vec_perm and the mode_for_int_vector part
is new.

Most of the patch is just reindentation.

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

gcc/
* optabs.c (expand_vec_perm_1): Assert that SEL has an integer
vector mode and that that mode matches the mode of the data
being permuted.
(expand_vec_perm): Split handling of non-CONST_VECTOR selectors
out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
directly using expand_vec_perm_1 when forcing selectors into
registers.
(expand_vec_perm_var): New function, split out from expand_vec_perm.

From-SVN: r256092
gcc/ChangeLog
gcc/optabs.c