On Fri, 23 Aug 2019, Andre Vieira (lists) wrote:

> Hi,
> 
> In this patch I turn epilogue vectorization on by default.  I had to make
> changes to the tests since the vectorizer dumps now show the analysis for both
> the first and second vectorization. This required checks like
> 'scan-tree-dump-times' to be raised to meet the new numbers. For some tests I
> simply disable the epilogue vectorization, because otherwise it makes it very
> difficult to test for the specific conditions the test was meant for.

I'm not sure how reliable the updating will be since on x86_64 we now
have 4 vector sizes (MMX, SSE, AVX, AVX512) and depending on what
arch you enable you get possibly different epilogues vectorized?

But then you are right, disabling epilogue vectorization for the
whole testsuite seems bad.  Appearantly there were not too many
testcases affected, so maybe doing a more specific update like

{ scan-tree-dump-times "blah" 2 "vect" { target no_epilogue_vect } }
{ scan-tree-dump-times "blah" 2 "vect" { target vect_32B_16B } }
{ ... { target vect_64B_32B16B } }

etc.?  That is, your testcase updates should break archs with
a single vector size?

> Bootstrapped and regression tested on aarch64 and x86_64.

Changing the default is OK, I'm less sure about the testsuite updates.

Maybe the simplest solution is to disable it for the testsuite for now...

> I am not sure whether this is the right thing to do, we might want to enable
> this only for certain targets and if so, I also don't know how to tackle the
> testing issue where all the tests that check the number of times a dump
> mentions something will now depend on whether that test enables epilogue
> vectorization or not. I was trying to avoid disabling the option for all
> tests, since if we do that then we aren't really testing it. Maybe we ought to
> enable the option for all tests, regardless of the targets default. For
> testing purposes.
> 
> Thoughts on this?

I wonder if we can run a testcase for the testsuite coverage, ignoring
all scan-tree-dump stuff somehow?

Richard.

