[PATCH][vect] Use main loop's thresholds and vectorization factor to narrow upper_bound of epilogue

Andre Vieira (lists) andre.simoesdiasvieira@arm.com
Thu Jun 3 12:42:22 GMT 2021

Thank you Kewen!!

I will apply this now.


On 25/05/2021 09:42, Kewen.Lin wrote:
> on 2021/5/24 下午3:21, Kewen.Lin via Gcc-patches wrote:
>> Hi Andre,
>> on 2021/5/24 下午2:17, Andre Vieira (lists) via Gcc-patches wrote:
>>> Hi,
>>> When vectorizing with --param vect-partial-vector-usage=1 the vectorizer uses an unpredicated (all-true predicate for SVE) main loop and a predicated tail loop. The way this was implemented seems to mean it re-uses the same vector-mode for both loops, which means the tail loop isn't an actual loop but only executes one iteration.
>>> This patch uses the knowledge of the conditions to enter an epilogue loop to help come up with a potentially more restricive upper bound.
>>> Regression tested on aarch64-linux-gnu and also ran the testsuite using '--param vect-partial-vector-usage=1' detecting no ICEs and no execution failures.
>>> Would be good to have this tested for PPC too as I believe they are the main users of the --param vect-partial-vector-usage=1 option. Can someone help me test (and maybe even benchmark?) this on a PPC target?
>> Thanks for doing this!  I can test it on Power10 which enables this parameter
>> by default, also evaluate its impact on SPEC2017 Ofast/unroll.
> Bootstrapped/regtested on powerpc64le-linux-gnu Power10.
> SPEC2017 run didn't show any remarkable improvement/degradation.
> BR,
> Kewen

More information about the Gcc-patches mailing list