public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jeffrey A Law <law@cygnus.com>
To: N8TM@aol.com
Cc: amylaar@cygnus.co.uk, egcs@cygnus.com
Subject: Re: 19980707 built on win95/i686-pc-cygwin32
Date: Sun, 12 Jul 1998 00:41:00 -0000	[thread overview]
Message-ID: <8038.900229022@hurl.cygnus.com> (raw)
In-Reply-To: <404f573f.35a864cf@aol.com>

  In message < 404f573f.35a864cf@aol.com >you write:
  > Kernel 9 performance at vector length 101 drops from 58 to 52 Mflops with
  > gcse.  At vector length 15, it is 57 Mflops either way.  This is definitely
  > abnormal, for performance to drop with increasing vector length, and, to me,
  > this would indicate an increase in cache miss rate.
icache or dcache?

Either could be adversely effected I suppose.

The partial redundancy elimination based version of gcse tends to trade
code size for code speed.  So if your code is icache sensitive it could
be a lose.

The dcache effects could possibly occur due to additional register
pressure causing more spills and access into stack slots.

One experiment you might consider trying is to run the older classic
gcse pass instead of the pre based gcse pass.  It doesn't tend to
expand code as much and finds fewer redundancies (and thus needs fewer
regs with cross-block lifetimes).


Look for this code in gcse.c:

      if (optimize_size)
        changed |= one_classic_gcse_pass (f, pass + 1);
      else
        changed |= one_pre_gcse_pass (f, pass + 1);

Change "optimize_size" to "1" to try running the classic gcse pass
instead of the pre based gcse pass.


The majority of the cases where I've seen pre lose in the past have
been register pressure issues.  Addressing these concerns is one of
the primary motivations behind the "lazy code motion" based version
of pre/gcse that Cygnus will donate later this year.

Other cases have been secondary effects related to register lifetimes
and the like.  For example, a register created by gcse may be set in
multiple places, which inhibits certain optimizations -- the old
code would compute the same value in multiple locations into multiple
regs (usually each being set only once).  That kind of stuff.


jeff

  reply	other threads:[~1998-07-12  0:41 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-07-12  0:41 N8TM
1998-07-12  0:41 ` Jeffrey A Law [this message]
  -- strict thread matches above, loose matches on Subject: below --
1998-07-12  9:18 N8TM
1998-07-12  8:15 N8TM
1998-07-10 23:05 N8TM
1998-07-11 22:54 ` Jeffrey A Law
1998-07-10 20:04 N8TM
1998-07-10  0:33 N8TM
1998-07-10  7:01 ` Hannu Koivisto
1998-07-10 15:56 ` Joern Rennecke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8038.900229022@hurl.cygnus.com \
    --to=law@cygnus.com \
    --cc=N8TM@aol.com \
    --cc=amylaar@cygnus.co.uk \
    --cc=egcs@cygnus.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).