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]

[lno] [patch] vectorizer update - loop bound





The patch below implements a more general loop bound transformation scheme
- still limited to known loop bound that divides by the vectorization
factor, but no longer dependent on the loop IV eolution and the loop exit
condition form.  This allows relaxing the restrictions that the vectorizer
imposed on the loop exit condition, and use the precomputed
loop->nb_iterations instead (from the monev analyzer). As a result, two of
the loops in the test case tree-ssa-vect-none.c (#12 and #13) are now
vectorizable, and are therefore moved to tree-ssa-vect-all.c.

bootstrapped and passed the regression tests on powerpc-apple-darwin7.0.0.

dorit.

        * tree-scalar-evolution.c: (get_loop_exit_condition): Exposed to
        external usage.
        * tree-scalar-evolution.h: (get_loop_exit_condition): Exposed to
        external usage.
        * tree-vectorizer.c: (vect_is_simple_iv_evolution): Additional
argument
        to control how strict this function would be.
        (vect_create_index_for_array_ref): Invoke
vect_is_simple_iv_evolution
        with "strict" set to true.
        (vect_transform_loop_bound): More general loop bound transformation
        scheme, independent of the loop exit condition form.
        (vect_analyze_scalar_cycles): Invoke vect_is_simple_iv_evolution
with
        "strict" set to false.
        (vect_get_loop_niters): Use monev utilities/pre-computed info -
        loop->nb_iterations and get_loop_exit_condition.

(See attached file: vect_nb_iters_diff)

Attachment: vect_nb_iters_diff
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]