public inbox for cgen@sourceware.org
 help / color / mirror / Atom feed
From: Doug Evans <dje@transmeta.com>
To: Manuel Kessler <mlkessle@cip.physik.uni-wuerzburg.de>
Cc: cgen@sources.redhat.com
Subject: Re: make CGEN a less moving target?
Date: Wed, 11 Dec 2002 10:08:00 -0000	[thread overview]
Message-ID: <15863.32540.535836.871324@xris-athlon.transmeta.com> (raw)
In-Reply-To: <Pine.GHP.4.21.0212110939180.23713-100000@wpax16.physik.uni-wuerzburg.de>

Manuel Kessler writes:
 > Is "better" the correct term here? Or is x86 supposed to be working (at
 > least the partially implemented add instruction) at all, or to be seen as
 > how to do a CISC example?

You're basically in new territory with any CISC port.

 > As said before, I am not (yet) capable of interpreting this error
 > correctly, but it seems to me that non-contiguous ifields are currently
 > not really supported. Is this correct, or how can I achieve the desired
 > effect? 

Certainly some forms of non-contiguous fields are supported.
Examples would help us provide better answers.

 > I am not quite sure how to correctly set the different *-bitsize values in
 > define-isa. The architecture is 16 bits (little endian), but the smallest
 > instruction is 8 bits long. So 8 should be a reasonable value. However,
 > many instructions are 16 bits or longer. Therefore I have to spefify
 > several instruction fields (for example a second operand field) with bit
 > numbers above 8. Will CGEN detect such cases and behave properly? Well, I
 > tried and it does generate some code, but as I am not yet at the stage of
 > building a complete application as gas or objdump, I can't really tell
 > whether the result is correct.

CGEN will handle such cases properly.
[At least it has with other existing in-use ports with variable-sized
instruction sets.]

 > A more minor point: The architecture features some address registers,
 > which may be 16 or 24 bits wide, depending on the model, otherwise being
 > 16 bit. Therefore I tried to describe these in define-hardware as of mode
 > AI (address integer), as described in the manual, section 3.15 (Modes). 
 > However, this was rejected as "mode AI not supported". Is this just an
 > oversight, not supported or am I simply off track here? For now, I
 > replaced it with SI and mask the superfluous bits, but AI would be more
 > descriptive and accurate.

If you send me your .cpu file I can help with this part.
Clearly you want to get this resolved sooner rather than later.
The short answer is you have to treat the models with 16 bits
separately from the one with 24 bits.

 > Finally: The architecture allows additional indirect addressing by using a
 > special prefix byte, i.e. if you want to negate a register, you write
 > neg.w r0
 > but if you want to negate the memory value pointed to by the register
 > neg.w [r0]
 > the same opcode is used, prefixed by an additional byte marking the
 > indirect addressing of the following instruction. Clear? Is there any
 > chance to specify this addressing-fiddling with prefixes in CGEN?

For the time being what if you treat them as individual insns
(recognizing all the pitfalls) and see if you can make forward
progress on your port?  Ignore the error cases (e.g. illegal pairings)
for now.

Ultimately I think we need to extend cgen to handle them.
There's just too many in x86-land.  Handling them with the
current design is untenable.

      parent reply	other threads:[~2002-12-11 18:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-10  8:48 Johan Rydberg
2002-12-10  9:33 ` Doug Evans
2002-12-10 17:06   ` Johan Rydberg
2002-12-11  2:39   ` Manuel Kessler
2002-12-11  4:18     ` Frank Ch. Eigler
2002-12-11 13:36       ` Doug Evans
2002-12-11 13:42         ` Frank Ch. Eigler
2002-12-11 13:50           ` Doug Evans
2002-12-11 13:57             ` Frank Ch. Eigler
2002-12-11 14:25               ` Doug Evans
2002-12-11 10:08     ` Doug Evans [this message]

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=15863.32540.535836.871324@xris-athlon.transmeta.com \
    --to=dje@transmeta.com \
    --cc=cgen@sources.redhat.com \
    --cc=mlkessle@cip.physik.uni-wuerzburg.de \
    /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).