From: Richard Guenther Date: Wed, 9 May 2012 12:59:46 +0000 (+0000) Subject: re PR tree-optimization/18437 (vectorizer failed for matrix multiplication) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e7ff45102cfddb8e827c187246315eced6194dc1;p=gcc.git re PR tree-optimization/18437 (vectorizer failed for matrix multiplication) 2012-05-09 Richard Guenther PR tree-optimization/18437 * gfortran.dg/vect/rnflow-trs2a2.f90: Move ... * gfortran.dg/vect/fast-math-rnflow-trs2a2.f90: ... here. From-SVN: r187330 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 84c31a06676..00999072e34 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-05-09 Richard Guenther + + PR tree-optimization/18437 + * gfortran.dg/vect/rnflow-trs2a2.f90: Move ... + * gfortran.dg/vect/fast-math-rnflow-trs2a2.f90: ... here. + 2012-05-09 Jakub Jelinek PR tree-optimization/53226 diff --git a/gcc/testsuite/gfortran.dg/vect/fast-math-rnflow-trs2a2.f90 b/gcc/testsuite/gfortran.dg/vect/fast-math-rnflow-trs2a2.f90 new file mode 100644 index 00000000000..1d13cea80e0 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/vect/fast-math-rnflow-trs2a2.f90 @@ -0,0 +1,33 @@ +! { dg-do compile } +! { dg-require-effective-target vect_double } + + function trs2a2 (j, k, u, d, m) +! matrice de transition intermediaire, partant de k sans descendre +! sous j. R = IjU(I-Ik)DIj, avec Ii = deltajj, j >= i. +! alternative: trs2a2 = 0 +! trs2a2 (j:k-1, j:k-1) = matmul (utrsft (j:k-1,j:k-1), +! dtrsft (j:k-1,j:k-1)) +! + real, dimension (1:m,1:m) :: trs2a2 ! resultat + real, dimension (1:m,1:m) :: u, d ! matrices utrsft, dtrsft + integer, intent (in) :: j, k, m ! niveaux vallee pic +! +!##### following line replaced by Prentice to make less system dependent +! real (kind = kind (1.0d0)) :: dtmp + real (kind = selected_real_kind (10,50)) :: dtmp +! + trs2a2 = 0.0 + do iclw1 = j, k - 1 + do iclw2 = j, k - 1 + dtmp = 0.0d0 + do iclww = j, k - 1 + dtmp = dtmp + u (iclw1, iclww) * d (iclww, iclw2) + enddo + trs2a2 (iclw1, iclw2) = dtmp + enddo + enddo + return + end function trs2a2 + +! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } +! { dg-final { cleanup-tree-dump "vect" } } diff --git a/gcc/testsuite/gfortran.dg/vect/rnflow-trs2a2.f90 b/gcc/testsuite/gfortran.dg/vect/rnflow-trs2a2.f90 deleted file mode 100644 index 1d13cea80e0..00000000000 --- a/gcc/testsuite/gfortran.dg/vect/rnflow-trs2a2.f90 +++ /dev/null @@ -1,33 +0,0 @@ -! { dg-do compile } -! { dg-require-effective-target vect_double } - - function trs2a2 (j, k, u, d, m) -! matrice de transition intermediaire, partant de k sans descendre -! sous j. R = IjU(I-Ik)DIj, avec Ii = deltajj, j >= i. -! alternative: trs2a2 = 0 -! trs2a2 (j:k-1, j:k-1) = matmul (utrsft (j:k-1,j:k-1), -! dtrsft (j:k-1,j:k-1)) -! - real, dimension (1:m,1:m) :: trs2a2 ! resultat - real, dimension (1:m,1:m) :: u, d ! matrices utrsft, dtrsft - integer, intent (in) :: j, k, m ! niveaux vallee pic -! -!##### following line replaced by Prentice to make less system dependent -! real (kind = kind (1.0d0)) :: dtmp - real (kind = selected_real_kind (10,50)) :: dtmp -! - trs2a2 = 0.0 - do iclw1 = j, k - 1 - do iclw2 = j, k - 1 - dtmp = 0.0d0 - do iclww = j, k - 1 - dtmp = dtmp + u (iclw1, iclww) * d (iclww, iclw2) - enddo - trs2a2 (iclw1, iclw2) = dtmp - enddo - enddo - return - end function trs2a2 - -! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } -! { dg-final { cleanup-tree-dump "vect" } }