This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC] By default if-convert only basic blocks that will be vectorized (take 2)


Hi!

On Tue, Oct 15, 2013 at 02:32:25PM +0200, Jakub Jelinek wrote:
> Especially on i?86/x86_64 if-conversion pass seems to be often
> a pessimization, but the vectorization relies on it and without it we can't
> vectorize a lot of the loops.

Here is an updated patchset:
- first patch is an updated version of the
  http://gcc.gnu.org/ml/gcc-patches/2013-10/msg01058.html
  patch
- second patch is one variant (easier to write and perhaps maintain,
  but perhaps with higher compile time and memory requirements) of the
  follow up to support if-converted inner loop in outer loop vectorization;
  I have started also working on variant where just the vectorizer
  groks outer loop with LOOP_VECTORIZED call and two inner loops,
  but am only about half way through the needed changes and would
  prefer to wait how these patches actually work out together
- third patch is an updated version of the
  http://gcc.gnu.org/ml/gcc-patches/2012-11/msg00202.html patch, this
  time without if-unconversion pass, but instead performed only in the
  versioned loops for vectorization purposes

All 3 patches bootstrapped/regtested together on x86_64-linux and
i686-linux, the first patch and first+second patch additionally tested
alone with
make -C gcc -j4 -k check RUNTESTFLAGS=vect.exp
make -C gcc check-gfortran RUNTESTFLAGS="dg.exp='assumed_rank* pr32533*' execute.exp='forall* intrinsic_mmloc* pr54767.f90'"
make -C x86*/libgomp check RUNTESTFLAGS=fortran.exp=omp_parse*
(the latter two are set of tests that failed at some point during
the development of the patchset).

If anyone has spare cycles to e.g. SPEC2k{,6} test it on his favourite
platforms (both for resulting code performance and for compile time
and/or compile memory usage), it would be greatly appreciated.

The only targets with masked load/store support are right now i?86/x86_64
with -mavx and higher (and for masked gather load support only -mavx2
and higher), so the last patch will probably be only beneficial to those for
the time being.

	Jakub

Attachment: X992n
Description: Text document

Attachment: X996a
Description: Text document

Attachment: X997e
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]