This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
This patch uses loop versioning to vectorize loops with data references that may or may not be properly aligned. Two versions of a loop are generated. One version is vectorized and one is not. A condition block is generated to test the alignment of the data references in question and direct flow to the vectorized or non-vectorized version of the loop as appropriate. testing on ppc bootstrapped SPEC (8 new loops vectorized in SPEC int, 2 new loops in SPEC fp) gcc.dg/vect (vect-33.c, vect-44.c, vect48.c now vectorized) Keith. Changelog: * tree-vectorizer.h (struct _loop_vec_info): Add fields ptr_mask, may_misalign_stmts, and num_blocks * tree-vectorizer.c (vect_compute_data_refs_alignment): Return bool so caller knows when no vectorization is possible. (vect_compute_data_ref_alignment): Return bool and rearrange code so false returns, no vectorization possible, are performed first. (vect_analyze_data_refs): (vect_create_index_for_array_ref): replaced with vect_create_index_for_vector_ref. (vect_create_addr_base_for_vector_ref): New, contains code from vect_create_data_ref so that it may be used by that procedure and by vect_create_cond_for_align_checks. (vect_create_cond_for_align_checks): New (new_loop_vec_info): initialize added _loop_vec_info fields. (destroy_loop_vec_info): Use/clear added _loop_vec_info fields. (vect_create_data_ref): Changed to use vect_create_index_for_vector_ref and vect_create_addr_base_for_vector_ref. (vect_generate_tmps_on_preheader): fix comment. (vect_transform_loop): add calls to tree_ssa_loop_version and vect_create_cond_for_align_checks to implement the vector loop versioning for alignment. (vect_analyze_operations, vect_mark_stmts_to_be_vectorized, vect_analyze_data_refs): use num_blocks field from _loop_vec_info. testsuite/Changelog; * gcc.dg/vect/vect-33.c: Remove xfail *-*-*, now vectorized. * gcc.dg/vect/vect-44.c: Remove xfail *-*-*, now vectorized. * gcc.dg/vect/vect-48.c: Remove xfail *-*-*, now vectorized.
Attachment:
vect.Aug31.diff
Description: Binary data
Attachment:
testpatch.Aug31
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |