On 06/24/2016 01:40 AM, Ilya Enkovich wrote:


Here is an updated version with disabled alias checks for loop epilogues.
Instead of calling vect_analyze_data_ref_dependence I just use VF of the
original loop as MAX_VF for epilogue.

Thanks,
Ilya
--
gcc/

2016-05-24  Ilya Enkovich  <ilya.enkov...@intel.com>

        * tree-if-conv.c (tree_if_conversion): Make public.
        * tree-if-conv.h: New file.
        * tree-vect-data-refs.c (vect_analyze_data_ref_dependences) Avoid
        dynamic alias checks for epilogues.
        (vect_enhance_data_refs_alignment): Don't try to enhance alignment
        for epilogues.
        * tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound): Return
        created loop.
        * tree-vect-loop.c: include tree-if-conv.h.
        (destroy_loop_vec_info): Preserve LOOP_VINFO_ORIG_LOOP_INFO in
        loop->aux.
        (vect_analyze_loop_form): Init LOOP_VINFO_ORIG_LOOP_INFO and reset
        loop->aux.
        (vect_analyze_loop): Reset loop->aux.
        (vect_transform_loop): Check if created epilogue should be returned
        for further vectorization.  If-convert epilogue if required.
        * tree-vectorizer.c (vectorize_loops): Add a queue of loops to
        process and insert vectorized loop epilogues into this queue.
        * tree-vectorizer.h (vect_do_peeling_for_loop_bound): Return created
        loop.
        (vect_transform_loop): Return created loop.
I know Richi wasn't all that happy with the call into if-conversion and I don't particularly like the use of aux for smuggling data around. But I think those are warts, not fundamental design flaws.

OK once the rest of the bits are approved.

jeff

Reply via email to