diff options
author | Richard Biener <rguenther@suse.de> | 2020-06-26 11:18:19 +0200 |
---|---|---|
committer | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-17 13:15:42 -0300 |
commit | 7da9465a5958e0ac2e7a9d0d677014f4254d4372 (patch) | |
tree | 5a520a5ff530833e38f809d9a2deb61f26f4c618 /gcc/fortran/interface.c | |
parent | 9ffc74c99e965c5a389a739abe5a2756bba38121 (diff) | |
download | gcc-7da9465a5958e0ac2e7a9d0d677014f4254d4372.zip gcc-7da9465a5958e0ac2e7a9d0d677014f4254d4372.tar.gz gcc-7da9465a5958e0ac2e7a9d0d677014f4254d4372.tar.bz2 |
tree-optimization/95839 - teach SLP vectorization about vector inputs
This teaches SLP analysis about vector typed externals that are
fed into the SLP operations via lane extracting BIT_FIELD_REFs.
It shows that there's currently no good representation for
vector code on the SLP side so I went a half way and represent
such vector externals uses always using a SLP permutation node
with a single external SLP child which has a non-standard
representation of no scalar defs but only a vector def. That
works best for shielding the rest of the vectorizer from it.
2020-06-26 Richard Biener <rguenther@suse.de>
PR tree-optimization/95839
* tree-vect-slp.c (vect_slp_tree_uniform_p): Pre-existing
vectors are not uniform.
(vect_build_slp_tree_1): Handle BIT_FIELD_REFs of
vector registers.
(vect_build_slp_tree_2): For groups of lane extracts
from a vector register generate a permute node
with a special child representing the pre-existing vector.
(vect_prologue_cost_for_slp): Pre-existing vectors cost nothing.
(vect_slp_analyze_node_operations): Use SLP_TREE_LANES.
(vectorizable_slp_permutation): Do not generate or cost identity
permutes.
(vect_schedule_slp_instance): Handle pre-existing vector
that are function arguments.
* gcc.dg/vect/bb-slp-pr95839-2.c: New testcase.
Diffstat (limited to 'gcc/fortran/interface.c')
0 files changed, 0 insertions, 0 deletions