public inbox for cgen@sourceware.org
 help / color / mirror / Atom feed
From: Doug Evans <dje@transmeta.com>
To: Joern Rennecke <joernr@arc.com>
Cc: cgen@sources.redhat.com
Subject: Re: delayed branches and zero overhead loops
Date: Wed, 14 Feb 2007 18:30:00 -0000	[thread overview]
Message-ID: <17875.21785.589853.195295@casey.transmeta.com> (raw)
In-Reply-To: <20070213203746.GA16492@elsdt-razorfish.arc.com>

Joern Rennecke writes:
 > On Tue, Feb 13, 2007 at 11:24:53AM -0800, Doug Evans wrote:
 > > It sounds like you want to add an application specific entry to the
 > > cpu description file.  For me that's an ipso-facto wrong way to go.
 > 
 > This is something only of concern to applications that care about the
 > semantics of the insns.  Thus, gas does not need to know about this.

Clearly. [And the chosen implementation is specific to the
particular simulator you're writing.]

 > If you wanted to generate a gcc machine description, than this is
 > in principle relevant - except that expressing this all in generic rtl
 > would likely lead the machine description generator to give up,
 > since it won't be able to find any basic arithmetic instructions -
 > every instruction will be flagged as having conditional flow control.

I wouldn't add this specification to the insns.  Blech.
I would add it to the same place where "condition" and "setup-semantics" is.
No claim is made that new fields that are reasonable can't be added here.

 > > Having said that, I can imagine partitioning the description file
 > > into multiple files such that these pseudo-insns are only seen by
 > > the application in question.
 > 
 > Why does it have to be yet another file?  There is already a syntax-only
 > attribute that specifies that some information is only for applications that
 > care about syntax.
 > Not that I am fundamentally opposed to doing it with separate files,
 > but it appears to me that it makes things core complicated rather than
 > simpler.

There's no basic limit on the number of applications that can use cgen.
I would argue against a modus operandi that had the default behaviour
of adding such (obvious) application specific stuff to the basic
cpu description file.  When working with libraries, programmers don't
think of modifying the library in their first pass at using it.
Same reasoning applies here.

Having said that, I can envision providing the necessary specification
along side setup-semantics, and then having the simulator make use of it.
If done this way, the specification is of the architecture in a (hopefully)
reasonably useful way and any app that wants to make use of the data can.

 > If you want it to frame it in terms that give universal meaning to the
 > instruction semantics, you can express it in three pieces:
 > - A piece of rtl that might need to be appeded to the semantics of 
 >   every instruction.
 > - A condition that tests if this piece of rtl should actually be
 >   executed, for use in a simple interpreter.
 > - In the mloop.in:xextract-pbb code, code that computes at decode time
 >   when to append the pseudo insn to a pbb
 >   (or if you have some other use for a pseudo insn that doesn't end
 >    a pbb, you might also stick it into the middle).

Right, setting aside the last part.  I'm not sure I'd do it that way,
but I haven't been in that particular code for awhile.

 > > Thus question: Is there a way to express the zero-overhead
 > > loops in an a way that is more faithful to being just a
 > > description of the architecture, and not an application specific hack.
 > 
 > As I said above, you can do it by adding rtl to every instruction that makes
 > every instruction COND_CTI.

And (I think) we both agree this isn't the best way to go.

 > > Which leads to me next question:
 > > Is ARCompact a variant of the ARC for which I did a port ages ago?
 > 
 > Unfortunately, the sourceware.org cvs history is a bit patchy - e.g. the
 > bfd cvs history only goes back to 1999 - so I'm not sure which part(s)
 > of the toolchain you ported, and to what ARC variant.

lp_start, lp_end, lp_count sound very familiar,
as does special casing of r62.

  reply	other threads:[~2007-02-14 18:30 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-13 15:37 Joern Rennecke
2007-02-13 18:51 ` Frank Ch. Eigler
2007-02-13 21:00   ` Joern Rennecke
2007-02-13 21:12     ` Frank Ch. Eigler
2007-02-13 22:21       ` Joern Rennecke
2007-02-14 17:09         ` Dave Brolley
2007-02-14 18:30           ` Joern Rennecke
2007-02-14 19:52             ` Dave Brolley
2007-02-14 20:15               ` Joern Rennecke
2007-02-16 20:54                 ` Dave Brolley
2007-02-19  3:39                   ` Joern Rennecke
     [not found]                     ` <45D9C06A.4030903@redhat.com>
2007-02-19 15:56                       ` Joern Rennecke
2007-02-19 16:07                         ` Frank Ch. Eigler
2007-02-19 18:14                           ` Joern Rennecke
2007-02-19 18:19                             ` Dave Brolley
2007-02-22 15:50                               ` Joern Rennecke
2007-02-22 16:08                               ` insert evaluation for multi-ifields broken Joern Rennecke
2007-02-22 16:56                                 ` Dave Brolley
2007-02-22 18:14                                   ` Joern Rennecke
2007-02-23 17:45                                     ` Dave Brolley
2007-02-15 16:54               ` delayed branches and zero overhead loops Joern Rennecke
2007-02-14 18:58       ` decode-bitsize (Was: Re: delayed branches and zero overhead loops) Joern Rennecke
2007-02-13 19:25 ` delayed branches and zero overhead loops Doug Evans
2007-02-13 20:38   ` Joern Rennecke
2007-02-14 18:30     ` Doug Evans [this message]
2007-02-14 19:22       ` 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=17875.21785.589853.195295@casey.transmeta.com \
    --to=dje@transmeta.com \
    --cc=cgen@sources.redhat.com \
    --cc=joernr@arc.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).