Re: [PATCH 2/2][vect]Make vect-epilogues-nomask=1 default

2019-10-31 Thread Jakub Jelinek
On Wed, Oct 30, 2019 at 06:16:43PM +, Andre Vieira (lists) wrote:
> 2019-10-30  Andre Vieira  
> 
> * params.def (PARAM_VECT_EPILOGUES_NOMASK): Enable by default.

This broke quite a few tests in libgomp, and as they are execution failures,
just trying to work around it in the test is not a good idea.
Admittely, I haven't bisected it, but:
make check RUNTESTFLAGS="--target_board=unix/--param=vect-epilogues-nomask=0 
c.exp='loop-1.c simd-*.c scan*.c pr58392.c' c++.exp='loop-1.c simd-*.C' 
fortran.exp='simd-*.f90 nestedfn*.f90'"
in libgomp on x86_64-linux (with avx512{f,bw,vl,dq} available in hw)
succeeds, while
make check RUNTESTFLAGS="c.exp='loop-1.c simd-*.c scan*.c pr58392.c' 
c++.exp='loop-1.c simd-*.C' fortran.exp='simd-*.f90 nestedfn*.f90'"
results in:
FAIL: libgomp.c/../libgomp.c-c++-common/loop-1.c execution test
FAIL: libgomp.c/examples-4/simd-3.c execution test
FAIL: libgomp.c/pr58392.c execution test
FAIL: libgomp.c/scan-13.c execution test
FAIL: libgomp.c/scan-17.c execution test
FAIL: libgomp.c/scan-19.c execution test
FAIL: libgomp.c/scan-20.c execution test
FAIL: libgomp.c/simd-10.c execution test
FAIL: libgomp.c/simd-12.c execution test
FAIL: libgomp.c/simd-13.c execution test
FAIL: libgomp.c/simd-6.c execution test
FAIL: libgomp.c++/../libgomp.c-c++-common/loop-1.c execution test
FAIL: libgomp.c++/simd-8.C execution test
FAIL: libgomp.fortran/examples-4/simd-3.f90   -O1  execution test
FAIL: libgomp.fortran/examples-4/simd-3.f90   -O2  execution test
FAIL: libgomp.fortran/examples-4/simd-3.f90   -O3 -fomit-frame-pointer 
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
FAIL: libgomp.fortran/examples-4/simd-3.f90   -O3 -g  execution test
FAIL: libgomp.fortran/examples-4/simd-3.f90   -Os  execution test
FAIL: libgomp.fortran/nestedfn5.f90   -O1  execution test
FAIL: libgomp.fortran/nestedfn5.f90   -O2  execution test
FAIL: libgomp.fortran/nestedfn5.f90   -O3 -fomit-frame-pointer -funroll-loops 
-fpeel-loops -ftracer -finline-functions  execution test
FAIL: libgomp.fortran/nestedfn5.f90   -O3 -g  execution test
FAIL: libgomp.fortran/nestedfn5.f90   -Os  execution test

On i686-linux, I also see newly
FAIL: gcc.dg/vect/vect-epilogues.c -flto -ffat-lto-objects  scan-tree-dump vect 
"LOOP EPILOGUE VECTORIZED"
FAIL: gcc.dg/vect/vect-epilogues.c scan-tree-dump vect "LOOP EPILOGUE 
VECTORIZED"
and in libgomp just
FAIL: libgomp.c/examples-4/simd-3.c execution test
FAIL: libgomp.c/scan-13.c execution test
FAIL: libgomp.c/scan-17.c execution test
FAIL: libgomp.fortran/examples-4/simd-3.f90   -O1  execution test
FAIL: libgomp.fortran/examples-4/simd-3.f90   -O2  execution test
FAIL: libgomp.fortran/examples-4/simd-3.f90   -O3 -fomit-frame-pointer 
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
FAIL: libgomp.fortran/examples-4/simd-3.f90   -O3 -g  execution test
FAIL: libgomp.fortran/examples-4/simd-3.f90   -Os  execution test

Jakub



Re: [PATCH 2/2][vect]Make vect-epilogues-nomask=1 default

2019-10-31 Thread Tobias Burnus

This patch seems to break
   libgomp.fortran/examples-4/simd-3.f90
at run time as the calculated value is way off: "diff = sum - sum_ref" 
is -12576 while abs(diff) < 1e-16 is the check.
It works with -O0 or without -mavx; (Hence, -Os or -O1 + -mavx cause the 
fail.)


Please have a look.

Tobias

PS: I also see other failures, namely, libgomp.fortran/nestedfn5.f90 and 
libgomp.fortran/simd1.f90 – but I have not checked whether the reason is 
the same or due to my tree or … For 
libgomp.fortran/examples-4/simd-3.f90 I did a proper bisecting.



On 10/30/19 7:16 PM, Andre Vieira (lists) wrote:

Hi,

In this patch I turn epilogue vectorization on by default for all 
targets. After some discussions I decided to take the following 
testing approach:


