aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2023-07-11 10:40:19 +0200
committerRichard Biener <rguenther@suse.de>2023-07-11 12:22:35 +0200
commit4736ddd11874fe215662ac18877ce8eded1f5976 (patch)
treeb1ee05421df1f1a7d06b0a05a68d755a2b094a01
parent6be7d5e91e47c5432391b03de9f89e7ec6072eda (diff)
downloadgcc-4736ddd11874fe215662ac18877ce8eded1f5976.zip
gcc-4736ddd11874fe215662ac18877ce8eded1f5976.tar.gz
gcc-4736ddd11874fe215662ac18877ce8eded1f5976.tar.bz2
tree-optimization/110614 - SLP splat and re-align (optimized)
The following properly guards the re-align (optimized) paths used on old power CPUs for the added case of SLP splats from non-grouped loads. Testcases are existing in dg-torture. PR tree-optimization/110614 * tree-vect-data-refs.cc (vect_supportable_dr_alignment): SLP splats are not suitable for re-align ops.
-rw-r--r--gcc/tree-vect-data-refs.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc
index ab2af10..9edc898 100644
--- a/gcc/tree-vect-data-refs.cc
+++ b/gcc/tree-vect-data-refs.cc
@@ -6829,10 +6829,11 @@ vect_supportable_dr_alignment (vec_info *vinfo, dr_vec_info *dr_info,
same alignment, instead it depends on the SLP group size. */
if (loop_vinfo
&& STMT_SLP_TYPE (stmt_info)
- && !multiple_p (LOOP_VINFO_VECT_FACTOR (loop_vinfo)
- * (DR_GROUP_SIZE
- (DR_GROUP_FIRST_ELEMENT (stmt_info))),
- TYPE_VECTOR_SUBPARTS (vectype)))
+ && (!STMT_VINFO_GROUPED_ACCESS (stmt_info)
+ || !multiple_p (LOOP_VINFO_VECT_FACTOR (loop_vinfo)
+ * (DR_GROUP_SIZE
+ (DR_GROUP_FIRST_ELEMENT (stmt_info))),
+ TYPE_VECTOR_SUBPARTS (vectype))))
;
else if (!loop_vinfo
|| (nested_in_vect_loop