diff options
author | Richard Biener <rguenther@suse.de> | 2023-10-19 10:33:01 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2023-10-19 14:25:36 +0200 |
commit | beab5b95c581452adeb26efd59ae84a61fb3b429 (patch) | |
tree | b0140dcd2b7498d1ca1ce58ca6d128a84489bae9 /gcc/testsuite/c-c++-common/Wstrict-flex-arrays.c | |
parent | b068886dcd7eb4a88dd82643a7a6176215471889 (diff) | |
download | gcc-beab5b95c581452adeb26efd59ae84a61fb3b429.zip gcc-beab5b95c581452adeb26efd59ae84a61fb3b429.tar.gz gcc-beab5b95c581452adeb26efd59ae84a61fb3b429.tar.bz2 |
tree-optimization/111131 - SLP for non-IFN gathers
The following implements SLP vectorization support for gathers
without relying on IFNs being pattern detected (and supported by
the target). That includes support for emulated gathers but also
the legacy x86 builtin path.
PR tree-optimization/111131
* tree-vect-loop.cc (update_epilogue_loop_vinfo): Make
sure to update all gather/scatter stmt DRs, not only those
that eventually got VMAT_GATHER_SCATTER set.
* tree-vect-slp.cc (_slp_oprnd_info::first_gs_info): Add.
(vect_get_and_check_slp_defs): Handle gathers/scatters,
adding the offset as SLP operand and comparing base and scale.
(vect_build_slp_tree_1): Handle gathers.
(vect_build_slp_tree_2): Likewise.
* gcc.dg/vect/vect-gather-1.c: Now expected to vectorize
everywhere.
* gcc.dg/vect/vect-gather-2.c: Expected to not SLP anywhere.
Massage the scale case to more reliably produce a different
one. Scan for the specific messages.
* gcc.dg/vect/vect-gather-3.c: Masked gather is also supported
for AVX2, but not emulated.
* gcc.dg/vect/vect-gather-4.c: Expected to not SLP anywhere.
Massage to more properly ensure this.
* gcc.dg/vect/tsvc/vect-tsvc-s353.c: Expect to vectorize
everywhere.
Diffstat (limited to 'gcc/testsuite/c-c++-common/Wstrict-flex-arrays.c')
0 files changed, 0 insertions, 0 deletions