aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2024-11-13 11:32:13 +0100
committerRichard Biener <rguenth@gcc.gnu.org>2024-11-14 09:26:04 +0100
commit6d85a0bc2e09221bdb412bc47aefbcd10c546fd5 (patch)
treeffc45f5c5e9ecf439a780d5c54e934761450cee4
parent72df175c93d81d4eea67d889d76fda7381fb6743 (diff)
downloadgcc-6d85a0bc2e09221bdb412bc47aefbcd10c546fd5.zip
gcc-6d85a0bc2e09221bdb412bc47aefbcd10c546fd5.tar.gz
gcc-6d85a0bc2e09221bdb412bc47aefbcd10c546fd5.tar.bz2
Do not consider overrun for VMAT_ELEMENTWISE
When we classify an SLP access as VMAT_ELEMENTWISE we still consider overrun - the reset of it is later overwritten. The following fixes this, resolving a few RISC-V FAILs with --param vect-force-slp=1. * tree-vect-stmts.cc (get_group_load_store_type): For VMAT_ELEMENTWISE there's no overrun.
-rw-r--r--gcc/tree-vect-stmts.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index 3147ff2..5d73120 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -2093,7 +2093,6 @@ get_group_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info,
if (SLP_TREE_LANES (slp_node) == 1)
{
*memory_access_type = VMAT_ELEMENTWISE;
- overrun_p = false;
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
"single-element interleaving not supported "
@@ -2110,7 +2109,8 @@ get_group_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info,
}
}
- overrun_p = loop_vinfo && gap != 0;
+ overrun_p = (loop_vinfo && gap != 0
+ && *memory_access_type != VMAT_ELEMENTWISE);
if (overrun_p && vls_type != VLS_LOAD)
{
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,