1) I have disabled epilogue vectorization for all tests that failed 
due to scan-tree-dump failures inside:

  - gcc.dg/vect
  - gcc.target/i386
  - gcc.target/aarch6
  - gfortran.dg/vect

2) Added the Bugzilla's reported testcase but xfail the scan for 
EPILOGUE VECTORIZED for arm*-*-* as that target does not vectorize the 
epilogue.



I have only been able to test this for aarch64, arm and x86_64 (with 
avx512).  Other targets may also want to disable epilogue 
vectorization like I did for gcc.target and gcc.dg/vect tests or xfail 
the gcc.dg/vect/vect-epilogues.c test. I am relying on others to test 
this for their available targets, thanks in advance!


Is this OK for trunk?


Cheers,
Andre

gcc/ChangeLog:

2019-10-30  Andre Vieira  

    * params.def (PARAM_VECT_EPILOGUES_NOMASK): Enable by default.

gcc/testsuite/ChangeLog:

2019-10-30  Andre Vieira  

    * gcc.dg/vect/vect-epilogues.c: New test.
    * gcc.dg/vect/fast-math-vect-call-1.c: Disable for epilogue
    vectorization.
    * 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-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-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-23.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-reduc-sad-2.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-24.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-cond-reduc-3.c: Likewise.
    * gcc.dg/vect/vect-cond-reduc-4.c: Likewise.
    * gcc.dg/vect/vect-live-1.c: Likewise.
    * gcc.dg/vect/vect-live-2.c: Likewise.
    * gcc.dg/vect/vect-live-3.c: Likewise.
    * gcc.dg/vect/vect-live-4.c: Likewise.
    * gcc.dg/vect/vect-live-slp-1.c: Likewise.
    * gcc.dg/vect/vect-live-slp-2.c: Likewise.
    * gcc.dg/vect/vect-live-slp-3.c: Likewise.
    * gcc.dg/vect/vect-multitypes-3.c: Likewise.
    * gcc.dg/vect/vect-multitypes-4.c: Likewise.
    * gcc.dg/vect/vect-multitypes-6.c: Likewise.
    * gcc.dg/vect/vect-peel-1-epilogue.c: Likewise. New test.
    * gcc.dg/vect/vect-peel-1-src.c: Likewise. New test.
   

Re: [PATCH 2/2][vect]Make vect-epilogues-nomask=1 default

2019-10-30 Thread Richard Biener
On October 30, 2019 7:16:43 PM GMT+01:00, "Andre Vieira (lists)" 
 wrote:
>Hi,
>
>In this patch I turn epilogue vectorization on by default for all 
>targets. After some discussions I decided to take the following testing
>
>approach:
>
>1) I have disabled epilogue vectorization for all tests that failed due
>
>to scan-tree-dump failures inside:
>   - gcc.dg/vect
>   - gcc.target/i386
>   - gcc.target/aarch6
>   - gfortran.dg/vect
>
>2) Added the Bugzilla's reported testcase but xfail the scan for 
>EPILOGUE VECTORIZED for arm*-*-* as that target does not vectorize the 
>epilogue.
>
>
>I have only been able to test this for aarch64, arm and x86_64 (with 
>avx512).  Other targets may also want to disable epilogue vectorization
>
>like I did for gcc.target and gcc.dg/vect tests or xfail the 
>gcc.dg/vect/vect-epilogues.c test. I am relying on others to test this 
>for their available targets, thanks in advance!
>
>Is this OK for trunk?

Ok. 

Thanks, 
Richard. 

>
>Cheers,
>Andre
>
>gcc/ChangeLog:
>
>2019-10-30  Andre Vieira  
>
> * params.def (PARAM_VECT_EPILOGUES_NOMASK): Enable by default.
>
>gcc/testsuite/ChangeLog:
>
>2019-10-30  Andre Vieira  
>
> * gcc.dg/vect/vect-epilogues.c: New test.
> * gcc.dg/vect/fast-math-vect-call-1.c: Disable for epilogue
> vectorization.
> * 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-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-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-23.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-reduc-sad-2.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-24.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-cond-reduc-3.c: Likewise.
> * gcc.dg/vect/vect-cond-reduc-4.c: Likewise.
> * gcc.dg/vect/vect-live-1.c: Likewise.
> * gcc.dg/vect/vect-live-2.c: Likewise.
> * gcc.dg/vect/vect-live-3.c: Likewise.
> * gcc.dg/vect/vect-live-4.c: Likewise.
> * gcc.dg/vect/vect-live-slp-1.c: Likewise.
> * gcc.dg/vect/vect-live-slp-2.c: Likewise.
> * gcc.dg/vect/vect-live-slp-3.c: Likewise.
> * gcc.dg/vect/vect-multitypes-3.c: Likewise.
> * gcc.dg/vect/vect-multitypes-4.c: Likewise.
> * gcc.dg/vect/vect-multitypes-6.c: Likewise.
> * gcc.dg/vect/vect-peel-1-epilogue.c: Likewise. New test.
> * gcc.dg/vect/vect-peel-1-src.c: Likewise. New test.
> * gcc.dg/vect/vect-peel-1.c: Likewise.
> * gcc.dg/vect/vect-peel-3-epilogue.c: Likewise. New test.
> * gcc.dg/vect/vect-peel-3-src.c: Likewise. New test.
> * gcc.dg/vect/vect-peel-3.c: Likewise.
> * gcc.dg/vect/vect-peel-4-epilogue.c: Likewise. New test.
> * 

