On Thu, Nov 07, 2019 at 02:26:29PM +0000, Andre Vieira (lists) wrote:
> 2019-11-07  Andre Vieira  <andre.simoesdiasvie...@arm.com>
> 
>         * tree-vect-loop.c (vect_analyze_loop): Disable epilogue
>         vectorization for loops with SIMDUID set.  Enable epilogue
>         vectorization for loops with SIMDLEN set after finding a main
>         loop with a VF that matches it.
> 
> diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
> index 
> dfa087ebb2cf01a5d21da0a921f8b6fc3d691ce9..22550ca2d6c56cce201ea422bfae5472a0d85f3a
>  100644
> --- a/gcc/tree-vect-loop.c
> +++ b/gcc/tree-vect-loop.c
> @@ -2455,11 +2455,15 @@ vect_analyze_loop (class loop *loop, vec_info_shared 
> *shared)
>           delete loop_vinfo;
>  
>         /* Only vectorize epilogues if PARAM_VECT_EPILOGUES_NOMASK is
> -          enabled, this is not a simd loop and it is the innermost loop.  */
> -       vect_epilogues = (!loop->simdlen
> +          enabled, SIMDUID is not set, it is the innermost loop and we have
> +          either already found the loop's SIMDLEN or there was no SIMDLEN to
> +          begin with.
> +          TODO: Enable epilogue vectorization for loops with SIMDUID set.  */
> +       vect_epilogues = (!simdlen
>                           && loop->inner == NULL
>                           && PARAM_VALUE (PARAM_VECT_EPILOGUES_NOMASK)
>                           && LOOP_VINFO_PEELING_FOR_NITER (first_loop_vinfo)
> +                         && !loop->simduid
>                           /* For now only allow one epilogue loop.  */
>                           && first_loop_vinfo->epilogue_vinfos.is_empty ());

LGTM.

        Jakub

Reply via email to