[PATCH 1v2/3][vect] Add main vectorized loop unrolling

Andre Vieira (lists) andre.simoesdiasvieira@arm.com
Tue Nov 30 11:36:54 GMT 2021


On 25/11/2021 12:46, Richard Biener wrote:
> Oops, my fault, yes, it does.  I would suggest to refactor things so
> that the mode_i = first_loop_i case is there only once.  I also wonder
> if all the argument about starting at 0 doesn't apply to the
> not unrolled LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P as well?  So
> what's the reason to differ here?  So in the end I'd just change
> the existing
>
>    if (LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P (first_loop_vinfo))
>      {
>
> to
>
>    if (LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P (first_loop_vinfo)
>        || first_loop_vinfo->suggested_unroll_factor > 1)
>      {
>
> and maybe revisit this when we have an actual testcase showing that
> doing sth else has a positive effect?
>
> Thanks,
> Richard.

So I had a quick chat with Richard Sandiford and he is suggesting 
resetting mode_i to 0 for all cases.

He pointed out that for some tunings the SVE mode might come after the 
NEON mode, which means that even for not-unrolled loop_vinfos we could 
end up with a suboptimal choice of mode for the epilogue. I.e. it could 
be that we pick V16QI for main vectorization, but that's VNx16QI + 1 in 
the array, so we'd not try VNx16QI for the epilogue.

This would simplify the mode selecting cases, by just simply restarting 
at mode_i in all epilogue cases. Is that something you'd be OK?

Regards,
Andre


More information about the Gcc-patches mailing list