This is the mail archive of the gcc@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]

Re: Vectorizing HIRLAM 1: This dependence is determinable.


	This one does get vectorized with autovect-branch:

[ example with source and destination array exactly overlapping ]

	 ~/autovect_cvs/bin/gfortran -O3 -ftree-vectorize -maltivec
	-ftree-vectorizer-verbose=4 -S hilaram1.f90

	hilaram1.f90:5: note: dependence distance  = 0.
	hilaram1.f90:5: note: accesses have the same alignment.
	hilaram1.f90:5: note: dependence distance modulo vf == 0 between
	(*a_25)[D.949_60] and (*a_25)[D.949_60]
	hilaram1.f90:5: note: Alignment of access forced using peeling.
	hilaram1.f90:5: note: Vectorizing an unaligned access.
	hilaram1.f90:5: note: LOOP VECTORIZED.
	hilaram1.f90:9: note: vectorized 1 loops in function.

	dorit

Indeed, it works on x86_64-unknown-linux-gnu too, with the
autovect branch.

	> L.S.,
	>
	> This code:
	>
	>       SUBROUTINE S(N, M)
	>       DIMENSION A(N, M), B(N, M)
	>       READ*,A,B
	>       DO J = 1, M
	>          DO I = 1, N
	>             A(I, J) = A(I, J) + B(I, J)
	>          ENDDO
	>       ENDDO
	>       PRINT*,A
	>       END

Unfortunately, it's only this example that works.  I still see
a lot of cases when using the autovect branch compiler on HIRLAM.

I'll try to distill another example.

Kind regards,

-- 
Toon Moene - e-mail: toon@moene.indiv.nluug.nl - phone: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
A maintainer of GNU Fortran 95: http://gcc.gnu.org/fortran/


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