[lno] [patch] vectorizer update - loop bound

Dorit Naishlos DORIT@il.ibm.com
Sun Jan 18 10:43:00 GMT 2004





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)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vect_nb_iters_diff
Type: application/octet-stream
Size: 18038 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20040118/e6a008d3/attachment.obj>


More information about the Gcc-patches mailing list