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

[Bug middle-end/68542] [6 Regression] 10% 481.wrf performance regression


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68542

Ilya Enkovich <ienkovich at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ienkovich at gcc dot gnu.org

--- Comment #1 from Ilya Enkovich <ienkovich at gcc dot gnu.org> ---
I was looking into 481.wrf degradation caused by r230309 on Haswell (-Ofast
-flto).  I found this patch caused many loops in 'sint' function to be
vectorized.  All these loops have form:

DO 1 II=N1STAR,N1END
  IF ( icmask(II,JJ) ) THEN
   ...
  ENDIF
1 CONTINUE

Where icmask is two-dimensional array of logicals.  The problem is that only
35% of icmask values are .TRUE. and these values are not sparse.
This means in vectorized loop we usually have either all 0s or all 1s vector
mask and therefore perform many iterations with zero mask.  Zero check for
vector mask patch by Yuri should (at least partly) resolve this issue.

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