diff options
author | Richard Biener <rguenther@suse.de> | 2024-06-19 12:57:27 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2024-06-20 08:47:44 +0200 |
commit | 46bb4ce4d30ab749d40f6f4cef6f1fb7c7813452 (patch) | |
tree | a45311f21186aa365e1ae840f429abec2a3d16b1 /gcc/fortran/gfortran.h | |
parent | bea447a2982f3094aa3423b5045cea929f4f4700 (diff) | |
download | gcc-46bb4ce4d30ab749d40f6f4cef6f1fb7c7813452.zip gcc-46bb4ce4d30ab749d40f6f4cef6f1fb7c7813452.tar.gz gcc-46bb4ce4d30ab749d40f6f4cef6f1fb7c7813452.tar.bz2 |
tree-optimization/114413 - SLP CSE after permute optimization
We currently fail to re-CSE SLP nodes after optimizing permutes
which results in off cost estimates. For gcc.dg/vect/bb-slp-32.c
this shows in not re-using the SLP node with the load and arithmetic
for both the store and the reduction. The following implements
CSE by re-bst-mapping nodes as finalization part of vect_optimize_slp.
I've tried to make the CSE part of permute materialization but it
isn't a very good fit there. I've not bothered to implement something
more complete, also handling external defs or defs without
SLP_TREE_SCALAR_STMTS.
I realize this might result in more BB SLP which in turn might slow
down code given costing for BB SLP is difficult (even that we now
vectorize gcc.dg/vect/bb-slp-32.c on x86_64 might be not a good idea).
This is nevertheless feeding more accurate info to costing which is
good.
PR tree-optimization/114413
* tree-vect-slp.cc (release_scalar_stmts_to_slp_tree_map):
New function, split out from ...
(vect_analyze_slp): ... here. Call it.
(vect_cse_slp_nodes): New function.
(vect_optimize_slp): Call it.
* gcc.dg/vect/bb-slp-32.c: Expect CSE and vectorization on x86.
Diffstat (limited to 'gcc/fortran/gfortran.h')
0 files changed, 0 insertions, 0 deletions