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]

[patch] lno branch merge - vectorizer patch #2


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]