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]

Re: RFA: matmul/transpose optimisation


On Tue, Dec 06, 2005 at 06:18:37PM +0000, Richard Sandiford wrote:
> Index: libgfortran/m4/matmul.m4
> ===================================================================
> *** libgfortran/m4/matmul.m4	(revision 108072)
> --- libgfortran/m4/matmul.m4	(working copy)
> --- 219,246 ----
>   	    }
>   	}
>       }
> !   else if (rxstride == 1 && aystride == 1 && bxstride == 1)
> !     {
> !       rtype_name *bbase_y;
> !       rtype_name *dest_y;
> !       rtype_name *abase_x;

I think you'll want to mark the above variables as

      const rtype_name * restrict bbase_y;
      rtype_name * restrict dest_y;
      const rtype_name * restrict abase_n;

Otherwise the vectorizer doesn't get it. See matmul.m4 in trunk for
details. You can check that it works by adding
-ftree-vectorizer-verbose=5 -msse2 after the -ftree-vectorize for
$(i_matmul_c) in Makefile.am and recompiling.

> --- 252,278 ----
>   	    /* dest[x,y] += a[x,n] * b[n,y] */
>   	    dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
>       }
> +   else
> +     {
> +       rtype_name *bbase_y;
> +       rtype_name *dest_y;
> +       rtype_name *abase_x;
> +       rtype_name s;

Same here.


-- 
Janne Blomqvist

Attachment: pgp00000.pgp
Description: PGP signature


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