Thank you Kewen!!
I will apply this now.
BR,
Andre
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