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] |
Hi, This patch provides unknown loop bound support for vectorizer. Both cases are handled: when loop bound is unknown at compile time and when it's constant indivisible by vectorization factor. The patch is based on the loop transformation (included in patch) to be applied before loop vectorization. This transformation allows peeling epilog/prolog loop from original one. The epilog loop is used in case loop bound is unknown (this patch), while peeling a prolog loop is needed when dealing with unknown alignment (the patch to follow, only for stores). The patch is tested on powerpc-apple-darwin7.0.0. All vectorizer tests pass, 3 testcases are changed from xfail to pass, one new testcases is added (attached below). SPEC fp/int passes with vectorization flag without additional failures. thanks, olga ChengeLog: 2004-09-11 Olga Golovanevsky <olga@il.ibm.com> * cfgloop.h: Add duplicate_loop function. * cfgloopmanip.c: Change duplicate_loop to be non-static. * tree-vectorizer.c (vect_generate_tmps_on_preheader): (vect_update_ivs_after_vectorizer): (vect_transform_for_unknown_loop_bound): (tree_duplicate_loop_to_edge): (allocate_new_names): (rename_use_op): (rename_def_op): (rename_variables_in_bb): (free_new_names): (rename_variables_in_loop): (copy_phi_nodes): (update_phis_for_duplicate_loop): (update_phi_nodes_for_guard): (make_loop_iterate_ntimes): (tree_duplicate_loop_to_edge_cfg): (add_loop_guard): (vect_analyze_loop_with_symbolic_num_of_iters): (verify_loop_for_duplication): New functions. (vect_transform_loop): Add unknown and indivisible loop bound support. (vect_analyze_loop_form): Support symbolic number of iterations. (vect_transform_loop_bound): New input parameter. (vect_get_loop_niters): Change input parameter type. (new_loop_vec_info): LOOP_VINFO_NITERS is tree now. * tree-vectorizer.h (LOOP_VINFO_NITERS_KNOWN_P): Redefined to use tree. (LOOP_VINFO_INT_NITERS): New macro. (See attached file: ulb_main5.txt)(See attached file: vect-70.c)
Attachment:
ulb_main5.txt
Description: Text document
Attachment:
vect-70.c
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |