[Bug libfortran/21468] vectorizing libfortran
--- Comment #11 from fxcoudert at gcc dot gnu dot org 2007-04-18 23:01 --- Closing this. We should really open new PRs for different intrinsics, when we have code and perf measurements. -- fxcoudert at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|4.1.0 |--- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Status|REOPENED|NEW http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
--- Comment #10 from dorit at il dot ibm dot com 2006-01-08 13:49 --- Reopening since many of the intrinsics could still vectorize better. Could help if you list specific functions that you expect to get vectorized. As far as dotprod is concerned - if it's operating on floats, you need to use -ffast-math or -funsafe-math-optimizations to enable vectorization. If it's dotprod of integers - probably the recent patches I sent to support reduction patterns (http://gcc.gnu.org/ml/gcc-patches/2005-12/msg01896.html) would be required (this functionality is present in auotvect; you can try to see if it's vectorized any better with autovect-branch). -- dorit at il dot ibm dot com changed: What|Removed |Added CC||dorit at il dot ibm dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
--- Comment #9 from jb at gcc dot gnu dot org 2006-01-06 14:47 --- Reopening since many of the intrinsics could still vectorize better. -- jb at gcc dot gnu dot org changed: What|Removed |Added Status|RESOLVED|REOPENED Resolution|FIXED | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
--- Comment #8 from pinskia at gcc dot gnu dot org 2006-01-06 04:31 --- Fixed for 4.1.0. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED Target Milestone|--- |4.1.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
--- Comment #7 from jb at gcc dot gnu dot org 2005-11-14 19:48 --- Subject: Bug 21468 Author: jb Date: Mon Nov 14 19:48:31 2005 New Revision: 106898 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=106898 Log: 2005-11-14 Janne Blomqvist [EMAIL PROTECTED] PR fortran/21468 * Makefile.am: Add -ftree-vectorize for compiling matmul. * m4/matmul.m4: Add const and restrict to type declarations as appropriate. * m4/matmull.m4: Likewise. * Makefile.in: Regenerated. * generated/matmul_*.c: Likewise. Modified: trunk/libgfortran/ChangeLog trunk/libgfortran/Makefile.am trunk/libgfortran/Makefile.in trunk/libgfortran/generated/matmul_c10.c trunk/libgfortran/generated/matmul_c16.c trunk/libgfortran/generated/matmul_c4.c trunk/libgfortran/generated/matmul_c8.c trunk/libgfortran/generated/matmul_i16.c trunk/libgfortran/generated/matmul_i4.c trunk/libgfortran/generated/matmul_i8.c trunk/libgfortran/generated/matmul_l16.c trunk/libgfortran/generated/matmul_l4.c trunk/libgfortran/generated/matmul_l8.c trunk/libgfortran/generated/matmul_r10.c trunk/libgfortran/generated/matmul_r16.c trunk/libgfortran/generated/matmul_r4.c trunk/libgfortran/generated/matmul_r8.c trunk/libgfortran/m4/matmul.m4 trunk/libgfortran/m4/matmull.m4 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
--- Comment #6 from jb at gcc dot gnu dot org 2005-11-13 19:42 --- Patch for matmul here: http://gcc.gnu.org/ml/fortran/2005-11/msg00366.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
--- Comment #4 from jb at gcc dot gnu dot org 2005-11-11 21:55 --- Seems like libgfortran vectorizes much better now. Compiling with -ftree-vectorize -ftree-vectorizer-verbose=5 -msse2 added to CFLAGS (I didn't try with FCFLAGS) and grepping the output for LOOP VECTORIZED shows ../../../trunk/libgfortran/generated/maxloc0_4_i4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_8_i4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_4_i8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_8_i8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_4_r4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_8_r4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_4_r8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_8_r8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_4_r10.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc0_8_r10.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_4_i4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_8_i4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_4_i8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_8_i8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_4_r4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_8_r4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_4_r8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_8_r8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_4_r10.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxloc1_8_r10.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxval_i4.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxval_i8.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxval_r4.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxval_r8.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/maxval_r10.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_4_i4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_8_i4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_4_i8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_8_i8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_4_r4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_8_r4.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_4_r8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_8_r8.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_4_r10.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc0_8_r10.c:232: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_4_i4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_8_i4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_4_i8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_8_i8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_4_r4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_8_r4.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_4_r8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_8_r8.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_4_r10.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minloc1_8_r10.c:279: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minval_i4.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minval_i8.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minval_r4.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minval_r8.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/minval_r10.c:273: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_i4.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_i8.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_r4.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_r8.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_r10.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_c4.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_c8.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/product_c10.c:271: note: LOOP VECTORIZED. ../../../trunk/libgfortran/generated/sum_i4.c:271: note: LOOP VECTORIZED.
[Bug libfortran/21468] vectorizing libfortran
--- Comment #5 from jb at gcc dot gnu dot org 2005-11-11 23:13 --- Actually, by marking the arguments to matmul as restrict pointers, I was able to vectorize the main loop for unit stride. I'll produce a patch at some point.. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
--- Additional Comments From tobi at gcc dot gnu dot org 2005-09-22 22:02 --- Can this be done now that PR22480 is fixed? -- What|Removed |Added CC||tobi at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
-- Bug 21468 depends on bug 22480, which changed state. Bug 22480 Summary: [4.1 Regression] ICE in convert_move, at expr.c:390 with -ftree-vectorize http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22480 What|Old Value |New Value Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-12 15:23 --- PR 22480 refences a PR which currently blocks doing this. -- What|Removed |Added BugsThisDependsOn||22480 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468
[Bug libfortran/21468] vectorizing libfortran
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-05-09 21:32 --- Confirmed, the only loop that was optimized was: for (i = 0; i VALUES_SIZE; i++) values[i] = - GFC_INTEGER_4_HUGE; The agruments to intrinsics really should have restrict on them to get the partly fortran aliasing rules. -- What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed||1 Last reconfirmed|-00-00 00:00:00 |2005-05-09 21:32:51 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21468