public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* SPEC sixtrack regression on 64 bits machines
@ 2005-08-16 18:44 Steven Bosscher
  2005-08-17  0:41 ` Sebastian Pop
  0 siblings, 1 reply; 3+ messages in thread
From: Steven Bosscher @ 2005-08-16 18:44 UTC (permalink / raw)
  To: Sebastian Pop; +Cc: gcc

Hi,

Something commited a few days ago had resulted in a serious performance
hit for SPEC sixtrack on 64 bits machines...  The obvious suspect is
Sebastian Pop's scev patch.  The affected targets are at least AMD64 [1]
and PPC64 [2] but not i686 [3].

Sebastian, any idea what might have caused this?

Gr.
Steven

[1] http://www.suse.de/~aj/SPEC/amd64/CFP/summary-britten/200_sixtrack_recent_big.png
[2] http://people.redhat.com/dnovillo/spec2000.ppc64/gcc/200.sixtrack-run-ratio.png
[2] http://people.redhat.com/dnovillo/spec2000.i686/gcc/200.sixtrack-run-ratio.png

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: SPEC sixtrack regression on 64 bits machines
  2005-08-16 18:44 SPEC sixtrack regression on 64 bits machines Steven Bosscher
@ 2005-08-17  0:41 ` Sebastian Pop
  2005-08-17  0:58   ` Daniel Berlin
  0 siblings, 1 reply; 3+ messages in thread
From: Sebastian Pop @ 2005-08-17  0:41 UTC (permalink / raw)
  To: Steven Bosscher; +Cc: gcc, dberlin

Steven Bosscher wrote:
> Hi,
> 
> Something commited a few days ago had resulted in a serious performance
> hit for SPEC sixtrack on 64 bits machines...  The obvious suspect is
> Sebastian Pop's scev patch.  The affected targets are at least AMD64 [1]
> and PPC64 [2] but not i686 [3].
> 
> Sebastian, any idea what might have caused this?
> 

doing a diff between the ivopts dump of current mainline and mainline
with patch for PR22236 reverted, I'm getting lots of:

-  (scalar_evolution = {(int8) lsm_tmp.63_323, +, 1}_3))
+  (scalar_evolution = (int8) {lsm_tmp.63_323, +, 1}_3))

These are due to the fact that scev_probably_wraps cannot prove that
these iv do not wrap (because the initial condition is unknown), so
the conversion fails and the cast is just kept around.

The consequence is that later on, you get less variables eliminated,

-  D.897_174 is invariant (19), eliminable
+  D.897_174 is invariant (19)

and in the context of a loop, a higher register pressure could cause
the regression.  Why is this happen on amd64 and not i686?  Because
type conversions are much more numerous on amd64, so simple iv on i686
would be wrapped into casts on amd64.

So the fix for this performance regression (if there is a fix...) is
to track every case where we get less precise information, and try to
improve the knowledge of the analyzer for making it again able to
convert.  I'll work on some patches.

seb

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: SPEC sixtrack regression on 64 bits machines
  2005-08-17  0:41 ` Sebastian Pop
@ 2005-08-17  0:58   ` Daniel Berlin
  0 siblings, 0 replies; 3+ messages in thread
From: Daniel Berlin @ 2005-08-17  0:58 UTC (permalink / raw)
  To: Sebastian Pop; +Cc: Steven Bosscher, gcc

On Wed, 2005-08-17 at 02:45 +0200, Sebastian Pop wrote:
> Steven Bosscher wrote:
> > Hi,
> > 
> > Something commited a few days ago had resulted in a serious performance
> > hit for SPEC sixtrack on 64 bits machines...  The obvious suspect is
> > Sebastian Pop's scev patch.  The affected targets are at least AMD64 [1]
> > and PPC64 [2] but not i686 [3].
> > 
> > Sebastian, any idea what might have caused this?
> > 
> 
> doing a diff between the ivopts dump of current mainline and mainline
> with patch for PR22236 reverted, I'm getting lots of:
> 
> -  (scalar_evolution = {(int8) lsm_tmp.63_323, +, 1}_3))
> +  (scalar_evolution = (int8) {lsm_tmp.63_323, +, 1}_3))
> 
> These are due to the fact that scev_probably_wraps cannot prove that
> these iv do not wrap (because the initial condition is unknown), so
> the conversion fails and the cast is just kept around.
> 
> The consequence is that later on, you get less variables eliminated,
> 
> -  D.897_174 is invariant (19), eliminable
> +  D.897_174 is invariant (19)
> 
> and in the context of a loop, a higher register pressure could cause
> the regression.  Why is this happen on amd64 and not i686?  Because
> type conversions are much more numerous on amd64, so simple iv on i686
> would be wrapped into casts on amd64.
> 
> So the fix for this performance regression (if there is a fix...) is
> to track every case where we get less precise information, and try to
> improve the knowledge of the analyzer for making it again able to
> convert.  I'll work on some patches.

As a start, -funsafe-loop-optimizations should make scev_probably_wraps
return false in almost all cases.



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2005-08-17  0:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-08-16 18:44 SPEC sixtrack regression on 64 bits machines Steven Bosscher
2005-08-17  0:41 ` Sebastian Pop
2005-08-17  0:58   ` Daniel Berlin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).