Re: [PATCH 2/2][vect]Make vect-epilogues-nomask=1 default

2019-10-30 Thread Andre Vieira (lists)

Hi,

In this patch I turn epilogue vectorization on by default for all 
targets. After some discussions I decided to take the following testing 
approach:


1) I have disabled epilogue vectorization for all tests that failed due 
to scan-tree-dump failures inside:

  - gcc.dg/vect
  - gcc.target/i386
  - gcc.target/aarch6
  - gfortran.dg/vect

2) Added the Bugzilla's reported testcase but xfail the scan for 
EPILOGUE VECTORIZED for arm*-*-* as that target does not vectorize the 
epilogue.



I have only been able to test this for aarch64, arm and x86_64 (with 
avx512).  Other targets may also want to disable epilogue vectorization 
like I did for gcc.target and gcc.dg/vect tests or xfail the 
gcc.dg/vect/vect-epilogues.c test. I am relying on others to test this 
for their available targets, thanks in advance!


Is this OK for trunk?


Cheers,
Andre

gcc/ChangeLog:

2019-10-30  Andre Vieira  

* params.def (PARAM_VECT_EPILOGUES_NOMASK): Enable by default.

gcc/testsuite/ChangeLog:

2019-10-30  Andre Vieira  

* gcc.dg/vect/vect-epilogues.c: New test.
* gcc.dg/vect/fast-math-vect-call-1.c: Disable for epilogue
vectorization.
* 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-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-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-23.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-reduc-sad-2.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-24.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-cond-reduc-3.c: Likewise.
* gcc.dg/vect/vect-cond-reduc-4.c: Likewise.
* gcc.dg/vect/vect-live-1.c: Likewise.
* gcc.dg/vect/vect-live-2.c: Likewise.
* gcc.dg/vect/vect-live-3.c: Likewise.
* gcc.dg/vect/vect-live-4.c: Likewise.
* gcc.dg/vect/vect-live-slp-1.c: Likewise.
* gcc.dg/vect/vect-live-slp-2.c: Likewise.
* gcc.dg/vect/vect-live-slp-3.c: Likewise.
* gcc.dg/vect/vect-multitypes-3.c: Likewise.
* gcc.dg/vect/vect-multitypes-4.c: Likewise.
* gcc.dg/vect/vect-multitypes-6.c: Likewise.
* gcc.dg/vect/vect-peel-1-epilogue.c: Likewise. New test.
* gcc.dg/vect/vect-peel-1-src.c: Likewise. New test.
* gcc.dg/vect/vect-peel-1.c: Likewise.
* gcc.dg/vect/vect-peel-3-epilogue.c: Likewise. New test.
* gcc.dg/vect/vect-peel-3-src.c: Likewise. New test.
* gcc.dg/vect/vect-peel-3.c: Likewise.
* gcc.dg/vect/vect-peel-4-epilogue.c: Likewise. New test.
* gcc.dg/vect/vect-peel-4-src.c: Likewise. New test.
* 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-s8b.c: 

Re: [PATCH 2/2][vect]Make vect-epilogues-nomask=1 default

2019-09-04 Thread Jeff Law
On 8/23/19 10:50 AM, Andre Vieira (lists) wrote:
> 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.
In general we try to drive things with proper costing rather than
enabling/disabling transformations based on the target.  If we need to
adjust cost models, then we're better off getting the bits in now to
give developers a chance to make those adjustments.

WRT testing.  One approach would be to somehow indicate in the dump file
that we're dealing with an epilogue by prefixing the messages.  THen the
scanner could distinguish between main loop vectorization and epilogue
vectorization.  I'm not sure how invasive that would be.

I think the approach you've taken here is fine for now.


jeff


Re: [PATCH 2/2][vect]Make vect-epilogues-nomask=1 default

2019-08-26 Thread Richard Biener
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  
> 
>  * params.def (PARAM_VECT_EPILOGUES_NOMASK): Enable by default.
> 
> gcc/testsuite/ChangeLog:
> 
> 2019-08-23  Andre Vieira  
> 
>  * 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: 

[PATCH 2/2][vect]Make vect-epilogues-nomask=1 default

2019-08-23 Thread Andre Vieira (lists)

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.


Bootstrapped and regression tested on aarch64 and x86_64.

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?

Cheers,
Andre

gcc/ChangeLog:

2019-08-23  Andre Vieira  

 * params.def (PARAM_VECT_EPILOGUES_NOMASK): Enable by default.

gcc/testsuite/ChangeLog:

2019-08-23  Andre Vieira  

 * 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.
 *