diff options
author | Fei Yang <felix.yang@huawei.com> | 2020-06-18 20:11:09 +0100 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2020-06-18 20:11:09 +0100 |
commit | e54353a72a0fd780a2f233a057f3f8121b476192 (patch) | |
tree | f0eb46a32bb3789499801d5a9b30c7118420011f | |
parent | e95395926a84a2406faefe0995295d199d595440 (diff) | |
download | gcc-e54353a72a0fd780a2f233a057f3f8121b476192.zip gcc-e54353a72a0fd780a2f233a057f3f8121b476192.tar.gz gcc-e54353a72a0fd780a2f233a057f3f8121b476192.tar.bz2 |
vect: Use vect_relevant_for_alignment_p consistently
Minor code refactorings in tree-vect-data-refs.c. When trying loop peeling
to force alignment, call vect_relevant_for_alignment_p to filter out data
references in the loop whose alignment is irrelevant.
2020-06-18 Felix Yang <felix.yang@huawei.com>
gcc/
* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Call
vect_relevant_for_alignment_p to filter out data references in
the loop whose alignment is irrelevant when trying loop peeling
to force alignment.
-rw-r--r-- | gcc/tree-vect-data-refs.c | 29 |
1 files changed, 3 insertions, 26 deletions
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 4164bf4..2365a39 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -1722,29 +1722,10 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) FOR_EACH_VEC_ELT (datarefs, i, dr) { dr_vec_info *dr_info = loop_vinfo->lookup_dr (dr); - stmt_vec_info stmt_info = dr_info->stmt; - - if (!STMT_VINFO_RELEVANT_P (stmt_info)) - continue; - - /* For interleaving, only the alignment of the first access - matters. */ - if (STMT_VINFO_GROUPED_ACCESS (stmt_info) - && DR_GROUP_FIRST_ELEMENT (stmt_info) != stmt_info) - continue; - - /* For scatter-gather or invariant accesses there is nothing - to enhance. */ - if (STMT_VINFO_GATHER_SCATTER_P (stmt_info) - || integer_zerop (DR_STEP (dr))) - continue; - - /* Strided accesses perform only component accesses, alignment is - irrelevant for them. */ - if (STMT_VINFO_STRIDED_P (stmt_info) - && !STMT_VINFO_GROUPED_ACCESS (stmt_info)) + if (!vect_relevant_for_alignment_p (dr_info)) continue; + stmt_vec_info stmt_info = dr_info->stmt; supportable_dr_alignment = vect_supportable_dr_alignment (loop_vinfo, dr_info, true); do_peeling = vector_alignment_reachable_p (dr_info); @@ -2136,12 +2117,8 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo) FOR_EACH_VEC_ELT (datarefs, i, dr) if (dr != dr0_info->dr) { - /* Strided accesses perform only component accesses, alignment - is irrelevant for them. */ dr_vec_info *dr_info = loop_vinfo->lookup_dr (dr); - stmt_info = dr_info->stmt; - if (STMT_VINFO_STRIDED_P (stmt_info) - && !STMT_VINFO_GROUPED_ACCESS (stmt_info)) + if (!vect_relevant_for_alignment_p (dr_info)) continue; vect_update_misalignment_for_peel (dr_info, dr0_info, npeel); |