> Cheers,
> Andre
> 
> gcc/ChangeLog:
> 
> 2019-08-23  Andre Vieira  <andre.simoesdiasvie...@arm.com>
> 
>          * params.def (PARAM_VECT_EPILOGUES_NOMASK): Enable by default.
> 
> gcc/testsuite/ChangeLog:
> 
> 2019-08-23  Andre Vieira  <andre.simoesdiasvie...@arm.com>
> 
>          * gcc.dg/vect/fast-math-vect-call-1.c: Raise count for tree dump
> scans.
>          * gcc.dg/vect/no-fast-math-vect16.c: Likewise.
>          * gcc.dg/vect/no-scevccp-noreassoc-slp-reduc-7.c: Likewise.
>          * gcc.dg/vect/no-scevccp-outer-7.c: Likewise.
>          * gcc.dg/vect/no-scevccp-vect-iv-3.c: Likewise.
>          * gcc.dg/vect/no-section-anchors-vect-31.c: Likewise.
>          * gcc.dg/vect/no-section-anchors-vect-64.c: Likewise.
>          * gcc.dg/vect/no-section-anchors-vect-66.c: Likewise.
>          * gcc.dg/vect/no-section-anchors-vect-68.c: Likewise.
>          * gcc.dg/vect/no-vfa-vect-depend-1.c: Likewise.
>          * gcc.dg/vect/no-vfa-vect-depend-2.c: Likewise.
>          * gcc.dg/vect/no-vfa-vect-depend-3.c: Likewise.
>          * gcc.dg/vect/no-vfa-vect-dv-2.c: Likewise.
>          * gcc.dg/vect/pr33804.c: Likewise.
>          * gcc.dg/vect/pr53773.c: Likewise.
>          * gcc.dg/vect/pr65947-1.c: Likewise.
>          * gcc.dg/vect/pr65947-13.c: Likewise.
>          * gcc.dg/vect/pr65947-14.c: Likewise.
>          * gcc.dg/vect/pr65947-4.c: Likewise.
>          * gcc.dg/vect/pr80631-1.c: Likewise.
>          * gcc.dg/vect/pr80631-2.c: Likewise.
>          * gcc.dg/vect/slp-25.c: Likewise.
>          * gcc.dg/vect/slp-reduc-2.c: Likewise.
>          * gcc.dg/vect/slp-reduc-5.c: Likewise.
>          * gcc.dg/vect/slp-reduc-6.c: Likewise.
>          * gcc.dg/vect/slp-widen-mult-half.c: Likewise.
>          * gcc.dg/vect/trapv-vect-reduc-4.c: Likewise.
>          * gcc.dg/vect/vect-103.c: Likewise.
>          * gcc.dg/vect/vect-109.c: Likewise.
>          * gcc.dg/vect/vect-119.c: Likewise.
>          * gcc.dg/vect/vect-26.c: Likewise.
>          * gcc.dg/vect/vect-27.c: Likewise.
>          * gcc.dg/vect/vect-29.c: Likewise.
>          * gcc.dg/vect/vect-42.c: Likewise.
>          * gcc.dg/vect/vect-44.c: Likewise.
>          * gcc.dg/vect/vect-48.c: Likewise.
>          * gcc.dg/vect/vect-50.c: Likewise.
>          * gcc.dg/vect/vect-52.c: Likewise.
>          * gcc.dg/vect/vect-54.c: Likewise.
>          * gcc.dg/vect/vect-56.c: Likewise.
>          * gcc.dg/vect/vect-58.c: Likewise.
>          * gcc.dg/vect/vect-60.c: Likewise.
>          * gcc.dg/vect/vect-72.c: Likewise.
>          * gcc.dg/vect/vect-75-big-array.c: Likewise.
>          * gcc.dg/vect/vect-75.c: Likewise.
>          * gcc.dg/vect/vect-77-alignchecks.c: Likewise.
>          * gcc.dg/vect/vect-77-global.c: Likewise.
>          * gcc.dg/vect/vect-78-alignchecks.c: Likewise.
>          * gcc.dg/vect/vect-78-global.c: Likewise.
>          * gcc.dg/vect/vect-89-big-array.c: Likewise.
>          * gcc.dg/vect/vect-89.c: Likewise.
>          * gcc.dg/vect/vect-91.c: Likewise.
>          * gcc.dg/vect/vect-92.c: Likewise.
>          * gcc.dg/vect/vect-96.c: Likewise.
>          * gcc.dg/vect/vect-alias-check-5.c: Likewise.
>          * gcc.dg/vect/vect-live-2.c: Likewise.
>          * gcc.dg/vect/vect-live-slp-1.c: Likewise.
>          * gcc.dg/vect/vect-live-slp-3.c: Likewise.
>          * gcc.dg/vect/vect-multitypes-1.c: Likewise.
>          * gcc.dg/vect/vect-multitypes-3.c: Likewise.
>          * gcc.dg/vect/vect-multitypes-4.c: Likewise.
>          * gcc.dg/vect/vect-outer-3a-big-array.c: Likewise.
>          * gcc.dg/vect/vect-outer-3a.c: Likewise.
>          * gcc.dg/vect/vect-outer-4.c: Likewise.
>          * gcc.dg/vect/vect-outer-4c-big-array.c: Likewise.
>          * gcc.dg/vect/vect-outer-6.c: Likewise.
>          * gcc.dg/vect/vect-peel-1.c: Likewise.
>          * gcc.dg/vect/vect-peel-2.c: Likewise.
>          * gcc.dg/vect/vect-peel-3.c: Likewise.
>          * gcc.dg/vect/vect-peel-4.c: Likewise.
>          * gcc.dg/vect/vect-reduc-6.c: Likewise.
>          * gcc.dg/vect/vect-reduc-dot-s16a.c: Likewise.
>          * gcc.dg/vect/vect-reduc-dot-s8a.c: Likewise.
>          * gcc.dg/vect/vect-reduc-dot-u16b.c: Likewise.
>          * gcc.dg/vect/vect-reduc-dot-u8a.c: Likewise.
>          * gcc.dg/vect/vect-reduc-dot-u8b.c: Likewise.
>          * gcc.dg/vect/vect-reduc-pattern-1a.c: Likewise.
>          * gcc.dg/vect/vect-reduc-pattern-1b-big-array.c: Likewise.
>          * gcc.dg/vect/vect-reduc-pattern-1c-big-array.c: Likewise.
>          * gcc.dg/vect/vect-reduc-pattern-2a.c: Likewise.
>          * gcc.dg/vect/vect-reduc-pattern-2b-big-array.c: Likewise.
>          * gcc.dg/vect/vect-widen-mult-const-s16.c: Likewise.
>          * gcc.dg/vect/vect-widen-mult-const-u16.c: Likewise.
>          * gcc.dg/vect/vect-widen-mult-half-u8.c: Likewise.
>          * gcc.dg/vect/vect-widen-mult-half.c: Likewise.
>          * gcc.dg/vect/vect-widen-mult-u16.c: Likewise.
>          * gcc.dg/vect/vect-widen-mult-u8-s16-s32.c: Likewise.
>          * gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c: Likewise.
>          * gfortran.dg/vect/vect-4.f90: Likewise.
>          * gcc.dg/vect/pr60092-2.c: Disable epilogue vectorization.
>          * gcc.dg/vect/pr60092.c: Likewise.
>          * gcc.dg/vect/slp-reduc-sad-2.c: Likewise.
>          * gcc.dg/vect/vect-46.c: Likewise.
>          * gcc.dg/vect/vect-86.c: Likewise.
>          * gcc.dg/vect/vect-live-1.c: Likewise.
>          * gcc.dg/vect/vect-live-3.c: Likewise.
>          * gcc.dg/vect/vect-live-4.c: Likewise.
>          * gcc.dg/vect/vect-live-slp-2.c: Likewise.
>          * gcc.dg/vect/vect-multitypes-6.c: Likewise.
>          * gcc.target/aarch64/sve/reduc_strict_3.c: Likewise.
>          * gcc.target/aarch64/sve/spill_2.c: Likewise.
>          * gcc.target/aarch64/sve/spill_6.c: Likewise.
>          * gcc.target/i386/avx-vzeroupper-19.c: Likewise.
>          * gcc.target/i386/avx2-vect-mask-store-move1.c: Likewise.
>          * gcc.target/i386/avx512f-gather-2.c: Likewise.
>          * gcc.target/i386/avx512f-gather-5.c: Likewise.
>          * gcc.target/i386/avx512f-simd-1.c: Likewise.
>          * gcc.target/i386/l_fma_double_1.c: Likewise.
>          * gcc.target/i386/l_fma_double_2.c: Likewise.
>          * gcc.target/i386/l_fma_double_3.c: Likewise.
>          * gcc.target/i386/l_fma_double_4.c: Likewise.
>          * gcc.target/i386/l_fma_double_5.c: Likewise.
>          * gcc.target/i386/l_fma_double_6.c: Likewise.
>          * gcc.target/i386/l_fma_float_1.c: Likewise.
>          * gcc.target/i386/l_fma_float_2.c: Likewise.
>          * gcc.target/i386/l_fma_float_3.c: Likewise.
>          * gcc.target/i386/l_fma_float_4.c: Likewise.
>          * gcc.target/i386/l_fma_float_5.c: Likewise.
>          * gcc.target/i386/l_fma_float_6.c: Likewise.
>          * gcc.target/i386/vect-perm-even-1.c: Likewise.
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 247165 (AG München)

Reply via email to