diff options
author | Richard Biener <rguenther@suse.de> | 2023-07-11 10:40:19 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2023-07-11 12:22:35 +0200 |
commit | 4736ddd11874fe215662ac18877ce8eded1f5976 (patch) | |
tree | b1ee05421df1f1a7d06b0a05a68d755a2b094a01 | |
parent | 6be7d5e91e47c5432391b03de9f89e7ec6072eda (diff) | |
download | gcc-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.cc | 9 |
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 |