diff options
author | Richard Biener <rguenther@suse.de> | 2021-06-30 16:28:50 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2021-07-01 09:47:58 +0200 |
commit | 7d8211603a3d04384812b481b0ae01205a287a72 (patch) | |
tree | 92a399096554ae139a5713d648a1a5dda3daa7a2 /gcc/gimple-loop-interchange.cc | |
parent | b0ab968999c9af88d45acf552ca673ef3960306a (diff) | |
download | gcc-7d8211603a3d04384812b481b0ae01205a287a72.zip gcc-7d8211603a3d04384812b481b0ae01205a287a72.tar.gz gcc-7d8211603a3d04384812b481b0ae01205a287a72.tar.bz2 |
tree-optimization/101178 - handle VEC_PERM in SLP permute propagation
This adds handling of VEC_PERM nodes to SLP permute propagation.
Previously VEC_PERM acted as forced materialization of incoming
permutes since it is a good place to do that (with the constraint
of those only appearing for two-operator nodes). The following
patch, in addition to supporting (but not forcing) this, enables
VEC_PERM nodes acting as "any" permute on the outgoing side since
they also can consume arbitrary permutes on that side.
This again (meh) changes how we represent permutes and materialization
on the graph vertices now explicitely having the common incoming
permute as well as an outgoing permute and in case both are
different the vertex acts as materialization point of the incoming
permute.
2021-06-30 Richard Biener <rguenther@suse.de>
PR tree-optimization/101178
* tree-vect-slp.c (slpg_vertex::materialize): Remove.
(slpg::perm_in): Add.
(slpg::get_perm_in): Remove.
(slpg::get_perm_materialized): Add.
(vect_optimize_slp): Handle VEC_PERM nodes more optimally
during permute propagation and materialization.
* gcc.dg/vect/bb-slp-72.c: New testcase.
* gcc.dg/vect/bb-slp-73.c: Likewise.
* gcc.dg/vect/bb-slp-74.c: Likewise.
Diffstat (limited to 'gcc/gimple-loop-interchange.cc')
0 files changed, 0 insertions, 0 deletions